<?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>10903</bug_id>
          
          <creation_ts>2006-09-17 12:51:01 -0700</creation_ts>
          <short_desc>Yet Another Objective-C Bindings Patch</short_desc>
          <delta_ts>2006-09-18 14:35:31 -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>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>55757</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-17 12:51:01 -0700</bug_when>
    <thetext>Some of this, some of that.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55764</commentid>
    <comment_count>1</comment_count>
      <attachid>10608</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-17 14:12:09 -0700</bug_when>
    <thetext>Created attachment 10608
patch

- Whitespace cleanup for IDLParser.pm

- Add conditional #ifdefs (ie. #ifdef SVG_SUPPORT) to auto-generated implementation files.

- Split DOMException, DOMRangeException, DOMXPathException, DOMEventsException and DOMAbstractView into their own files.

- Remove private method [DOMRGBColor _color] from DOMPrivate.h asit is not used and a public method is available now.

- Remove internal method [DOMDocument _ownerElement] from DOMInternal.h as it not used.

- Auto-generate method isContentEditable for DOMNode.

- General cleanup of bindings code including removing unneeded #imports and whitespace cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55765</commentid>
    <comment_count>2</comment_count>
      <attachid>10608</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-09-17 14:45:27 -0700</bug_when>
    <thetext>Comment on attachment 10608
patch

+#import &lt;WebCore/DOMDOMImplementation.h&gt;

THis was in the original order because once in WebKit is will be:

#import &lt;WebCore/DOMImplementation.h&gt;

So the order in WeCore is wrong but it will be right once in WebKit.

DOMObject.h needs to include DOMException.h since you removed the enum from there.

isContentEditable should be for ObjC only. This naming schee is only common in ObjC (with the &quot;is&quot; prefix for boolean types.) Other languages should just be &quot;bool contentEditible&quot;. I am fine keeping isContentEditable as a hand implemented method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55777</commentid>
    <comment_count>3</comment_count>
      <attachid>10614</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-17 19:34:13 -0700</bug_when>
    <thetext>Created attachment 10614
patch with Tim&apos;s comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55778</commentid>
    <comment_count>4</comment_count>
      <attachid>10615</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-17 19:34:18 -0700</bug_when>
    <thetext>Created attachment 10615
patch with Tim&apos;s comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55782</commentid>
    <comment_count>5</comment_count>
      <attachid>10615</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-09-17 22:06:50 -0700</bug_when>
    <thetext>Comment on attachment 10615
patch with Tim&apos;s comments addressed

The #import &lt;WebCore/DOMDOMImplementation.h&gt; should not be moved.

DOMObject.h still needs to import DOMException.h since the exceptions are being removed from that header. We can&apos;t move them unless someone that includes DOMObject.h still gets the exception enums.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55783</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-09-17 22:07:03 -0700</bug_when>
    <thetext>r=me otherwise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55848</commentid>
    <comment_count>7</comment_count>
      <attachid>10633</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-18 12:58:04 -0700</bug_when>
    <thetext>Created attachment 10633
patch with all of Tim&apos;s comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55851</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-18 14:35:31 -0700</bug_when>
    <thetext>Landed in r16438.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10608</attachid>
            <date>2006-09-17 14:12:09 -0700</date>
            <delta_ts>2006-09-17 19:34:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>YAOCB.diff</filename>
            <type>text/plain</type>
            <size>108773</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjQwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMzIEBACisyMDA2LTA5LTE3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5MDMKKyAgICAgICAgWWV0IEFub3RoZXIgT2JqZWN0aXZlLUMgQmluZGluZ3MgUGF0Y2gKKwor
ICAgICAgICAtIFdoaXRlc3BhY2UgY2xlYW51cCBmb3IgSURMUGFyc2VyLnBtCisKKyAgICAgICAg
LSBBZGQgY29uZGl0aW9uYWwgI2lmZGVmcyAoaWUuICNpZmRlZiBTVkdfU1VQUE9SVCkgdG8gYXV0
by1nZW5lcmF0ZWQKKyAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKworICAgICAgICAt
IFNwbGl0IERPTUV4Y2VwdGlvbiwgRE9NUmFuZ2VFeGNlcHRpb24sIERPTVhQYXRoRXhjZXB0aW9u
LCBET01FdmVudHNFeGNlcHRpb24KKyAgICAgICAgICBhbmQgRE9NQWJzdHJhY3RWaWV3IGludG8g
dGhlaXIgb3duIGZpbGVzLgorCisgICAgICAgIC0gUmVtb3ZlIHByaXZhdGUgbWV0aG9kIFtET01S
R0JDb2xvciBfY29sb3JdIGZyb20gRE9NUHJpdmF0ZS5oIGFzCisgICAgICAgICAgaXQgaXMgbm90
IHVzZWQgYW5kIGEgcHVibGljIG1ldGhvZCBpcyBhdmFpbGFibGUgbm93LgorCisgICAgICAgIC0g
UmVtb3ZlIGludGVybmFsIG1ldGhvZCBbRE9NRG9jdW1lbnQgX293bmVyRWxlbWVudF0gZnJvbSBE
T01JbnRlcm5hbC5oCisgICAgICAgICAgYXMgaXQgbm90IHVzZWQuCisKKyAgICAgICAgLSBBdXRv
LWdlbmVyYXRlIG1ldGhvZCBpc0NvbnRlbnRFZGl0YWJsZSBmb3IgRE9NTm9kZS4KKworICAgICAg
ICAtIEdlbmVyYWwgY2xlYW51cCBvZiBiaW5kaW5ncyBjb2RlIGluY2x1ZGluZyByZW1vdmluZyB1
bm5lZWRlZCAjaW1wb3J0cworICAgICAgICAgIGFuZCB3aGl0ZXNwYWNlIGNsZWFudXAKKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKGFkZEVsZW1lbnRDbGFzcyk6CisgICAgICAgIChl
bGVtZW50Q2xhc3MpOgorICAgICAgICAoLVtET01Ob2RlIF9pbml0V2l0aE5vZGU6V2ViQ29yZTo6
XSk6CisgICAgICAgICgrW0RPTU5vZGUgX25vZGVXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAo
LVtET01Ob2RlIFdlYkNvcmU6Ol0pOgorICAgICAgICAoLVtET01Ob2RlIEtKUzo6QmluZGluZ3M6
Ol0pOgorICAgICAgICAoLVtET01Ob2RlIGFkZEV2ZW50TGlzdGVuZXI6OjpdKToKKyAgICAgICAg
KC1bRE9NTm9kZSByZW1vdmVFdmVudExpc3RlbmVyOjo6XSk6CisgICAgICAgICgtW0RPTU5vZGUg
ZGlzcGF0Y2hFdmVudDpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBpbWFnZV0pOgorICAgICAg
ICAoLVtET01FbGVtZW50IF9mb250XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2ltYWdlVElG
RlJlcHJlc2VudGF0aW9uXSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2dldFVSTEF0dHJpYnV0
ZTpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBfTlBPYmplY3RdKToKKyAgICAgICAgKC1bRE9N
RWxlbWVudCBpc0ZvY3VzZWRdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZGVhbGxvY10pOgorICAg
ICAgICAoLVtET01SYW5nZSBmaW5hbGl6ZV0pOgorICAgICAgICAoLVtET01SYW5nZSBkZXNjcmlw
dGlvbl0pOgorICAgICAgICAoLVtET01SYW5nZSBzdGFydENvbnRhaW5lcl0pOgorICAgICAgICAo
LVtET01SYW5nZSBzdGFydE9mZnNldF0pOgorICAgICAgICAoLVtET01SYW5nZSBlbmRDb250YWlu
ZXJdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZW5kT2Zmc2V0XSk6CisgICAgICAgICgtW0RPTVJh
bmdlIGNvbGxhcHNlZF0pOgorICAgICAgICAoLVtET01SYW5nZSBjb21tb25BbmNlc3RvckNvbnRh
aW5lcl0pOgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydDo6XSk6CisgICAgICAgICgtW0RP
TVJhbmdlIHNldEVuZDo6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHNldFN0YXJ0QmVmb3JlOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydEFmdGVyOl0pOgorICAgICAgICAoLVtET01S
YW5nZSBzZXRFbmRCZWZvcmU6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHNldEVuZEFmdGVyOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBjb2xsYXBzZTpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ug
c2VsZWN0Tm9kZTpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ugc2VsZWN0Tm9kZUNvbnRlbnRzOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBjb21wYXJlQm91bmRhcnlQb2ludHM6Ol0pOgorICAgICAg
ICAoLVtET01SYW5nZSBkZWxldGVDb250ZW50c10pOgorICAgICAgICAoLVtET01SYW5nZSBleHRy
YWN0Q29udGVudHNdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgY2xvbmVDb250ZW50c10pOgorICAg
ICAgICAoLVtET01SYW5nZSBpbnNlcnROb2RlOl0pOgorICAgICAgICAoLVtET01SYW5nZSBzdXJy
b3VuZENvbnRlbnRzOl0pOgorICAgICAgICAoLVtET01SYW5nZSBjbG9uZVJhbmdlXSk6CisgICAg
ICAgICgtW0RPTVJhbmdlIHRvU3RyaW5nXSk6CisgICAgICAgICgtW0RPTVJhbmdlIGRldGFjaF0p
OgorICAgICAgICAoLVtET01SYW5nZSBfaW5pdFdpdGhSYW5nZTpXZWJDb3JlOjpdKToKKyAgICAg
ICAgKCtbRE9NUmFuZ2UgX3JhbmdlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9NUmFu
Z2UgV2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgX2luaXRXaXRoTm9kZUZp
bHRlcjpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldp
dGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgV2ViQ29yZTo6XSk6Cisg
ICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtET01Ob2RlRmls
dGVyIGZpbmFsaXplXSk6CisgICAgICAgICgtW0RPTU5vZGVJdGVyYXRvciBfaW5pdFdpdGhOb2Rl
SXRlcmF0b3I6V2ViQ29yZTo6ZmlsdGVyOl0pOgorICAgICAgICAoLVtET01Ob2RlSXRlcmF0b3Ig
V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTU5vZGVJdGVyYXRvciBfbm9kZUl0ZXJhdG9yV2l0
aDpXZWJDb3JlOjpmaWx0ZXI6XSk6CisgICAgICAgICgtW0RPTVRyZWVXYWxrZXIgX2luaXRXaXRo
VHJlZVdhbGtlcjpXZWJDb3JlOjpmaWx0ZXI6XSk6CisgICAgICAgICgtW0RPTVRyZWVXYWxrZXIg
V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTVRyZWVXYWxrZXIgX3RyZWVXYWxrZXJXaXRoOldl
YkNvcmU6OmZpbHRlcjpdKToKKyAgICAgICAgKE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2Nl
cHROb2RlKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlTm9kZUl0ZXJhdG9yOjo6Ol0p
OgorICAgICAgICAoLVtET01Eb2N1bWVudCBjcmVhdGVUcmVlV2Fsa2VyOjo6Ol0pOgorICAgICAg
ICAoT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQpOgorICAgICAgICAoT2JqQ0V2ZW50TGlzdGVuZXI6
OmNyZWF0ZSk6CisgICAgICAgIChPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lmg6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9N
QWJzdHJhY3RWaWV3IGRvY3VtZW50XSk6CisgICAgICAgICgtW0RPTUFic3RyYWN0VmlldyBXZWJD
b3JlOjpdKToKKyAgICAgICAgKC1bRE9NQWJzdHJhY3RWaWV3IF9pbml0V2l0aEFic3RyYWN0Vmll
dzpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NQWJzdHJhY3RWaWV3IF9hYnN0cmFjdFZpZXdX
aXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTLm1tOgorICAg
ICAgICAoLVtET01TdHlsZVNoZWV0IF9pbml0V2l0aFN0eWxlU2hlZXQ6V2ViQ29yZTo6XSk6Cisg
ICAgICAgICgrW0RPTVN0eWxlU2hlZXQgX3N0eWxlU2hlZXRXaXRoOldlYkNvcmU6Ol0pOgorICAg
ICAgICAoK1tET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpXZWJDb3JlOjpdKToK
KyAgICAgICAgKC1bRE9NQ1NTUnVsZSBfaW5pdFdpdGhSdWxlOldlYkNvcmU6Ol0pOgorICAgICAg
ICAoK1tET01DU1NSdWxlIF9DU1NSdWxlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9N
Q1NTVmFsdWUgX2luaXRXaXRoVmFsdWU6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUNTU1Zh
bHVlIF9DU1NWYWx1ZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUNTU1ByaW1pdGl2
ZVZhbHVlIF9DU1NQcmltaXRpdmVWYWx1ZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RP
TURvY3VtZW50IGdldENvbXB1dGVkU3R5bGU6Ol0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBn
ZXRNYXRjaGVkQ1NTUnVsZXM6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ29yZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRFeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTUV2ZW50cy5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06Cisg
ICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBfY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJr
dXBTdHJpbmc6YmFzZVVSTFN0cmluZzpdKToKKyAgICAgICAgKHZpZXdGb3JFbGVtZW50KToKKyAg
ICAgICAgKC1bRE9NSFRNTElucHV0RWxlbWVudCBfcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOndp
dGhTdHJpbmc6c2VsZWN0aW5nRnJvbUluZGV4Ol0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRF
bGVtZW50IF9zZWxlY3RlZFJhbmdlXSk6CisgICAgICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQg
X3NldEF1dG9maWxsZWQ6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01Qcml2YXRlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2VFeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NVmlld3MubW06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01YUGF0
aC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NWFBhdGhFeGNlcHRpb24uaDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKiBkb20vTm9kZS5p
ZGw6CisKIDIwMDYtMDktMTcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBueXBvcC5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY0MDgpCisrKyBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDU2LDYgKzQ1Niwx
MCBAQAogCQk4NTE4RENFQTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTE4RENF
ODBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi87IH07CiAJCTg1
MThERDc4MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThERDc2MEE5Q0YzMUIwMDkxQjdB
NiAvKiBET01OYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9
OyB9OwogCQk4NTE4REQ3OTBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERENzcwQTlD
RjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5tbSAqLzsgfTsKKwkJODUxRUU4MEMwQUJD
QTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxRUU4MEEwQUJDQTI4RjAwQTZBQTMzIC8qIERPTUFi
c3RyYWN0Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg1MUVFODBEMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTFFRTgwQjBBQkNB
MjhGMDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3Lm1tICovOyB9OworCQk4NTFFRTgxMTBBQkNB
Mzk2MDBBNkFBMzMgLyogRE9NRXZlbnRFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MUVFODEwMEFCQ0EzOTYwMEE2QUEzMyAvKiBET01F
dmVudEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTg1MUVFODIxMEFCQ0E1ODEwMEE2QUEzMyAvKiBET01SYW5nZUV4Y2VwdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxRUU4MjAw
QUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODUyMTdFMDIwQTVFQ0Q0NzAwREI4RDAw
IC8qIFhTTEltcG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3Bw
ICovOyB9OwogCQk4NTIxN0UwMzBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyMTdFMDEwQTVF
Q0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLzsgfTsKIAkJODUyQjlFODcwQUE3OUM0
NzAwMkFEQTZFIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTJCOUU4MzBBQTc5QzQ3MDAyQURBNkUgLyogRE9N
SFRNTEFwcGxldEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNTAxLDYgKzUwNSw3IEBACiAJCTg1N0UwQjJDMEFCMDQzRkMwMDM2RTQ0
NyAvKiBET01Nb3VzZUV2ZW50UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODU3RTBCMkIwQUIwNDNGQzAwMzZFNDQ3IC8qIERPTU1vdXNlRXZl
bnRQcml2YXRlLmggKi87IH07CiAJCTg1N0UwQjMxMEFCMDQ0NzgwMDM2RTQ0NyAvKiBET01Nb3Vz
ZUV2ZW50LmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1N0UwQjIzMEFCMDQzNDYwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50LmggKi87IH07CiAJCTg1
N0UwQjMyMEFCMDQ0NzgwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50UHJpdmF0ZS5oIGluIENvcHlG
aWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTdFMEIyQjBBQjA0M0ZD
MDAzNkU0NDcgLyogRE9NTW91c2VFdmVudFByaXZhdGUuaCAqLzsgfTsKKwkJODU4MDE1Q0UwQUJD
QTc1RDAwODA1ODhEIC8qIERPTVhQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTgwMTVDRDBBQkNBNzVEMDA4MDU4OEQgLyogRE9N
WFBhdGhFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NThDMzgxQzBBQThFMjk2MDBCMTg3QTQgLyogRE9NQ1NTVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OEMzODFBMEFBOEUy
OTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5oICovOyB9OwogCQk4NThDMzgxRDBBQThFMjk2MDBC
MTg3QTQgLyogRE9NQ1NTVmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NThDMzgxQjBBQThFMjk2MDBCMTg3QTQgLyogRE9NQ1NTVmFsdWUubW0g
Ki87IH07CiAJCTg1OEMzODJDMEFBOEU0MDUwMEIxODdBNCAvKiBET01DU1NQcmltaXRpdmVWYWx1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU4QzM4
MkEwQUE4RTQwNTAwQjE4N0E0IC8qIERPTUNTU1ByaW1pdGl2ZVZhbHVlLmggKi87IH07CkBAIC01
ODksNiArNTk0LDcgQEAKIAkJODVCQTREMkUwQUE2ODg5RjAwODgwNTJEIC8qIERPTUhUTUxVTGlz
dEVsZW1lbnQuaCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODVCQTREMDkwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCAqLzsg
fTsKIAkJODVCQ0JDMTMwQUJCQTg3RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVCQ0JDMTEwQUJCQTg3
RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5oICovOyB9OwogCQk4NUJDQkMxNDBBQkJBODdE
MDAzODExNjAgLyogRE9NSFRNTERvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODVCQ0JDMTIwQUJCQTg3RDAwMzgxMTYwIC8qIERPTUhUTUxE
b2N1bWVudC5tbSAqLzsgfTsKKwkJODVDNzhBNjgwQUJERTFCNDAwNDRGQzE2IC8qIERPTUV4Y2Vw
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVD
NzhBNjcwQUJERTFCNDAwNDRGQzE2IC8qIERPTUV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg1QzdGM0U2MEFBRjVENUUwMDQwMTRE
RCAvKiBET01FdmVudC5oIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NUFGQTgyMDBBQUY1MjhBMDBFODQzMDUgLyogRE9NRXZlbnQuaCAqLzsgfTsKIAkJ
ODVDN0Y0NDcwQUFGNzZEQzAwNDAxNEREIC8qIERPTUV2ZW50VGFyZ2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM3RjQ0NTBBQUY3NkRDMDA0MDE0
REQgLyogRE9NRXZlbnRUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4NUM3RjQ5MTBBQUY3OURDMDA0MDE0REQgLyogRE9NVUlFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDN0Y0OEYw
QUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZlbnQuaCAqLzsgfTsKQEAgLTE5NzAsNyArMTk3Niw2
IEBACiAJCUJDMUEzN0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEzN0E4MDk3QzcxNUYw
MDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzFBMzdCRjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVXRpbGl0
eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEz
N0E5MDk3QzcxNUYwMDE5RjNEOCAvKiBET01VdGlsaXR5Lm1tICovOyB9OwogCQlCQzFBMzdDMDA5
N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEzN0FBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01WaWV3cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMUEz
N0MxMDk3QzcxNUYwMDE5RjNEOCAvKiBET01WaWV3cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEzN0FCMDk3QzcxNUYwMDE5RjNEOCAvKiBET01W
aWV3cy5tbSAqLzsgfTsKIAkJQkM2QjdCQUYwOTkzNjAzQzAwNTI4NjdCIC8qIEltYWdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkI3QkFFMDk5
MzYwM0MwMDUyODY3QiAvKiBJbWFnZS5jcHAgKi87IH07CiAJCUJDNkI3RUNGMDk5OEFDN0YwMDUy
ODY3QiAvKiBJbWFnZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM2QjdFQ0UwOTk4QUM3RjAwNTI4NjdCIC8qIEltYWdlU291cmNlLmggKi87
IH07CiAJCUJDNkQ2REQyMDlBRjkwNjYwMEY1OTc1OSAvKiBGb250LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkQ2REQwMDlBRjkwNjYwMEY1OTc1
OSAvKiBGb250LmNwcCAqLzsgfTsKQEAgLTIxNTIsMjMgKzIxNTcsNiBAQAogCQlGQUUwNDE5MDA5
NzU5NkM5MDAwNTQwQkUgLyogU1ZHSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTA0MThFMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJ
bWFnZUxvYWRlci5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKLS8q
IEJlZ2luIFBCWEJ1aWxkU3R5bGUgc2VjdGlvbiAqLwotCQlCQ0ZBRDQ1RjBBQkQzQUJBMDBCNzY2
M0QgLyogRGV2ZWxvcG1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhCdWlsZFN0eWxlOwotCQkJYnVp
bGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQl9OwotCQkJbmFt
ZSA9IERldmVsb3BtZW50OwotCQl9OwotCQlCQ0ZBRDQ2MDBBQkQzQUJBMDBCNzY2M0QgLyogRGVw
bG95bWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRpbmdz
ID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7Ci0JCQl9OwotCQkJbmFtZSA9IERlcGxv
eW1lbnQ7Ci0JCX07Ci0vKiBFbmQgUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCi0KIC8qIEJlZ2lu
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAJCUREMDQxRkYwMDlEOUUzMjUwMDEw
QUYyQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CkBAIC0yODM1LDYgKzI4MjMsMTAgQEAKIAkJODUxOERDRTgwQTlDQzgwRDAw
OTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTURPTUltcGxlbWVudGF0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NTE4REQ3NjBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2Rl
TWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01OYW1lZE5vZGVNYXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUxOERENzcwQTlDRjMxQjAwOTFCN0E2
IC8qIERPTU5hbWVkTm9kZU1hcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBET01OYW1lZE5vZGVNYXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg1MUVFODBBMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUFic3RyYWN0Vmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NTFFRTgwQjBBQkNBMjhGMDBBNkFBMzMgLyogRE9NQWJzdHJhY3RW
aWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUFic3Ry
YWN0Vmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUxRUU4MTAwQUJDQTM5
NjAwQTZBQTMzIC8qIERPTUV2ZW50RXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUV2ZW50RXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg1MUVFODIwMEFCQ0E1ODEwMEE2QUEzMyAvKiBET01SYW5nZUV4Y2VwdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NTIxN0UwMDBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1w
b3J0UnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNMSW1w
b3J0UnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MjE3RTAxMEE1RUNE
NDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBYU0xJbXBvcnRSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1
MkI5RTgzMEFBNzlDNDcwMDJBREE2RSAvKiBET01IVE1MQXBwbGV0RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTEFwcGxldEVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NzUsNiArMjg2Nyw3IEBACiAJCTg1N0UwQjIzMEFC
MDQzNDYwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01Nb3VzZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg1N0UwQjI0MEFCMDQzNDYwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU1vdXNlRXZlbnQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1N0UwQjJCMEFCMDQzRkMwMDM2RTQ0NyAvKiBET01Nb3Vz
ZUV2ZW50UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTW91
c2VFdmVudFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU4MDE1Q0Qw
QUJDQTc1RDAwODA1ODhEIC8qIERPTVhQYXRoRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTVhQYXRoRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1OEMzODFBMEFBOEUyOTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODU4QzM4MUIwQUE4RTI5NjAwQjE4N0E0IC8qIERPTUNTU1ZhbHVl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNTU1ZhbHVl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NThDMzgyQTBBQThFNDA1MDBCMTg3
QTQgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUNTU1ByaW1pdGl2ZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yOTYyLDYgKzI5NTUsNyBAQAogCQk4NUM1NkNBOTBBQTg5RTY2MDBEOTU3NTUgLyogQ1NT
SW1wb3J0UnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0ltcG9ydFJ1bGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUM1NkNBQzBBQTg5RjhFMDBEOTU3NTUg
LyogQ1NTQ2hhcnNldFJ1bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NDaGFyc2V0
UnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1QzU2Q0FEMEFBODlGRTAw
MEQ5NTc1NSAvKiBDU1NVbmtub3duUnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1Vua25vd25SdWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDNzhBNjcw
QUJERTFCNDAwNDRGQzE2IC8qIERPTUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01FeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODVDN0Y0NDUwQUFGNzZEQzAwNDAxNEREIC8qIERPTUV2ZW50VGFyZ2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01FdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NUM3RjQ4RjBBQUY3OURDMDA0MDE0REQgLyogRE9NVUlFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVUlFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NUM3RjQ5MDBBQUY3OURDMDA0MDE0REQgLyogRE9NVUlFdmVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01VSUV2ZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM3OSw3ICs0MzczLDYgQEAKIAkJ
QkMxQTM3QTgwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMUEzN0E5MDk3QzcxNUYwMDE5RjNEOCAvKiBET01VdGlsaXR5Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVV0aWxpdHkubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUEzN0FBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01W
aWV3cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVmlld3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxQTM3QUIwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TVZpZXdzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVZp
ZXdzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNCMzY0NzA1QzlENUUyMDBF
NDI5MDIgLyogQXRvbWljU3RyaW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdG9taWNTdHJpbmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCQzVFQzE3NjBBNTA3
RTNFMDA2MDA3RjUgLyogdmlldy1zb3VyY2UuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAi
dmlldy1zb3VyY2UuY3NzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2QjdCQUUw
OTkzNjAzQzAwNTI4NjdCIC8qIEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDE0
LDkgKzU0MDcsMjcgQEAKIAkJCW5hbWUgPSBTdHlsZVNoZWV0czsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CisJCTg1MUVFODA2MEFCQ0EyNTIwMEE2QUEzMyAvKiBWaWV3cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJODUxRUU4MEEwQUJD
QTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5oICovLAorCQkJCTg1MUVFODBCMEFCQ0Ey
OEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IFZp
ZXdzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJODUxRUU4MjMwQUJDQTU4
QTAwQTZBQTMzIC8qIFJhbmdlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk4NTFFRTgyMDBBQkNBNTgxMDBBNkFBMzMgLyogRE9NUmFuZ2VFeGNlcHRpb24u
aCAqLywKKwkJCSk7CisJCQluYW1lID0gUmFuZ2U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQk4NTRGMTJBQzBBOEVCQzE4MDAwOTQwQjUgLyogQ29yZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJODVDNzhBNjcwQUJERTFCNDAwNDRG
QzE2IC8qIERPTUV4Y2VwdGlvbi5oICovLAogCQkJCTg1NkM4QUUyMEE5MTI2NDkwMDVDNjg3QiAv
KiBET01PYmplY3QuaCAqLywKIAkJCQk4NTZDOEFFMzBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2Jq
ZWN0Lm1tICovLAogCQkJKTsKQEAgLTU0MzUsNiArNTQ0NiwxNCBAQAogCQkJbmFtZSA9IFRyYXZl
cnNhbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTg1ODAxNUNDMEFCQ0E3
NDEwMDgwNTg4RCAvKiBYUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJODU4MDE1Q0QwQUJDQTc1RDAwODA1ODhEIC8qIERPTVhQYXRoRXhjZXB0aW9u
LmggKi8sCisJCQkpOworCQkJbmFtZSA9IFhQYXRoOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJODU4QzM5NTEwQUE5MDI0QzAwQjE4N0E0IC8qIENTUyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC01NzIxLDYgKzU3NDAsNyBAQAogCQk4
NUM3RjQ0MzBBQUY3Njg2MDA0MDE0REQgLyogRXZlbnRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NTFFRTgxMDBBQkNBMzk2MDBBNkFBMzMgLyogRE9N
RXZlbnRFeGNlcHRpb24uaCAqLywKIAkJCQk4NUM3RjQ0NTBBQUY3NkRDMDA0MDE0REQgLyogRE9N
RXZlbnRUYXJnZXQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gRXZlbnRzOwpAQCAtNjcyNCw3ICs2
NzQ0LDEwIEBACiAJCQkJODU4QzM5NTEwQUE5MDI0QzAwQjE4N0E0IC8qIENTUyAqLywKIAkJCQk4
NUM3RjQ0MzBBQUY3Njg2MDA0MDE0REQgLyogRXZlbnRzICovLAogCQkJCTg1OTkyRkMyMEFBNURE
NDYwMEFDMDc4NSAvKiBIVE1MICovLAorCQkJCTg1MUVFODIzMEFCQ0E1OEEwMEE2QUEzMyAvKiBS
YW5nZSAqLywKIAkJCQk4NTlGQTVGMjBBQjBCRUUyMDA0RkFFRTkgLyogVHJhdmVyc2FsICovLAor
CQkJCTg1MUVFODA2MEFCQ0EyNTIwMEE2QUEzMyAvKiBWaWV3cyAqLywKKwkJCQk4NTgwMTVDQzBB
QkNBNzQxMDA4MDU4OEQgLyogWFBhdGggKi8sCiAJCQkJODU5QjdGQjkwQThEMjg4ODAwQTVGMUVB
IC8qIENvZGVHZW5lcmF0b3JPYmpDLnBtICovLAogCQkJCTFDRDBCNjIwMEFBQkRCNTAwMEQwQTNG
RiAvKiBQdWJsaWNET01JbnRlcmZhY2VzLmggKi8sCiAJCQkJQkMxQTM3OTcwOTdDNzE1RjAwMTlG
M0Q4IC8qIERPTS5oICovLApAQCAtNjc0Nyw3ICs2NzcwLDYgQEAKIAkJCQlCQzFBMzdBODA5N0M3
MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggKi8sCiAJCQkJQkMxQTM3QTkwOTdDNzE1RjAw
MTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi8sCiAJCQkJQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4
IC8qIERPTVZpZXdzLmggKi8sCi0JCQkJQkMxQTM3QUIwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZp
ZXdzLm1tICovLAogCQkJCTFBMUQxMzdFMEE1MzI1NTIwMDY0QkY1RiAvKiBET01YUGF0aC5oICov
LAogCQkJCTFBMUQxMzdGMEE1MzI1NTIwMDY0QkY1RiAvKiBET01YUGF0aC5tbSAqLywKIAkJCQkx
Q0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8sCkBAIC04NDA2
LDYgKzg0MjgsMTEgQEAKIAkJCQk4NTNCRjREQjBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUzQkY0RUIwQUJCNkU5NzAwODY0N0JCIC8qIERPTU5vZGVQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJDQkMxMzBBQkJBODdEMDAzODExNjAgLyog
RE9NSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTFFRTgwQzBBQkNBMjhGMDBB
NkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTFFRTgxMTBB
QkNBMzk2MDBBNkFBMzMgLyogRE9NRXZlbnRFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg1MUVFODIxMEFCQ0E1ODEwMEE2QUEzMyAvKiBET01SYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODU4MDE1Q0UwQUJDQTc1RDAwODA1ODhEIC8qIERPTVhQYXRoRXhjZXB0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUM3OEE2ODBBQkRFMUI0MDA0NEZDMTYgLyogRE9NRXhj
ZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg0NDAsMTIgKzg0NjcsNiBAQAogCQkwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQ
cm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhB
OUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUi
ICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJ
CQlCQ0ZBRDQ1RjBBQkQzQUJBMDBCNzY2M0QgLyogRGV2ZWxvcG1lbnQgKi8sCi0JCQkJQkNGQUQ0
NjAwQUJEM0FCQTAwQjc2NjNEIC8qIERlcGxveW1lbnQgKi8sCi0JCQkpOwogCQkJaGFzU2Nhbm5l
ZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAg
LTg3OTUsNyArODgxNiw2IEBACiAJCQkJQkMxQTM3QjcwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUhU
TUwubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdCQTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
SW50ZXJuYWwubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdCRjA5N0M3MTVGMDAxOUYzRDgg
LyogRE9NVXRpbGl0eS5tbSBpbiBTb3VyY2VzICovLAotCQkJCUJDMUEzN0MxMDk3QzcxNUYwMDE5
RjNEOCAvKiBET01WaWV3cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0NzhGMDk3Q0FBQzgw
MDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNFQTQ3OTgwOTdDQUFDODAwOTRDOUU0IC8qIGNzc2hlbHBlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VBNDc5QTA5N0NBQUM4MDA5NEM5RTQgLyogY3NzcGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTQ5Nyw2ICs5NTE3LDcgQEAKIAkJCQlCMjAxMTEwNzBBQjc3NDA1MDBE
QjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTNCRjREQzBB
QkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkNCQzE0
MEFCQkE4N0QwMDM4MTE2MCAvKiBET01IVE1MRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk4NTFFRTgwRDBBQkNBMjhGMDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlzaW9uIDE2NDA4KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQAog
I2ltcG9ydCAiY3NzaGVscGVyLmgiCiAKIC8vIEZyb20gb2xkIERPTUNvcmUuaAotI2ltcG9ydCAi
RE9NTm9kZS5oIgogI2ltcG9ydCAiRE9NT2JqZWN0LmgiCisjaW1wb3J0ICJET01FeGNlcHRpb24u
aCIKIAogLy8gR2VuZXJhdGVkIE9iamVjdGl2ZS1DIEJpbmRpbmdzCiAjaW1wb3J0ICJET01BdHRy
LmgiCkBAIC03OSw2ICs3OSw3IEBACiAjaW1wb3J0ICJET01FbnRpdHkuaCIKICNpbXBvcnQgIkRP
TUVudGl0eVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRE9NTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0
ICJET01Ob2RlLmgiCiAjaW1wb3J0ICJET01Ob2RlTGlzdC5oIgogI2ltcG9ydCAiRE9NTm90YXRp
b24uaCIKICNpbXBvcnQgIkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgpAQCAtODYsNyArODcs
NiBAQAogCiAvLyBGcm9tIG9sZCBET01IVE1MLmgKICNpbXBvcnQgIkRPTUhUTUxBcHBsZXRFbGVt
ZW50LmgiCi0jaW1wb3J0ICJET01IVE1MRG9jdW1lbnQuaCIKICNpbXBvcnQgIkRPTUhUTUxPcHRp
b25FbGVtZW50LmgiCiAKIC8vIEdlbmVyYXRlZCBPYmplY3RpdmUtQyBCaW5kaW5ncwpAQCAtMTAx
LDYgKzEwMSw3IEBACiAjaW1wb3J0ICJET01IVE1MRExpc3RFbGVtZW50LmgiCiAjaW1wb3J0ICJE
T01IVE1MRGlyZWN0b3J5RWxlbWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTERpdkVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTUhUTUxEb2N1bWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTEVsZW1lbnQuaCIK
ICNpbXBvcnQgIkRPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbXBvcnQgIkRPTUhUTUxGb250
RWxlbWVudC5oIgpAQCAtMTQ2LDUxICsxNDcsMjQgQEAKIAogI2ltcG9ydCA8b2JqYy9vYmpjLWNs
YXNzLmg+CiAKLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKLXVzaW5nIFdlYkNvcmU6OkF0
b21pY1N0cmluZ0ltcGw7Ci11c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6RG9j
dW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OwotdXNpbmcgV2ViQ29yZTo6
RE9NSW1wbGVtZW50YXRpb25Gcm9udDsKLXVzaW5nIFdlYkNvcmU6OkVsZW1lbnQ7Ci11c2luZyBX
ZWJDb3JlOjpFdmVudDsKLXVzaW5nIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXI7Ci11c2luZyBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlOwotdXNpbmcgV2ViQ29yZTo6SFRNTERvY3VtZW50OwotdXNpbmcg
V2ViQ29yZTo6SFRNTEVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpGcmFtZU1hYzsKLXVzaW5nIFdl
YkNvcmU6OktVUkw7Ci11c2luZyBXZWJDb3JlOjpOYW1lZE5vZGVNYXA7Ci11c2luZyBXZWJDb3Jl
OjpOb2RlOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVG
aWx0ZXJDb25kaXRpb247Ci11c2luZyBXZWJDb3JlOjpOb2RlSXRlcmF0b3I7Ci11c2luZyBXZWJD
b3JlOjpOb2RlTGlzdDsKLXVzaW5nIFdlYkNvcmU6OlF1YWxpZmllZE5hbWU7Ci11c2luZyBXZWJD
b3JlOjpSYW5nZTsKLXVzaW5nIFdlYkNvcmU6OlJlbmRlckltYWdlOwotdXNpbmcgV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OwotdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwotdXNpbmcgV2ViQ29yZTo6VHJl
ZVdhbGtlcjsKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKIAotY2xhc3Mg
T2JqQ0V2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitjbGFzcyBPYmpDRXZl
bnRMaXN0ZW5lciA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsK
LSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5l
cj4pOworICAgIHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciogZmluZChpZCA8RE9NRXZlbnRMaXN0
ZW5lcj4pOworICAgIHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciogY3JlYXRlKGlkIDxET01FdmVu
dExpc3RlbmVyPik7CiAKIHByaXZhdGU6CiAgICAgT2JqQ0V2ZW50TGlzdGVuZXIoaWQgPERPTUV2
ZW50TGlzdGVuZXI+KTsKICAgICB2aXJ0dWFsIH5PYmpDRXZlbnRMaXN0ZW5lcigpOwogCi0gICAg
dmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50ICosIGJvb2wgaXNXaW5kb3dFdmVudCk7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50KiwgYm9vbCBpc1dpbmRv
d0V2ZW50KTsKIAogICAgIGlkIDxET01FdmVudExpc3RlbmVyPiBtX2xpc3RlbmVyOwogfTsKIAog
dHlwZWRlZiBIYXNoTWFwPGlkLCBPYmpDRXZlbnRMaXN0ZW5lcio+IExpc3RlbmVyTWFwOwotdHlw
ZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDbGFzcz4gT2JqQ0NsYXNzTWFwOwordHlw
ZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkF0b21pY1N0cmluZ0ltcGwqLCBDbGFzcz4gT2JqQ0NsYXNz
TWFwOwogCiBzdGF0aWMgT2JqQ0NsYXNzTWFwKiBlbGVtZW50Q2xhc3NNYXA7CiBzdGF0aWMgTGlz
dGVuZXJNYXAqIGxpc3RlbmVyTWFwOwpAQCAtMTk5LDcgKzE3Myw3IEBAIHN0YXRpYyBMaXN0ZW5l
ck1hcCogbGlzdGVuZXJNYXA7CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ly8gRE9NTm9kZQogCi1zdGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnLCBDbGFzcyBvYmpDQ2xhc3MpCitzdGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3Mo
Y29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYgdGFnLCBDbGFzcyBvYmpDQ2xhc3MpCiB7CiAg
ICAgZWxlbWVudENsYXNzTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgb2JqQ0NsYXNz
KTsKIH0KQEAgLTI3NSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVIVE1MRWxlbWVudENs
YXNzTWFwKCkKICAgICAvLyBGSVhNRTogUmVmbGVjdCBtYXJxdWVlIG9uY2UgdGhlIEFQSSBoYXMg
YmVlbiBkZXRlcm1pbmVkLgogfQogCi1zdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0
b21pY1N0cmluZyYgdGFnTmFtZSkKK3N0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgV2Vi
Q29yZTo6QXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewogICAgIGlmICghZWxlbWVudENsYXNzTWFw
KQogICAgICAgICBjcmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCk7CkBAIC0zMDEsMTggKzI3NSwx
OCBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgcmV0dXJu
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwPiIsIFtbc2VsZiBjbGFz
c10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07CiB9CiAKLS0gKGlk
KV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCistIChpZClfaW5pdFdpdGhOb2RlOihXZWJDb3Jl
OjpOb2RlICopaW1wbAogewogICAgIEFTU0VSVChpbXBsKTsKIAogICAgIFtzdXBlciBfaW5pdF07
Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Cisg
ICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBp
bXBsLT5yZWYoKTsKICAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwogICAgIHJldHVybiBz
ZWxmOwogfQogCi0rIChET01Ob2RlICopX25vZGVXaXRoOihOb2RlICopaW1wbAorKyAoRE9NTm9k
ZSAqKV9ub2RlV2l0aDooV2ViQ29yZTo6Tm9kZSAqKWltcGwKIHsKICAgICBpZiAoIWltcGwpCiAg
ICAgICAgIHJldHVybiBuaWw7CkBAIC0zMjQsNDkgKzI5OCw0OSBAQCBzdGF0aWMgQ2xhc3MgZWxl
bWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgCiAgICAgQ2xhc3Mgd3JhcHBlckNsYXNzID0g
bmlsOwogICAgIHN3aXRjaCAoaW1wbC0+bm9kZVR5cGUoKSkgewotICAgICAgICBjYXNlIE5vZGU6
OkVMRU1FTlRfTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpFTEVNRU5UX05PREU6
CiAgICAgICAgICAgICBpZiAoaW1wbC0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IGVsZW1lbnRDbGFzcyhzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGlt
cGwpLT5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gZWxlbWVu
dENsYXNzKHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Kj4oaW1wbCktPmxvY2FsTmFt
ZSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBb
RE9NRWxlbWVudCBjbGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2Rl
OjpBVFRSSUJVVEVfTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpBVFRSSUJVVEVf
Tk9ERToKICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01BdHRyIGNsYXNzXTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpOb2RlOjpURVhUX05PREU6CiAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBb
RE9NVGV4dCBjbGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpD
REFUQV9TRUNUSU9OX05PREU6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6Tm9kZTo6Q0RBVEFfU0VD
VElPTl9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUNEQVRBU2VjdGlvbiBj
bGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVG
RVJFTkNFX05PREU6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6Tm9kZTo6RU5USVRZX1JFRkVSRU5D
RV9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUVudGl0eVJlZmVyZW5jZSBj
bGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9E
RToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IFtET01FbnRpdHkgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgorICAgICAgICBj
YXNlIFdlYkNvcmU6Ok5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAgICAgICAg
ICAgIHdyYXBwZXJDbGFzcyA9IFtET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gY2xhc3NdOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgorICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkNPTU1FTlRfTk9ERToKICAgICAgICAgICAgIHdyYXBwZXJD
bGFzcyA9IFtET01Db21tZW50IGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpO
b2RlOjpET0NVTUVOVF9OT0RFOgorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRvY3VtZW50Kj4oaW1wbCktPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTUhUTUxEb2N1bWVudCBjbGFzc107CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50IGNsYXNzXTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAg
ICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnRUeXBlIGNsYXNzXTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAg
IGNhc2UgV2ViQ29yZTo6Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudEZyYWdtZW50IGNsYXNzXTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CisgICAgICAgIGNhc2Ug
V2ViQ29yZTo6Tm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9
IFtET01Ob3RhdGlvbiBjbGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
b2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpY
UEFUSF9OQU1FU1BBQ0VfTk9ERToKICAgICAgICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYW4gWFBh
dGggb2JqZWN0aXZlIEMgd3JhcHBlcgogICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1NQogICAgICAgICAgICAgcmV0dXJu
IG5pbDsKQEAgLTM3NCwxNSArMzQ4LDE1IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29u
c3QgQXRvbWljU3QKICAgICByZXR1cm4gW1tbd3JhcHBlckNsYXNzIGFsbG9jXSBfaW5pdFdpdGhO
b2RlOmltcGxdIGF1dG9yZWxlYXNlXTsKIH0KIAotLSAoTm9kZSAqKV9ub2RlCistIChXZWJDb3Jl
OjpOb2RlICopX25vZGUKIHsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwp
OworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKTsKIH0KIAog
LSAoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqKV9leGVjdXRpb25Db250ZXh0CiB7
Ci0gICAgaWYgKE5vZGUgKm4gPSBbc2VsZiBfbm9kZV0pIHsKLSAgICAgICAgaWYgKEZyYW1lTWFj
ICpmID0gTWFjKG4tPmRvY3VtZW50KCktPmZyYW1lKCkpKQorICAgIGlmIChXZWJDb3JlOjpOb2Rl
ICpuID0gW3NlbGYgX25vZGVdKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpGcmFtZU1hYyAqZiA9
IE1hYyhuLT5kb2N1bWVudCgpLT5mcmFtZSgpKSkKICAgICAgICAgICAgIHJldHVybiBmLT5leGVj
dXRpb25Db250ZXh0Rm9yRE9NKCk7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMzkwLDE3ICsz
NjQsOSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQK
IAotQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYlByaXZhdGUpCi0KLS0gKEJPT0wpaXNDb250
ZW50RWRpdGFibGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01Ob2RlRXh0ZW5z
aW9ucykKIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbgogLSAoTlNSZWN0KWJvdW5kaW5nQm94CiB7CiAgICAgV2ViQ29yZTo6UmVuZGVy
T2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKQEAgLTQwOSw2ICsz
NzUsNyBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgcmV0
dXJuIE5TWmVyb1JlY3Q7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgaW1wbGVtZW50YXRpb24KIC0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMKIHsKICAg
ICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJl
cigpOwpAQCAtNDM0LDcgKzQwMSw3IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3Qg
QXRvbWljU3QKICAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKICAg
ICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKICAgICAKLSAg
ICBFdmVudExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0
ZW5lcik7CisgICAgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciAqd3JhcHBlciA9IE9iakNFdmVudExp
c3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwogICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYg
X25vZGVdKS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVyLCB1c2VDYXB0dXJlKTsKICAg
ICB3cmFwcGVyLT5kZXJlZigpOwogfQpAQCAtNDQ0LDcgKzQxMSw3IEBAIHN0YXRpYyBDbGFzcyBl
bGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVu
dFRhcmdldE5vZGUoKSkKICAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JU
RURfRVJSKTsKIAotICAgIGlmIChFdmVudExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlz
dGVuZXI6OmZpbmQobGlzdGVuZXIpKQorICAgIGlmIChXZWJDb3JlOjpFdmVudExpc3RlbmVyICp3
cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQobGlzdGVuZXIpKQogICAgICAgICBFdmVu
dFRhcmdldE5vZGVDYXN0KFtzZWxmIF9ub2RlXSktPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwg
d3JhcHBlciwgdXNlQ2FwdHVyZSk7CiB9CiAKQEAgLTQ1Myw3ICs0MjAsNyBAQCBzdGF0aWMgQ2xh
c3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlz
RXZlbnRUYXJnZXROb2RlKCkpCiAgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQ
UE9SVEVEX0VSUik7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNh
c3QoW3NlbGYgX25vZGVdKS0+ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwogICAg
IHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ2MSwzMSArNDI4
LDE4IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAog
Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbEV4dGVuc2lvbikK
LQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1l
bnQgX2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1bWVudF0tPm93bmVyRWxlbWVudCgpXTsKLX0KLQot
QGVuZAotCi0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01FbGVt
ZW50CiAKIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NRWxl
bWVudC5tbQogQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRBcHBLaXRFeHRl
bnNpb25zKQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGlt
cGxlbWVudGF0aW9uCiAtIChOU0ltYWdlKilpbWFnZQogewotICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0tPnJlbmRlcmVyKCk7CisgICAgV2ViQ29yZTo6UmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKICAgICBpZiAo
cmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSog
aW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7CisgICAgICAgIFdlYkNv
cmU6OlJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJJbWFnZSo+
KHJlbmRlcmVyKTsKICAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1nLT5jYWNo
ZWRJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBpbWctPmNhY2hl
ZEltYWdlKCktPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKICAgICB9CkBAIC00OTYsNDUgKzQ1MCw0
OSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBpbXBsZW1l
bnRhdGlvbiBET01FbGVtZW50IChXZWJQcml2YXRlKQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQg
YmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtIChOU0ZvbnQgKilfZm9udAog
ewotICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0tPnJlbmRlcmVy
KCk7CisgICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50
XS0+cmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAgIHJldHVybiByZW5kZXJl
ci0+c3R5bGUoKS0+Zm9udCgpLnByaW1hcnlGb250KCktPmdldE5TRm9udCgpOwogICAgIHJldHVy
biBuaWw7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUg
aW1wbGVtZW50YXRpb24KIC0gKE5TRGF0YSopX2ltYWdlVElGRlJlcHJlc2VudGF0aW9uCiB7Ci0g
ICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsK
KyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5y
ZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0g
ICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRl
cmVyKTsKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVySW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlJlbmRlckltYWdlKj4ocmVuZGVyZXIpOwogICAgICAgICBpZiAoaW1nLT5jYWNoZWRJ
bWFnZSgpICYmICFpbWctPmNhY2hlZEltYWdlKCktPmlzRXJyb3JJbWFnZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIChOU0RhdGEqKShpbWctPmNhY2hlZEltYWdlKCktPmltYWdlKCktPmdldFRJRkZS
ZXByZXNlbnRhdGlvbigpKTsKICAgICB9CiAgICAgcmV0dXJuIG5pbDsKIH0KIAorLy8gRklYTUU6
IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbgogLSAoTlNV
UkwgKilfZ2V0VVJMQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKIHsKICAgICBBU1NFUlQobmFt
ZSk7Ci0gICAgRWxlbWVudCAqZSA9IFtzZWxmIF9lbGVtZW50XTsKLSAgICBBU1NFUlQoZSk7Ci0g
ICAgcmV0dXJuIEtVUkwoZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwocGFyc2VVUkwoZS0+Z2V0
QXR0cmlidXRlKG5hbWUpKS5kZXByZWNhdGVkU3RyaW5nKCkpKS5nZXROU1VSTCgpOworICAgIFdl
YkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBbc2VsZiBfZWxlbWVudF07CisgICAgQVNTRVJUKGVs
ZW1lbnQpOworICAgIHJldHVybiBXZWJDb3JlOjpLVVJMKGVsZW1lbnQtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKHBhcnNlVVJMKGVsZW1lbnQtPmdldEF0dHJpYnV0ZShuYW1lKSkuZGVwcmVjYXRl
ZFN0cmluZygpKSkuZ2V0TlNVUkwoKTsKIH0KIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGlt
cGxlbWVudGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbgogLSAodm9pZCAqKV9OUE9iamVjdAogewot
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBbc2VsZiBfZWxlbWVudF07CisgICAgV2ViQ29yZTo6RWxl
bWVudCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKICAgICBpZiAoZWxlbWVudC0+aGFzVGFn
TmFtZShhcHBsZXRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IGVsZW1l
bnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kj4oZWxlbWVudCktPmdldE5QT2JqZWN0KCk7Ci0gICAg
ZWxzZQotICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMDsKIH0KIAorLy8gRklYTUU6IHRo
aXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbgogLSAoQk9PTClp
c0ZvY3VzZWQKIHsKLSAgICBFbGVtZW50KiBpbXBsID0gW3NlbGYgX2VsZW1lbnRdOworICAgIFdl
YkNvcmU6OkVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07CiAgICAgaWYgKGltcGwtPmRv
Y3VtZW50KCktPmZvY3VzTm9kZSgpID09IGltcGwpCiAgICAgICAgIHJldHVybiBZRVM7CiAgICAg
cmV0dXJuIE5POwpAQCAtNTUwLDE3ICs1MDgsMTUgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFz
cyhjb25zdCBBdG9taWNTdAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoX2ludGVybmFs
KSB7Ci0gICAgICAgIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAg
fQorICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6OlJhbmdlKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQp
ZmluYWxpemUKIHsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFJhbmdl
ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQorICAgIGlmIChfaW50ZXJuYWwpCisgICAg
ICAgIERPTV9jYXN0PFdlYkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKICAgICBb
c3VwZXIgZmluYWxpemVdOwogfQogCkBAIC01NjksMTMgKzUyNSwxMiBAQCBzdGF0aWMgQ2xhc3Mg
ZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgaWYgKCFfaW50ZXJuYWwpCiAgICAgICAg
IHJldHVybiBAIjxET01SYW5nZTogbnVsbD4iOwogICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjxET01SYW5nZTogJUAgJWQgJUAgJWQ+IiwKLSAgICAgICAgW3NlbGYgc3Rh
cnRDb250YWluZXJdLCBbc2VsZiBzdGFydE9mZnNldF0sCi0gICAgICAgIFtzZWxmIGVuZENvbnRh
aW5lcl0sIFtzZWxmIGVuZE9mZnNldF1dOworICAgICAgICAgICAgICAgW3NlbGYgc3RhcnRDb250
YWluZXJdLCBbc2VsZiBzdGFydE9mZnNldF0sIFtzZWxmIGVuZENvbnRhaW5lcl0sIFtzZWxmIGVu
ZE9mZnNldF1dOwogfQogCiAtIChET01Ob2RlICopc3RhcnRDb250YWluZXIKIHsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+c3Rh
cnRDb250YWluZXIoZWMpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC01ODMsNyArNTM4LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25z
dCBBdG9taWNTdAogCiAtIChpbnQpc3RhcnRPZmZzZXQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgcmVzdWx0
ID0gW3NlbGYgX3JhbmdlXS0+c3RhcnRPZmZzZXQoZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU5MSw3ICs1NDYsNyBAQCBzdGF0aWMgQ2xhc3Mg
ZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIC0gKERPTU5vZGUgKillbmRDb250YWluZXIK
IHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X3JhbmdlXS0+ZW5kQ29udGFpbmVyKGVjKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNTk5LDcgKzU1NCw3IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50
Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoaW50KWVuZE9mZnNldAogewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlu
dCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5lbmRPZmZzZXQoZWMpOwogICAgIHJhaXNlT25ET01F
cnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYwNyw3ICs1NjIsNyBAQCBzdGF0aWMg
Q2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIC0gKEJPT0wpY29sbGFwc2VkCiB7
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgQk9PTCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5jb2xsYXBzZWQoZWMpOwog
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxNSw3ICs1
NzAsNyBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIC0gKERP
TU5vZGUgKiljb21tb25BbmNlc3RvckNvbnRhaW5lcgogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERPTU5vZGUgKnJl
c3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5jb21tb25BbmNlc3RvckNv
bnRhaW5lcihlYyldOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTYyMyw4NSArNTc4LDg1IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3Qg
QXRvbWljU3QKIAogLSAodm9pZClzZXRTdGFydDooRE9NTm9kZSAqKXJlZk5vZGUgOihpbnQpb2Zm
c2V0CiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3JhbmdlXS0+c2V0U3RhcnQoW3JlZk5vZGUgX25vZGVd
LCBvZmZzZXQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNl
dEVuZDooRE9NTm9kZSAqKXJlZk5vZGUgOihpbnQpb2Zmc2V0CiB7Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYg
X3JhbmdlXS0+c2V0RW5kKFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7CiAgICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKIH0KIAogLSAodm9pZClzZXRTdGFydEJlZm9yZTooRE9NTm9kZSAqKXJl
Zk5vZGUKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFydEJlZm9yZShbcmVmTm9k
ZSBfbm9kZV0sIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNl
dFN0YXJ0QWZ0ZXI6KERPTU5vZGUgKilyZWZOb2RlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3Jhbmdl
XS0+c2V0U3RhcnRBZnRlcihbcmVmTm9kZSBfbm9kZV0sIGVjKTsKICAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwogfQogCiAtICh2b2lkKXNldEVuZEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGUKIHsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmRCZWZvcmUoW3JlZk5vZGUgX25vZGVdLCBl
Yyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAodm9pZClzZXRFbmRBZnRlcjoo
RE9NTm9kZSAqKXJlZk5vZGUKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmRBZnRl
cihbcmVmTm9kZSBfbm9kZV0sIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAt
ICh2b2lkKWNvbGxhcHNlOihCT09MKXRvU3RhcnQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2Vd
LT5jb2xsYXBzZSh0b1N0YXJ0LCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAog
LSAodm9pZClzZWxlY3ROb2RlOihET01Ob2RlICopcmVmTm9kZQogewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFtzZWxm
IF9yYW5nZV0tPnNlbGVjdE5vZGUoW3JlZk5vZGUgX25vZGVdLCBlYyk7CiAgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKIH0KIAogLSAodm9pZClzZWxlY3ROb2RlQ29udGVudHM6KERPTU5vZGUgKily
ZWZOb2RlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3JhbmdlXS0+c2VsZWN0Tm9kZUNvbnRlbnRzKFty
ZWZOb2RlIF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHNo
b3J0KWNvbXBhcmVCb3VuZGFyeVBvaW50czoodW5zaWduZWQgc2hvcnQpaG93IDooRE9NUmFuZ2Ug
Kilzb3VyY2VSYW5nZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNob3J0IHJl
c3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzdGF0aWNfY2FzdDxS
YW5nZTo6Q29tcGFyZUhvdz4oaG93KSwgW3NvdXJjZVJhbmdlIF9yYW5nZV0sIGVjKTsKKyAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBzaG9ydCByZXN1bHQgPSBbc2VsZiBf
cmFuZ2VdLT5jb21wYXJlQm91bmRhcnlQb2ludHMoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmFuZ2U6
OkNvbXBhcmVIb3c+KGhvdyksIFtzb3VyY2VSYW5nZSBfcmFuZ2VdLCBlYyk7CiAgICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAtICh2b2lkKWRlbGV0ZUNv
bnRlbnRzCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3JhbmdlXS0+ZGVsZXRlQ29udGVudHMoZWMpOwog
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKill
eHRyYWN0Q29udGVudHMKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpyZXN1bHQg
PSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6W3NlbGYgX3Jhbmdl
XS0+ZXh0cmFjdENvbnRlbnRzKGVjKS5nZXQoKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzA5LDcgKzY2NCw3IEBAIHN0YXRpYyBDbGFzcyBlbGVt
ZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNsb25l
Q29udGVudHMKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpyZXN1bHQgPSBbRE9N
RG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6W3NlbGYgX3JhbmdlXS0+Y2xv
bmVDb250ZW50cyhlYykuZ2V0KCldOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTcxNywyMSArNjcyLDIxIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3QKIAogLSAodm9pZClpbnNlcnROb2RlOihET01Ob2RlICopbmV3Tm9k
ZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPmluc2VydE5vZGUoW25ld05vZGUgX25vZGVd
LCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAodm9pZClzdXJyb3VuZENv
bnRlbnRzOihET01Ob2RlICopbmV3UGFyZW50CiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3JhbmdlXS0+
c3Vycm91bmRDb250ZW50cyhbbmV3UGFyZW50IF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01F
cnJvcihlYyk7CiB9CiAKIC0gKERPTVJhbmdlICopY2xvbmVSYW5nZQogewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERP
TVJhbmdlICpyZXN1bHQgPSBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9u
ZVJhbmdlKGVjKS5nZXQoKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNzM5LDcgKzY5NCw3IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29u
c3QgQXRvbWljU3QKIAogLSAoTlNTdHJpbmcgKil0b1N0cmluZwogewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIE5TU3Ry
aW5nICpyZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT50b1N0cmluZyhlYyk7CiAgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzUyLDcgKzcwNyw3IEBAIHN0YXRp
YyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAodm9pZClkZXRhY2gKIHsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5kZXRhY2goZWMpOwogICAgIHJhaXNlT25ET01FcnJv
cihlYyk7CiB9CkBAIC03NjEsMTggKzcxNiwxOCBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNz
KGNvbnN0IEF0b21pY1N0CiAKIEBpbXBsZW1lbnRhdGlvbiBET01SYW5nZSAoV2ViQ29yZUludGVy
bmFsKQogCi0tIChpZClfaW5pdFdpdGhSYW5nZTooUmFuZ2UgKilpbXBsCistIChpZClfaW5pdFdp
dGhSYW5nZTooV2ViQ29yZTo6UmFuZ2UgKilpbXBsCiB7CiAgICAgQVNTRVJUKGltcGwpOwogCiAg
ICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRl
cm5hbCAqPihpbXBsKTsKKyAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5h
bCo+KGltcGwpOwogICAgIGltcGwtPnJlZigpOwogICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1w
bCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKERPTVJhbmdlICopX3JhbmdlV2l0aDooUmFu
Z2UgKilpbXBsCisrIChET01SYW5nZSAqKV9yYW5nZVdpdGg6KFdlYkNvcmU6OlJhbmdlICopaW1w
bAogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTc4NSw5ICs3NDAs
OSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFJhbmdlOmltcGxdIGF1dG9yZWxlYXNlXTsKIH0KIAot
LSAoUmFuZ2UgKilfcmFuZ2UKKy0gKFdlYkNvcmU6OlJhbmdlICopX3JhbmdlCiB7Ci0gICAgcmV0
dXJuIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCk7CisgICAgcmV0dXJuIERPTV9jYXN0PFdl
YkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKTsKIH0KIAogQGVuZApAQCAtODA3LDE4ICs3NjIsMTgg
QEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAaW1wbGVtZW50
YXRpb24gRE9NTm9kZUZpbHRlcgogCi0tIChpZClfaW5pdFdpdGhOb2RlRmlsdGVyOihOb2RlRmls
dGVyICopaW1wbAorLSAoaWQpX2luaXRXaXRoTm9kZUZpbHRlcjooV2ViQ29yZTo6Tm9kZUZpbHRl
ciAqKWltcGwKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAKICAgICBbc3VwZXIgX2luaXRdOwotICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIF9p
bnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+
cmVmKCk7CiAgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotKyAoRE9NTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyV2l0aDooTm9kZUZpbHRlciAqKWlt
cGwKKysgKERPTU5vZGVGaWx0ZXIgKilfbm9kZUZpbHRlcldpdGg6KFdlYkNvcmU6Ok5vZGVGaWx0
ZXIgKilpbXBsCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtODMx
LDIyICs3ODYsMjIgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAog
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlRmlsdGVyOmltcGxdIGF1dG9y
ZWxlYXNlXTsKIH0KIAotLSAoTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyCistIChXZWJDb3JlOjpO
b2RlRmlsdGVyICopX25vZGVGaWx0ZXIKIHsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUZpbHRl
ciAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpOb2RlRmlsdGVy
Kj4oX2ludGVybmFsKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgaWYgKF9pbnRlcm5h
bCkKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUZpbHRlciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwor
ICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpOb2RlRmlsdGVyKj4oX2ludGVybmFsKS0+ZGVyZWYo
KTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKICAgICBp
ZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7CisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGVGaWx0ZXIqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKQEAgLTg2MywyNCArODE4
LDI0IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGltcGxl
bWVudGF0aW9uIERPTU5vZGVJdGVyYXRvcihXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKGlkKV9pbml0
V2l0aE5vZGVJdGVyYXRvcjooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2Rl
RmlsdGVyPilmaWx0ZXIKKy0gKGlkKV9pbml0V2l0aE5vZGVJdGVyYXRvcjooV2ViQ29yZTo6Tm9k
ZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKIHsKICAg
ICBBU1NFUlQoaW1wbCk7CiAKICAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERP
TV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIF9pbnRlcm5hbCA9IERPTV9j
YXN0PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7CiAgICAgYWRk
RE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKICAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoTm9kZUl0ZXJhdG9yICopX25vZGVJdGVyYXRvcgor
LSAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yICopX25vZGVJdGVyYXRvcgogewotICAgIHJldHVybiBE
T01fY2FzdDxOb2RlSXRlcmF0b3IgKj4oX2ludGVybmFsKTsKKyAgICByZXR1cm4gRE9NX2Nhc3Q8
V2ViQ29yZTo6Tm9kZUl0ZXJhdG9yKj4oX2ludGVybmFsKTsKIH0KIAotKyAoRE9NTm9kZUl0ZXJh
dG9yICopX25vZGVJdGVyYXRvcldpdGg6KE5vZGVJdGVyYXRvciAqKWltcGwgZmlsdGVyOihpZCA8
RE9NTm9kZUZpbHRlcj4pZmlsdGVyCisrIChET01Ob2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJhdG9y
V2l0aDooV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmls
dGVyPilmaWx0ZXIKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05
MDEsMjQgKzg1NiwyNCBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0
CiAKIEBpbXBsZW1lbnRhdGlvbiBET01UcmVlV2Fsa2VyIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0g
KGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERP
TU5vZGVGaWx0ZXI+KWZpbHRlcgorLSAoaWQpX2luaXRXaXRoVHJlZVdhbGtlcjooV2ViQ29yZTo6
VHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCiB7CiAg
ICAgQVNTRVJUKGltcGwpOwogCiAgICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBE
T01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKKyAgICBfaW50ZXJuYWwgPSBET01f
Y2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwogICAgIGltcGwtPnJlZigpOwogICAgIGFk
ZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7CiAgICAgbV9maWx0ZXIgPSBbZmlsdGVyIHJldGFpbl07
CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKFRyZWVXYWxrZXIgKilfdHJlZVdhbGtlcgorLSAo
V2ViQ29yZTo6VHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCiB7Ci0gICAgcmV0dXJuIERPTV9jYXN0
PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKTsKKyAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29yZTo6
VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpOwogfQogCi0rIChET01UcmVlV2Fsa2VyICopX3RyZWVX
YWxrZXJXaXRoOihUcmVlV2Fsa2VyICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilm
aWx0ZXIKKysgKERPTVRyZWVXYWxrZXIgKilfdHJlZVdhbGtlcldpdGg6KFdlYkNvcmU6OlRyZWVX
YWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgogewogICAgIGlm
ICghaW1wbCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTkzNywxNiArODkyLDE1IEBAIHN0YXRp
YyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAvLyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbgogCi1jbGFzcyBPYmpD
Tm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBOb2RlRmlsdGVyQ29uZGl0aW9uCi17CitjbGFz
cyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpOb2RlRmlsdGVyQ29u
ZGl0aW9uIHsKIHB1YmxpYzoKICAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9k
ZUZpbHRlcj4pOwogICAgIHZpcnR1YWwgfk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCk7Ci0gICAg
dmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHNob3J0
IGFjY2VwdE5vZGUoV2ViQ29yZTo6Tm9kZSopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIE9iakNO
b2RlRmlsdGVyQ29uZGl0aW9uKGNvbnN0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICYpOwotICAg
IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICZvcGVyYXRvcj0oY29uc3QgT2JqQ05vZGVGaWx0ZXJD
b25kaXRpb24gJik7CisgICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oY29uc3QgT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24mKTsKKyAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmb3BlcmF0b3I9
KGNvbnN0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uJik7CiAKICAgICBpZCA8RE9NTm9kZUZpbHRl
cj4gbV9maWx0ZXI7CiB9OwpAQCAtOTYzLDEwICs5MTcsMTAgQEAgT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb246On5PYmpDTm9kZUZpbHRlcgogICAgIENGUmVsZWFzZShtX2ZpbHRlcik7CiB9CiAKLXNo
b3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKE5vZGUqIG5vZGUpIGNvbnN0
CitzaG9ydCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShXZWJDb3JlOjpOb2Rl
KiBub2RlKSBjb25zdAogewogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIE5vZGVGaWx0
ZXI6OkZJTFRFUl9SRUpFQ1Q7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpOb2RlRmlsdGVyOjpG
SUxURVJfUkVKRUNUOwogICAgIHJldHVybiBbbV9maWx0ZXIgYWNjZXB0Tm9kZTpbRE9NTm9kZSBf
bm9kZVdpdGg6bm9kZV1dOwogfQogCkBAIC05NzksMjIgKzkzMywyMiBAQCBzaG9ydCBPYmpDTm9k
ZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kCiAKIC0gKERPTU5vZGVJdGVyYXRvciAqKWNyZWF0
ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQg
PERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwogewot
ICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBjcHBGaWx0ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5v
ZGVGaWx0ZXI+IGNwcEZpbHRlcjsKICAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIg
PSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5vZGVJdGVyYXRvcj4gaW1wbCA9
IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZU5vZGVJdGVyYXRvcihbcm9vdCBfbm9kZV0sIHdoYXRU
b1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOworICAgICAgICBj
cHBGaWx0ZXIgPSBuZXcgV2ViQ29yZTo6Tm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24oZmlsdGVyKSk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
UmVmUHRyPFdlYkNvcmU6Ok5vZGVJdGVyYXRvcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNy
ZWF0ZU5vZGVJdGVyYXRvcihbcm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhw
YW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAg
cmV0dXJuIFtET01Ob2RlSXRlcmF0b3IgX25vZGVJdGVyYXRvcldpdGg6aW1wbC5nZXQoKSBmaWx0
ZXI6ZmlsdGVyXTsKIH0KIAogLSAoRE9NVHJlZVdhbGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERP
TU5vZGUgKilyb290IDoodW5zaWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilm
aWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKIHsKLSAgICBSZWZQdHI8Tm9kZUZp
bHRlcj4gY3BwRmlsdGVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlRmlsdGVyPiBjcHBGaWx0
ZXI7CiAgICAgaWYgKGZpbHRlcikKLSAgICAgICAgY3BwRmlsdGVyID0gbmV3IE5vZGVGaWx0ZXIo
bmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGZpbHRlcikpOwotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFJlZlB0cjxUcmVlV2Fsa2VyPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+
Y3JlYXRlVHJlZVdhbGtlcihbcm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhw
YW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOworICAgICAgICBjcHBGaWx0ZXIgPSBuZXcgV2ViQ29y
ZTo6Tm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRyZWVX
YWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUcmVlV2Fsa2VyKFtyb290IF9u
b2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7
CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gW0RPTVRyZWVXYWxrZXIgX3Ry
ZWVXYWxrZXJXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07CiB9CkBAIC0xMDA5LDEyICs5
NjMsMTIgQEAgT2JqQ0V2ZW50TGlzdGVuZXIqIE9iakNFdmVudExpc3RlbmVyOjpmaQogewogICAg
IGlmIChMaXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJNYXApCiAgICAgICAgIHJldHVybiBtYXAt
PmdldChsaXN0ZW5lcik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIDA7CiB9CiAKIE9i
akNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGlkIDxET01FdmVudExp
c3RlbmVyPiBsaXN0ZW5lcikKIHsKLSAgICBPYmpDRXZlbnRMaXN0ZW5lciAqd3JhcHBlciA9IGZp
bmQobGlzdGVuZXIpOworICAgIE9iakNFdmVudExpc3RlbmVyKiB3cmFwcGVyID0gZmluZChsaXN0
ZW5lcik7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICB3cmFwcGVyID0gbmV3IE9iakNFdmVu
dExpc3RlbmVyKGxpc3RlbmVyKTsKICAgICB3cmFwcGVyLT5yZWYoKTsKQEAgLTEwMzgsNyArOTky
LDcgQEAgT2JqQ0V2ZW50TGlzdGVuZXI6On5PYmpDRXZlbnRMaXN0ZW5lcigpCiAgICAgW21fbGlz
dGVuZXIgcmVsZWFzZV07CiB9CiAKLXZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50
KEV2ZW50ICpldmVudCwgYm9vbCkKK3ZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50
KFdlYkNvcmU6OkV2ZW50KiBldmVudCwgYm9vbCkKIHsKICAgICBbbV9saXN0ZW5lciBoYW5kbGVF
dmVudDpbRE9NRXZlbnQgX2V2ZW50V2l0aDpldmVudF1dOwogfQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01BYnN0cmFjdFZpZXcuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01BYnN0cmFjdFZpZXcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01P
YmplY3QuaD4KKworQGNsYXNzIERPTURvY3VtZW50OworCitAaW50ZXJmYWNlIERPTUFic3RyYWN0
VmlldyA6IERPTU9iamVjdAorLSAoRE9NRG9jdW1lbnQgKilkb2N1bWVudDsKK0BlbmQKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BYnN0cmFjdFZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BYnN0cmFjdFZpZXcubW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJET01BYnN0cmFjdFZpZXcuaCIKKworI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIkRPTVdpbmRvdy5oIgorI2ltcG9ydCAiRG9jdW1lbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIHR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK30KKworQUxM
T1dfRE9NX0NBU1QoRE9NV2luZG93KQorCitAaW1wbGVtZW50YXRpb24gRE9NQWJzdHJhY3RWaWV3
CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRPTVdpbmRvdyo+KF9p
bnRlcm5hbCkKKworLSAoRE9NRG9jdW1lbnQgKilkb2N1bWVudAoreworICAgIHJldHVybiBbRE9N
RG9jdW1lbnQgX2RvY3VtZW50V2l0aDpXVEY6OmdldFB0cihJTVBMLT5kb2N1bWVudCgpKV07Cit9
CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUFic3RyYWN0VmlldyAoV2ViQ29yZUludGVy
bmFsKQorCistIChXZWJDb3JlOjpBYnN0cmFjdFZpZXcgKilfYWJzdHJhY3RWaWV3Cit7CisgICAg
cmV0dXJuIElNUEw7Cit9CisKKy0gKGlkKV9pbml0V2l0aEFic3RyYWN0VmlldzooV2ViQ29yZTo6
QWJzdHJhY3RWaWV3ICopaW1wbAoreworICAgIEFTU0VSVChpbXBsKTsKKworICAgIFtzdXBlciBf
aW5pdF07CisgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1w
bCk7CisgICAgaW1wbC0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworKyAoRE9NQWJzdHJhY3RWaWV3ICopX2Fic3RyYWN0Vmlld1dp
dGg6KFdlYkNvcmU6OkFic3RyYWN0VmlldyAqKWltcGwKK3sKKyAgICBpZiAoIWltcGwpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWQgY2FjaGVkSW5zdGFuY2U7CisgICAgY2FjaGVk
SW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOworICAgIGlmIChjYWNoZWRJbnN0YW5jZSkK
KyAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Cisg
ICAgCisgICAgcmV0dXJuIFtbW0RPTUFic3RyYWN0VmlldyBhbGxvY10gX2luaXRXaXRoQWJzdHJh
Y3RWaWV3OmltcGxdIGF1dG9yZWxlYXNlXTsKK30KKworQGVuZApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUNTUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NQ1NTLm1tCShyZXZpc2lvbiAxNjQwOCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01D
U1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDQ1ICsyOCwzNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJET01DU1MuaCIKIAotI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgogI2ltcG9y
dCAiQ1NTQ2hhcnNldFJ1bGUuaCIKICNpbXBvcnQgIkNTU0ZvbnRGYWNlUnVsZS5oIgogI2ltcG9y
dCAiQ1NTSW1wb3J0UnVsZS5oIgogI2ltcG9ydCAiQ1NTTWVkaWFSdWxlLmgiCiAjaW1wb3J0ICJD
U1NQYWdlUnVsZS5oIgorI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbXBvcnQgIkNT
U1J1bGUuaCIKICNpbXBvcnQgIkNTU1J1bGVMaXN0LmgiCisjaW1wb3J0ICJDU1NTdHlsZURlY2xh
cmF0aW9uLmgiCiAjaW1wb3J0ICJDU1NTdHlsZVJ1bGUuaCIKICNpbXBvcnQgIkNTU1N0eWxlU2hl
ZXQuaCIKICNpbXBvcnQgIkNTU1ZhbHVlTGlzdC5oIgotI2ltcG9ydCAiQ291bnRlci5oIgogI2lt
cG9ydCAiRE9NSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVByaXZhdGUuaCIKICNpbXBvcnQgIkRP
TVdpbmRvdy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25FeHRy
YXMuaCIKLSNpbXBvcnQgIkhUTUxMaW5rRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTFN0eWxlRWxl
bWVudC5oIgotI2ltcG9ydCAiTWVkaWFMaXN0LmgiCi0jaW1wb3J0ICJQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaCIKLSNpbXBvcnQgIlJlY3RJbXBsLmgiCiAjaW1wb3J0ICJTdHlsZVNoZWV0LmgiCi0j
aW1wb3J0ICJTdHlsZVNoZWV0TGlzdC5oIgogCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+CiAjaW1w
b3J0IDxvYmpjL29iamMtY2xhc3MuaD4KKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKIH0KIAot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAvLyBET01TdHlsZVNoZWV0CiAKIEBpbXBsZW1lbnRhdGlvbiBET01TdHlsZVNoZWV0
IChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKGlkKV9pbml0V2l0aFN0eWxlU2hlZXQ6KFN0eWxlU2hl
ZXQgKilpbXBsCistIChpZClfaW5pdFdpdGhTdHlsZVNoZWV0OihXZWJDb3JlOjpTdHlsZVNoZWV0
ICopaW1wbAogewogICAgIFtzdXBlciBfaW5pdF07CiAgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKQEAgLTc1LDcgKzY3LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKERPTVN0eWxlU2hlZXQgKilf
c3R5bGVTaGVldFdpdGg6KFN0eWxlU2hlZXQgKilpbXBsCisrIChET01TdHlsZVNoZWV0ICopX3N0
eWxlU2hlZXRXaXRoOihXZWJDb3JlOjpTdHlsZVNoZWV0ICopaW1wbAogewogICAgIGlmICghaW1w
bCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTEwMSw3ICs5Myw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTU3R5bGVTaGVldCAoV2ViQ29yZUlu
dGVybmFsKQogCi0rIChET01DU1NTdHlsZVNoZWV0ICopX0NTU1N0eWxlU2hlZXRXaXRoOihDU1NT
dHlsZVNoZWV0ICopaW1wbAorKyAoRE9NQ1NTU3R5bGVTaGVldCAqKV9DU1NTdHlsZVNoZWV0V2l0
aDooV2ViQ29yZTo6Q1NTU3R5bGVTaGVldCAqKWltcGwKIHsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NQ1NTU3R5bGVTaGVldCo+KFtET01TdHlsZVNoZWV0IF9zdHlsZVNoZWV0V2l0aDppbXBs
XSk7CiB9CkBAIC0xMTQsNyArMTA2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBp
bXBsZW1lbnRhdGlvbiBET01DU1NSdWxlIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKGlkKV9pbml0
V2l0aFJ1bGU6KENTU1J1bGUgKilpbXBsCistIChpZClfaW5pdFdpdGhSdWxlOihXZWJDb3JlOjpD
U1NSdWxlICopaW1wbAogewogICAgIFtzdXBlciBfaW5pdF07CiAgICAgX2ludGVybmFsID0gRE9N
X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKQEAgLTEyMyw3ICsxMTUsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotKyAoRE9NQ1NTUnVs
ZSAqKV9DU1NSdWxlV2l0aDooQ1NTUnVsZSAqKWltcGwKKysgKERPTUNTU1J1bGUgKilfQ1NTUnVs
ZVdpdGg6KFdlYkNvcmU6OkNTU1J1bGUgKilpbXBsCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAg
ICByZXR1cm4gbmlsOwpAQCAtMTY4LDcgKzE2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTVmFsdWUgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAo
aWQpX2luaXRXaXRoVmFsdWU6KENTU1ZhbHVlICopaW1wbAorLSAoaWQpX2luaXRXaXRoVmFsdWU6
KFdlYkNvcmU6OkNTU1ZhbHVlICopaW1wbAogewogICAgIFtzdXBlciBfaW5pdF07CiAgICAgX2lu
dGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKQEAgLTE3Nyw3ICsx
NjksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAot
KyAoRE9NQ1NTVmFsdWUgKilfQ1NTVmFsdWVXaXRoOihDU1NWYWx1ZSAqKWltcGwKKysgKERPTUNT
U1ZhbHVlICopX0NTU1ZhbHVlV2l0aDooV2ViQ29yZTo6Q1NTVmFsdWUgKilpbXBsCiB7CiAgICAg
aWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjE4LDcgKzIxMCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTVmFsdWUqPihfaW50
ZXJuYWwpKTsKIH0KIAotKyAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilfQ1NTUHJpbWl0aXZlVmFs
dWVXaXRoOihDU1NWYWx1ZSAqKWltcGwKKysgKERPTUNTU1ByaW1pdGl2ZVZhbHVlICopX0NTU1By
aW1pdGl2ZVZhbHVlV2l0aDooV2ViQ29yZTo6Q1NTVmFsdWUgKilpbXBsCiB7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTUNTU1ByaW1pdGl2ZVZhbHVlKj4oW0RPTUNTU1ZhbHVlIF9DU1NWYWx1
ZVdpdGg6aW1wbF0pOwogfQpAQCAtMjI3LDE5ICsyMTksNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUkdC
Q29sb3IKLQotQGltcGxlbWVudGF0aW9uIERPTVJHQkNvbG9yIChXZWJQcml2YXRlKQotCi0tIChO
U0NvbG9yICopX2NvbG9yCi17Ci0gICAgcmV0dXJuIFtzZWxmIGNvbG9yXTsKLX0KLQotQGVuZAot
Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEBpbXBsZW1lbnRhdGlv
biBET01DU1NTdHlsZURlY2xhcmF0aW9uIChET01DU1MyUHJvcGVydGllcykKIApAQCAtMTQ4Myw3
ICsxNDYyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC0gKERPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcg
Kilwc2V1ZG9FbHQKIHsKLSAgICBBYnN0cmFjdFZpZXcqIGR2ID0gW3NlbGYgX2RvY3VtZW50XS0+
ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3JlOjpBYnN0cmFjdFZpZXcqIGR2ID0gW3NlbGYgX2Rv
Y3VtZW50XS0+ZGVmYXVsdFZpZXcoKTsKIAogICAgIGlmICghZHYpCiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC0xNDk3LDcgKzE0NzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAo
RE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKillbHQgOihO
U1N0cmluZyAqKXBzZXVkb0VsdAogewotICAgIEFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9j
dW1lbnRdLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkFic3RyYWN0VmlldyogZHYgPSBb
c2VsZiBfZG9jdW1lbnRdLT5kZWZhdWx0VmlldygpOwogCiAgICAgaWYgKCFkdikKICAgICAgICAg
cmV0dXJuIG5pbDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAkocmV2aXNpb24gMTY0MDgp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMyArMjgsMTQgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NQ0RBVEFTZWN0aW9uLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RPTUNoYXJhY3RlckRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NQ29t
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01ET01JbXBsZW1lbnRhdGlvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudEZy
YWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50VHlwZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ET01FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUVudGl0eS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9ET01FbnRpdHlSZWZlcmVuY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRE9N
RE9NSW1wbGVtZW50YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXhjZXB0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RPTU5hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01O
b2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGVMaXN0Lmg+CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NRXZlbnRFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NRXZlbnRFeGNlcHRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01FdmVudEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBET01FdmVudEV4Y2VwdGlvbjsKKworZW51bSBET01FdmVudEV4Y2VwdGlvbkNvZGUgewor
ICAgIERPTV9VTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUiA9IDAKK307CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUV2ZW50cy5oCShyZXZpc2lvbiAxNjQwOCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01FdmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9ET01WaWV3cy5oPgogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50RXhjZXB0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RP
TUV2ZW50TGlzdGVuZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRUYXJnZXQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRE9NS2V5Ym9hcmRFdmVudC5oPgpAQCAtMzksMTIgKzQwLDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRE9NVUlFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01XaGVlbEV2
ZW50Lmg+CiAKLWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV2ZW50RXhjZXB0aW9uOwotCi1l
bnVtIERPTUV2ZW50RXhjZXB0aW9uQ29kZSB7Ci0gICAgRE9NX1VOU1BFQ0lGSUVEX0VWRU5UX1RZ
UEVfRVJSID0gMAotfTsKLQogQGludGVyZmFjZSBET01LZXlib2FyZEV2ZW50IChOb25TdGFuZGFy
ZEFkZGl0aW9ucykKIC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJpbmcgKilrZXlJZGVu
dGlmaWVyQXJnOwogQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCShyZXZp
c2lvbiAxNjQwOCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM4LDggKzM4LDYgQEAKICNpbXBvcnQgIk92ZXJmbG93RXZlbnQuaCIKICNp
bXBvcnQgIlVJRXZlbnQuaCIKIAotQUxMT1dfRE9NX0NBU1QoRXZlbnQpCi0KIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01FdmVudAogCkBAIC05OCw2ICs5Niw3IEBA
IEFMTE9XX0RPTV9DQVNUKEV2ZW50KQogCiBAaW1wbGVtZW50YXRpb24gRE9NS2V5Ym9hcmRFdmVu
dCAoTm9uU3RhbmRhcmRBZGRpdGlvbnMpCiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbXBs
ZW1lbnRlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24KIC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZToo
TlNTdHJpbmcgKilrZXlJZGVudGlmaWVyQXJnCiB7CiAgICAgaWYgKFtrZXlJZGVudGlmaWVyQXJn
IGlzRXF1YWxUb1N0cmluZzpAIkNvbnRyb2wiXSAmJiBbc2VsZiBjdHJsS2V5XSkKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01IVE1MLm1tCShyZXZpc2lvbiAxNjQwOCkKKysrIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01IVE1MLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyOCArMzQsMTQgQEAKICNp
bXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9y
dCAiSFRNTERvY3VtZW50LmgiCi0jaW1wb3J0ICJIVE1MRm9ybUVsZW1lbnQuaCIKLSNpbXBvcnQg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbXBv
cnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAiSFRNTE9iamVjdEVsZW1lbnQuaCIKLSNpbXBvcnQg
IkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgotI2ltcG9ydCAiSFRNTFNlbGVjdEVsZW1lbnQuaCIK
LSNpbXBvcnQgIkhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFibGVD
ZWxsRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTFRhYmxlRWxlbWVudC5oIgotI2ltcG9ydCAiSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKICNpbXBvcnQgIktVUkwuaCIKLSNpbXBvcnQgIk5hbWVO
b2RlTGlzdC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlclRleHRDb250cm9s
LmgiCiAjaW1wb3J0ICJjc3NoZWxwZXIuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLQogLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUhUTUxEb2N1bWVudAogCkBAIC03
OCw3ICs2NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIC0gKERPTURvY3VtZW50
RnJhZ21lbnQgKilfY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6KE5TU3Ry
aW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkxTdHJpbmc6KE5TU3RyaW5nICopYmFzZVVSTFN0cmlu
ZwogewotICAgIE5TVVJMICpiYXNlVVJMID0gS1VSTChbc2VsZiBfZG9jdW1lbnRdLT5jb21wbGV0
ZVVSTChwYXJzZVVSTChiYXNlVVJMU3RyaW5nKSkuZGVwcmVjYXRlZFN0cmluZygpKS5nZXROU1VS
TCgpOworICAgIE5TVVJMICpiYXNlVVJMID0gV2ViQ29yZTo6S1VSTChbc2VsZiBfZG9jdW1lbnRd
LT5jb21wbGV0ZVVSTChXZWJDb3JlOjpwYXJzZVVSTChiYXNlVVJMU3RyaW5nKSkuZGVwcmVjYXRl
ZFN0cmluZygpKS5nZXROU1VSTCgpOwogICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVudEZy
YWdtZW50V2l0aE1hcmt1cFN0cmluZzptYXJrdXBTdHJpbmcgYmFzZVVSTDpiYXNlVVJMXTsKIH0K
IApAQCAtMTIyLDE5ICsxMDgsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogI3By
YWdtYSBtYXJrIERPTSBFWFRFTlNJT05TCiAKLS8vIFRoZXNlICNpbXBvcnRzIGFuZCAidXNpbmdz
IiBhcmUgdXNlZCBvbmx5IGJ5IHZpZXdGb3JFbGVtZW50IGFuZCBzaG91bGQgYmUgZGVsZXRlZCAK
Ky8vIFRoaXMgI2ltcG9ydCBpcyB1c2VkIG9ubHkgYnkgdmlld0ZvckVsZW1lbnQgYW5kIHNob3Vs
ZCBiZSBkZWxldGVkIAogLy8gd2hlbiB0aGF0IGZ1bmN0aW9uIGdvZXMgYXdheS4KICNpbXBvcnQg
IlJlbmRlcldpZGdldC5oIgotdXNpbmcgV2ViQ29yZTo6UmVuZGVyT2JqZWN0OwotdXNpbmcgV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OwogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBieSB0
aGUgdHdvIEZvcm1BdXRvRmlsbFRyYW5zaXRpb24gY2F0ZWdvcmllcywgYW5kIHdpbGwgZ28gYXdh
eQogLy8gYXMgc29vbiBhcyBwb3NzaWJsZS4KIHN0YXRpYyBOU1ZpZXcgKnZpZXdGb3JFbGVtZW50
KERPTUVsZW1lbnQgKmVsZW1lbnQpCiB7Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtl
bGVtZW50IF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3Qg
KnJlbmRlcmVyID0gW2VsZW1lbnQgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5k
ZXJlciAmJiByZW5kZXJlci0+aXNXaWRnZXQoKSkgewotICAgICAgICBXaWRnZXQgKndpZGdldCA9
IHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlcldpZGdldCo+KHJlbmRlcmVyKS0+d2lkZ2V0KCk7Cisg
ICAgICAgIFdlYkNvcmU6OldpZGdldCAqd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29y
ZTo6UmVuZGVyV2lkZ2V0Kj4ocmVuZGVyZXIpLT53aWRnZXQoKTsKICAgICAgICAgaWYgKHdpZGdl
dCkgewogICAgICAgICAgICAgd2lkZ2V0LT5wb3B1bGF0ZSgpOwogICAgICAgICAgICAgcmV0dXJu
IHdpZGdldC0+Z2V0VmlldygpOwpAQCAtMTg4LDkgKzE3Miw5IEBAIHN0YXRpYyBOU1ZpZXcgKnZp
ZXdGb3JFbGVtZW50KERPTUVsZW1lbnQKIAogLSAodm9pZClfcmVwbGFjZUNoYXJhY3RlcnNJblJh
bmdlOihOU1JhbmdlKXRhcmdldFJhbmdlIHdpdGhTdHJpbmc6KE5TU3RyaW5nICopcmVwbGFjZW1l
bnRTdHJpbmcgc2VsZWN0aW5nRnJvbUluZGV4OihpbnQpaW5kZXgKIHsKLSAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQgPSBbc2VsZiBfSFRNTElucHV0RWxlbWVudF07CisgICAgV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gW3NlbGYgX0hUTUxJbnB1dEVs
ZW1lbnRdOwogICAgIGlmIChpbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgU3RyaW5nIG5ld1ZhbHVl
ID0gaW5wdXRFbGVtZW50LT52YWx1ZSgpLnJlcGxhY2UodGFyZ2V0UmFuZ2UubG9jYXRpb24sIHRh
cmdldFJhbmdlLmxlbmd0aCwgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgICAgICBXZWJDb3JlOjpT
dHJpbmcgbmV3VmFsdWUgPSBpbnB1dEVsZW1lbnQtPnZhbHVlKCkucmVwbGFjZSh0YXJnZXRSYW5n
ZS5sb2NhdGlvbiwgdGFyZ2V0UmFuZ2UubGVuZ3RoLCByZXBsYWNlbWVudFN0cmluZyk7CiAgICAg
ICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWUobmV3VmFsdWUpOwogICAgICAgICBpbnB1dEVsZW1l
bnQtPnNldFNlbGVjdGlvblJhbmdlKGluZGV4LCBuZXdWYWx1ZS5sZW5ndGgoKSk7CiAgICAgfQpA
QCAtMTk4LDcgKzE4Miw3IEBAIHN0YXRpYyBOU1ZpZXcgKnZpZXdGb3JFbGVtZW50KERPTUVsZW1l
bnQKIAogLSAoTlNSYW5nZSlfc2VsZWN0ZWRSYW5nZQogewotICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsKKyAgICBXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBbc2VsZiBfSFRNTElucHV0RWxlbWVudF07
CiAgICAgaWYgKGlucHV0RWxlbWVudCkgewogICAgICAgICBpbnQgc3RhcnQgPSBpbnB1dEVsZW1l
bnQtPnNlbGVjdGlvblN0YXJ0KCk7CiAgICAgICAgIGludCBlbmQgPSBpbnB1dEVsZW1lbnQtPnNl
bGVjdGlvbkVuZCgpOwpAQCAtMjEyLDcgKzE5Niw3IEBAIHN0YXRpYyBOU1ZpZXcgKnZpZXdGb3JF
bGVtZW50KERPTUVsZW1lbnQKICAgICAvLyBUaGlzIG5vdGlmaWVzIHRoZSBpbnB1dCBlbGVtZW50
IHRoYXQgdGhlIGNvbnRlbnQgaGFzIGJlZW4gYXV0b2ZpbGxlZAogICAgIC8vIFRoaXMgYWxsb3dz
IFdlYktpdCB0byBvYmV5IHRoZSAtd2Via2l0LWF1dG9maWxsIHBzZXVkbyBzdHlsZSwgd2hpY2gK
ICAgICAvLyBjaGFuZ2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgotICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsKKyAgICBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBbc2VsZiBfSFRNTElucHV0RWxlbWVu
dF07CiAgICAgaWYgKGlucHV0RWxlbWVudCkKICAgICAgICAgaW5wdXRFbGVtZW50LT5zZXRBdXRv
ZmlsbGVkKGZpbGxlZCk7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAko
cmV2aXNpb24gMTY0MDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEF0dHI7CiAgICAgY2xhc3MgQ0RBVEFTZWN0aW9uOworICAgIGNsYXNzIENTU1ByaW1p
dGl2ZVZhbHVlOwogICAgIGNsYXNzIENTU1J1bGU7CiAgICAgY2xhc3MgQ1NTUnVsZUxpc3Q7CiAg
ICAgY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTIwMSwxMCArMjAyLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLSAoV2ViQ29yZTo6RG9jdW1lbnQgKilfZG9jdW1lbnQ7CiBAZW5kCiAK
LUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbEV4dGVuc2lvbikKLS0gKERP
TUVsZW1lbnQgKilfb3duZXJFbGVtZW50OwotQGVuZAotCiBAaW50ZXJmYWNlIERPTURvY3VtZW50
RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9j
dW1lbnRGcmFnbWVudFdpdGg6KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQgKilpbXBsOwogLSAo
V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50OwpAQCAtMjkzLDYg
KzI5MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEBlbmQKIAogQGludGVyZmFjZSBET01DU1NQ
cmltaXRpdmVWYWx1ZSAoV2ViQ29yZUludGVybmFsKQorLSAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWUgKilfQ1NTUHJpbWl0aXZlVmFsdWU7CiArIChET01DU1NQcmltaXRpdmVWYWx1ZSAqKV9D
U1NQcmltaXRpdmVWYWx1ZVdpdGg6KFdlYkNvcmU6OkNTU1ZhbHVlICopaW1wbDsKIEBlbmQKIApA
QCAtNDIzLDE5ICs0MjEsMjAgQEAgaW5saW5lIHZvaWQgcmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6
OkV4YwogICAgICAgICB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNsYXNzIFdlYkNvcmU6OnR5
cGUqPihwKTsgfQogCiAvLyBObyBjbGFzcyBzaG91bGQgYXBwZWFyIGluIHRoaXMgbGlzdCBpZiBp
dHMgYmFzZSBjbGFzcyBpcyBhbHJlYWR5IGhlcmUuCi1BTExPV19ET01fQ0FTVChDb3VudGVyKQog
QUxMT1dfRE9NX0NBU1QoQ1NTUnVsZSkKIEFMTE9XX0RPTV9DQVNUKENTU1J1bGVMaXN0KQogQUxM
T1dfRE9NX0NBU1QoQ1NTU3R5bGVEZWNsYXJhdGlvbikKIEFMTE9XX0RPTV9DQVNUKENTU1N0eWxl
U2hlZXQpCiBBTExPV19ET01fQ0FTVChDU1NWYWx1ZSkKK0FMTE9XX0RPTV9DQVNUKENvdW50ZXIp
CiBBTExPV19ET01fQ0FTVChET01JbXBsZW1lbnRhdGlvbkZyb250KQorQUxMT1dfRE9NX0NBU1Qo
RXZlbnQpCiBBTExPV19ET01fQ0FTVChIVE1MQ29sbGVjdGlvbikKIEFMTE9XX0RPTV9DQVNUKEhU
TUxPcHRpb25zQ29sbGVjdGlvbikKIEFMTE9XX0RPTV9DQVNUKE1lZGlhTGlzdCkKIEFMTE9XX0RP
TV9DQVNUKE5hbWVkTm9kZU1hcCkKLUFMTE9XX0RPTV9DQVNUKE5vZGVGaWx0ZXIpCiBBTExPV19E
T01fQ0FTVChOb2RlKQorQUxMT1dfRE9NX0NBU1QoTm9kZUZpbHRlcikKIEFMTE9XX0RPTV9DQVNU
KE5vZGVJdGVyYXRvcikKIEFMTE9XX0RPTV9DQVNUKE5vZGVMaXN0KQogQUxMT1dfRE9NX0NBU1Qo
UmFuZ2UpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5oCShyZXZpc2lvbiAxNjQwOCkK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMjggKzMwLDYgQEAKIAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1w
OwogCi1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FeGNlcHRpb247Ci0KLS8vIERPTSBleGNl
cHRpb24gY29kZXMKLWVudW0gewotICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAg
ICA9IDEsCi0gICAgRE9NX0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKLSAgICBE
T01fSElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICAgICAgPSAzLAotICAgIERPTV9XUk9OR19ET0NV
TUVOVF9FUlIgICAgICAgICAgICA9IDQsCi0gICAgRE9NX0lOVkFMSURfQ0hBUkFDVEVSX0VSUiAg
ICAgICAgID0gNSwKLSAgICBET01fTk9fREFUQV9BTExPV0VEX0VSUiAgICAgICAgICAgPSA2LAot
ICAgIERPTV9OT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgICA9IDcsCi0gICAgRE9NX05PVF9G
T1VORF9FUlIgICAgICAgICAgICAgICAgID0gOCwKLSAgICBET01fTk9UX1NVUFBPUlRFRF9FUlIg
ICAgICAgICAgICAgPSA5LAotICAgIERPTV9JTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgICAgICA9
IDEwLAotICAgIERPTV9JTlZBTElEX1NUQVRFX0VSUiAgICAgICAgICAgICA9IDExLAotICAgIERP
TV9TWU5UQVhfRVJSICAgICAgICAgICAgICAgICAgICA9IDEyLAotICAgIERPTV9JTlZBTElEX01P
RElGSUNBVElPTl9FUlIgICAgICA9IDEzLAotICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAg
ICAgICAgICA9IDE0LAotICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1
Ci19OwotCi0KIHR5cGVkZWYgc3RydWN0IERPTU9iamVjdEludGVybmFsIERPTU9iamVjdEludGVy
bmFsOwogCiBAaW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8TlNDb3B5aW5n
PgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjQwOCkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTFN0eWxlRWxlbWVudFByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTFRleHRBcmVhRWxlbWVudFByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRE9NS2V5Ym9hcmRFdmVudFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRE9NTW91c2VFdmVudFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZUl0ZXJh
dG9yUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTVVJRXZlbnRQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVdoZWVsRXZl
bnRQcml2YXRlLmg+CkBAIC02MiwxNSArNjQsNiBAQAogLSAoTlNTdHJpbmcgKilfdGV4dDsKIEBl
bmQKIAotQGludGVyZmFjZSBET01SR0JDb2xvciAoV2ViUHJpdmF0ZSkKLS8vIGZhc3QgYW5kIGVh
c3kgd2F5IG9mIGdldHRpbmcgYW4gTlNDb2xvciBmb3IgYSBET01SR0JDb2xvcgotLSAoTlNDb2xv
ciAqKV9jb2xvcjsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob2RlIChXZWJQcml2YXRlKQotLSAo
Qk9PTClpc0NvbnRlbnRFZGl0YWJsZTsKLUBlbmQKLQogQGludGVyZmFjZSBET01FbGVtZW50IChX
ZWJQcml2YXRlKQogLSAoTlNGb250ICopX2ZvbnQ7CiAtIChOU0RhdGEgKilfaW1hZ2VUSUZGUmVw
cmVzZW50YXRpb247CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUmFuZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUmFuZ2UuaAkocmV2aXNpb24gMTY0
MDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUmFuZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMjAgKzI4LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCi1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01S
YW5nZUV4Y2VwdGlvbjsKKyNpbXBvcnQgPFdlYkNvcmUvRE9NUmFuZ2VFeGNlcHRpb24uaD4KIAor
Ly8gRE9NIFJhbmdlIGNvbXBhcmlzb24gY29kZXMKIGVudW0gewotICAgIC8vCi0gICAgLy8gRE9N
IHJhbmdlIGV4Y2VwdGlvbiBjb2RlcwotICAgIC8vCi0gICAgRE9NX0JBRF9CT1VOREFSWVBPSU5U
U19FUlIgICAgICAgID0gMSwKLSAgICBET01fSU5WQUxJRF9OT0RFX1RZUEVfRVJSICAgICAgICAg
PSAyCi19OwotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBSYW5nZSBjb21wYXJpc29uIGNv
ZGVzCi0gICAgLy8KICAgICBET01fU1RBUlRfVE9fU1RBUlQgICAgICAgICAgICAgICAgPSAwLAog
ICAgIERPTV9TVEFSVF9UT19FTkQgICAgICAgICAgICAgICAgICA9IDEsCiAgICAgRE9NX0VORF9U
T19FTkQgICAgICAgICAgICAgICAgICAgID0gMiwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01SYW5nZUV4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01SYW5nZUV4Y2VwdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVJhbmdlRXhjZXB0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2Ft
LndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTVJh
bmdlRXhjZXB0aW9uOworCitlbnVtIERPTVJhbmdlRXhjZXB0aW9uQ29kZSB7CisgICAgRE9NX0JB
RF9CT1VOREFSWVBPSU5UU19FUlIgICAgICAgID0gMSwKKyAgICBET01fSU5WQUxJRF9OT0RFX1RZ
UEVfRVJSICAgICAgICAgPSAyCit9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVZp
ZXdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVZpZXdzLmgJKHJl
dmlzaW9uIDE2NDA4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVZpZXdzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDQgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKLUBpbnRlcmZhY2UgRE9NQWJzdHJh
Y3RWaWV3IDogRE9NT2JqZWN0Ci0tIChET01Eb2N1bWVudCAqKWRvY3VtZW50OwotQGVuZAorI2lt
cG9ydCA8V2ViQ29yZS9ET01BYnN0cmFjdFZpZXcuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01WaWV3cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Vmlld3MubW0JKHJldmlzaW9uIDE2NDA4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVZp
ZXdzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NVmlld3MuaCIKLQotI2ltcG9ydCAi
RE9NSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJET01XaW5kb3cu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0
VmlldzsKLX0KLQotQUxMT1dfRE9NX0NBU1QoRE9NV2luZG93KQotCi1AaW1wbGVtZW50YXRpb24g
RE9NQWJzdHJhY3RWaWV3Ci0KLS0gKERPTURvY3VtZW50ICopZG9jdW1lbnQKLXsKLSAgICByZXR1
cm4gW0RPTURvY3VtZW50IF9kb2N1bWVudFdpdGg6W3NlbGYgX2Fic3RyYWN0Vmlld10tPmRvY3Vt
ZW50KCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01BYnN0cmFjdFZpZXcgKFdl
YkNvcmVJbnRlcm5hbCkKLQotLSAoV2ViQ29yZTo6QWJzdHJhY3RWaWV3ICopX2Fic3RyYWN0Vmll
dwotewotICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpBYnN0cmFjdFZpZXcgKj4oX2ludGVy
bmFsKTsKLX0KLQotLSAoaWQpX2luaXRXaXRoQWJzdHJhY3RWaWV3OihXZWJDb3JlOjpBYnN0cmFj
dFZpZXcgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsK
LSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAg
ICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVy
biBzZWxmOwotfQotCi0rIChET01BYnN0cmFjdFZpZXcgKilfYWJzdHJhY3RWaWV3V2l0aDooV2Vi
Q29yZTo6QWJzdHJhY3RWaWV3ICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5j
ZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAg
ICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAg
ICByZXR1cm4gW1tbRE9NQWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdFdpdGhBYnN0cmFjdFZpZXc6
aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NWFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBh
dGguaAkocmV2aXNpb24gMTY0MDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9N
RG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKKyNpbXBvcnQgPFdl
YkNvcmUvRE9NWFBhdGhFeGNlcHRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NWFBhdGhFeHBy
ZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVhQYXRoTlNSZXNvbHZlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01YUGF0aFJlc3VsdC5oPgotCi1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBE
T01YUGF0aEV4Y2VwdGlvbjsKLQotZW51bSBET01YUGF0aEV4Y2VwdGlvbkNvZGUgewotICAgIERP
TV9JTlZBTElEX0VYUFJFU1NJT05fRVJSID0gNTEsCi0gICAgRE9NX1RZUEVfRVJSID0gNTIKLX07
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGhFeGNlcHRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGhFeGNlcHRpb24uaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4Y2VwdGlvbi5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitl
eHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01YUGF0aEV4Y2VwdGlvbjsKKworZW51bSBET01YUGF0
aEV4Y2VwdGlvbkNvZGUgeworICAgIERPTV9JTlZBTElEX0VYUFJFU1NJT05fRVJSICAgICAgPSA1
MSwKKyAgICBET01fVFlQRV9FUlIgICAgICAgICAgICAgICAgICAgID0gNTIKK307CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lv
biAxNjQwOCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDYgKzY0Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZh
Y2VOYW1lKTsKICAgICBteSAkcGFyZW50SW1wbENsYXNzTmFtZSA9IEdldFBhcmVudEltcGxDbGFz
c05hbWUoJGRhdGFOb2RlKTsKICAgICBteSAkaW1wbENsYXNzTmFtZVdpdGhOYW1lc3BhY2UgPSAi
V2ViQ29yZTo6IiAuICRpbXBsQ2xhc3NOYW1lOworICAgIG15ICRjb25kaXRpb25hbCA9ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CiAKICAgICBteSAkbnVt
QXR0cmlidXRlcyA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsKICAgICBteSAkbnVtRnVuY3Rp
b25zID0gQHskZGF0YU5vZGUtPmZ1bmN0aW9uc307CkBAIC02NTYsNiArNjU3LDggQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAjIC0gSU5DTFVERVMgLQogICAgIHB1c2goQGltcGxD
b250ZW50SGVhZGVyLCAiXG4jaW1wb3J0IFwiY29uZmlnLmhcIlxuIik7CiAKKyAgICBwdXNoKEBp
bXBsQ29udGVudEhlYWRlciwgIlxuI2lmZGVmICR7Y29uZGl0aW9uYWx9X1NVUFBPUlRcblxuIikg
aWYgJGNvbmRpdGlvbmFsOworCiAgICAgbXkgJGNsYXNzSGVhZGVyTmFtZSA9IEdldENsYXNzSGVh
ZGVyTmFtZSgkY2xhc3NOYW1lKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBv
cnQgXCIkY2xhc3NIZWFkZXJOYW1lLmhcIlxuXG4iKTsKIApAQCAtMTA4MCw2ICsxMDgzLDggQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgIyBFTkQgV2ViQ29yZUludGVybmFs
IGNhdGVnb3J5CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXEBlbmRcbiIpOwogICAgIH0K
KyAgICAKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWx9
X1NVUFBPUlRcbiIpIGlmICRjb25kaXRpb25hbDsKIH0KIAogIyBJbnRlcm5hbCBoZWxwZXIKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkocmV2aXNpb24gMTY0MDgpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC00NCwzNjUgKzQ0LDM2MyBAQCBteSAkZG9jdW1lbnQgPSAwOyAjIFdpbGwgaG9sZCB0aGUgcmVz
dWx0CiAjIERlZmF1bHQgQ29uc3RydWN0b3IKIHN1YiBuZXcKIHsKLSAgbXkgJG9iamVjdCA9IHNo
aWZ0OwotICBteSAkcmVmZXJlbmNlID0geyB9OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAg
ICBteSAkcmVmZXJlbmNlID0geyB9OwogCi0gICRkb2N1bWVudCA9IDA7Ci0gICRiZVF1aWV0ID0g
c2hpZnQ7CisgICAgJGRvY3VtZW50ID0gMDsKKyAgICAkYmVRdWlldCA9IHNoaWZ0OwogCi0gIGJs
ZXNzKCRyZWZlcmVuY2UsICRvYmplY3QpOwotICByZXR1cm4gJHJlZmVyZW5jZTsKKyAgICBibGVz
cygkcmVmZXJlbmNlLCAkb2JqZWN0KTsKKyAgICByZXR1cm4gJHJlZmVyZW5jZTsKIH0KIAogIyBS
ZXR1cm5zIHRoZSBwYXJzZWQgJ2lkbERvY3VtZW50Jwogc3ViIFBhcnNlCiB7Ci0gIG15ICRvYmpl
Y3QgPSBzaGlmdDsKLSAgbXkgJGZpbGVOYW1lID0gc2hpZnQ7Ci0gIG15ICRkZWZpbmVzID0gc2hp
ZnQ7Ci0gIAotICBwcmludCAiIHwgKioqIFN0YXJ0aW5nIHRvIHBhcnNlICRmaWxlTmFtZS4uLlxu
IHxcbiIgaWYoISRiZVF1aWV0KTsKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGZp
bGVOYW1lID0gc2hpZnQ7CisgICAgbXkgJGRlZmluZXMgPSBzaGlmdDsKKworICAgIHByaW50ICIg
fCAqKiogU3RhcnRpbmcgdG8gcGFyc2UgJGZpbGVOYW1lLi4uXG4gfFxuIiB1bmxlc3MgJGJlUXVp
ZXQ7CisKKyAgICBvcGVuIEZJTEUsICItfCIsICIvdXNyL2Jpbi9nY2MiLCAiLUUiLCAiLVAiLCAi
LXgiLCAiYysrIiwgCisgICAgICAgIChtYXAgeyAiLUQkXyIgfSBzcGxpdCgvIC8sICRkZWZpbmVz
KSksICRmaWxlTmFtZSBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRmaWxlTmFtZSI7CisgICAgbXkg
QGRvY3VtZW50Q29udGVudCA9IDxGSUxFPjsKKyAgICBjbG9zZSBGSUxFOworCisgICAgbXkgJGRh
dGFBdmFpbGFibGUgPSAwOworCisgICAgIyBTaW1wbGUgSURMIFBhcnNlciAodG0pCisgICAgZm9y
ZWFjaCAoQGRvY3VtZW50Q29udGVudCkgeworICAgICAgICBteSAkbmV3UGFyc2VNb2RlID0gJG9i
amVjdC0+RGV0ZXJtaW5lUGFyc2VNb2RlKCRfKTsKKworICAgICAgICBpZiAoJG5ld1BhcnNlTW9k
ZSBuZSBNT0RFX1VOREVGKSB7CisgICAgICAgICAgICBpZiAoJGRhdGFBdmFpbGFibGUgZXEgMCkg
eworICAgICAgICAgICAgICAgICRkYXRhQXZhaWxhYmxlID0gMTsgIyBTdGFydCBub2RlIGJ1aWxk
aW5nLi4uCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRvYmplY3QtPlBy
b2Nlc3NTZWN0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICBvcGVuIEZJTEUs
ICItfCIsICIvdXNyL2Jpbi9nY2MiLCAiLUUiLCAiLVAiLCAiLXgiLCAiYysrIiwgCi0gICAgICAo
bWFwIHsgIi1EJF8iIH0gc3BsaXQoLyAvLCAkZGVmaW5lcykpLCAkZmlsZU5hbWUgb3IgZGllICJD
b3VsZCBub3Qgb3BlbiAkZmlsZU5hbWUiOwotICBteSBAZG9jdW1lbnRDb250ZW50ID0gPEZJTEU+
OwotICBjbG9zZSBGSUxFOwotCi0gIG15ICRkYXRhQXZhaWxhYmxlID0gMDsKLQotICAjIFNpbXBs
ZSBJREwgUGFyc2VyICh0bSkKLSAgZm9yZWFjaChAZG9jdW1lbnRDb250ZW50KSB7Ci0gICAgbXkg
JG5ld1BhcnNlTW9kZSA9ICRvYmplY3QtPkRldGVybWluZVBhcnNlTW9kZSgkXyk7Ci0KLSAgICBp
ZigkbmV3UGFyc2VNb2RlIG5lIE1PREVfVU5ERUYpIHsKLSAgICAgIGlmKCRkYXRhQXZhaWxhYmxl
IGVxIDApIHsKLSAgICAgICAgJGRhdGFBdmFpbGFibGUgPSAxOyAjIFN0YXJ0IG5vZGUgYnVpbGRp
bmcuLi4KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICRvYmplY3QtPlByb2Nlc3NTZWN0aW9uKCk7
Ci0gICAgICB9Ci0gICAgfQorICAgICAgICAjIFVwZGF0ZSBkZXRlY3RlZCBkYXRhIHN0cmVhbSBt
b2RlLi4uCisgICAgICAgIGlmICgkbmV3UGFyc2VNb2RlIG5lIE1PREVfVU5ERUYpIHsKKyAgICAg
ICAgICAgICRwYXJzZU1vZGUgPSAkbmV3UGFyc2VNb2RlOworICAgICAgICB9CiAKLSAgICAjIFVw
ZGF0ZSBkZXRlY3RlZCBkYXRhIHN0cmVhbSBtb2RlLi4uCi0gICAgaWYoJG5ld1BhcnNlTW9kZSBu
ZSBNT0RFX1VOREVGKSB7Ci0gICAgICAkcGFyc2VNb2RlID0gJG5ld1BhcnNlTW9kZTsKKyAgICAg
ICAgcHVzaChAdGVtcG9yYXJ5Q29udGVudCwgJF8pOwogICAgIH0KIAotICAgIHB1c2goQHRlbXBv
cmFyeUNvbnRlbnQsICRfKTsKLSAgfQorICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgYW55dGhpbmcg
cmVtYWluaW5nIHRvIHBhcnNlLi4uCisgICAgaWYgKCgkcGFyc2VNb2RlIG5lIE1PREVfVU5ERUYp
IGFuZCAoJCN0ZW1wb3JhcnlDb250ZW50ID4gMCkpIHsKKyAgICAgICAgJG9iamVjdC0+UHJvY2Vz
c1NlY3Rpb24oKTsKKyAgICB9CiAKLSAgIyBDaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyByZW1h
aW5pbmcgdG8gcGFyc2UuLi4KLSAgaWYoKCRwYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgYW5kICgk
I3RlbXBvcmFyeUNvbnRlbnQgPiAwKSkgewotICAgICRvYmplY3QtPlByb2Nlc3NTZWN0aW9uKCk7
Ci0gIH0KKyAgICBwcmludCAiIHwgKioqIEZpbmlzaGVkIHBhcnNpbmchXG4iIHVubGVzcyAkYmVR
dWlldDsKKyAKKyAgICAkZG9jdW1lbnQtPmZpbGVOYW1lKCRmaWxlTmFtZSk7CiAKLSAgcHJpbnQg
IiB8ICoqKiBGaW5pc2hlZCBwYXJzaW5nIVxuIiBpZighJGJlUXVpZXQpOwotICAKLSAgJGRvY3Vt
ZW50LT5maWxlTmFtZSgkZmlsZU5hbWUpOwotICAKLSAgcmV0dXJuICRkb2N1bWVudDsKKyAgICBy
ZXR1cm4gJGRvY3VtZW50OwogfQogCiBzdWIgUGFyc2VNb2R1bGUKIHsKLSAgbXkgJG9iamVjdCA9
IHNoaWZ0OwotICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7
CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAKLSAgcHJpbnQgIiB8LSBUcnlpbmcgdG8gcGFy
c2UgbW9kdWxlLi4uXG4iIGlmKCEkYmVRdWlldCk7CisgICAgcHJpbnQgIiB8LSBUcnlpbmcgdG8g
cGFyc2UgbW9kdWxlLi4uXG4iIHVubGVzcyAkYmVRdWlldDsKIAotICBteSAkZGF0YSA9IGpvaW4o
IiIsIEB0ZW1wb3JhcnlDb250ZW50KTsKLSAgJGRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6Om1vZHVs
ZVNlbGVjdG9yLzsKKyAgICBteSAkZGF0YSA9IGpvaW4oIiIsIEB0ZW1wb3JhcnlDb250ZW50KTsK
KyAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6bW9kdWxlU2VsZWN0b3IvOwogCi0gIG15ICRt
b2R1bGVOYW1lID0gKGRlZmluZWQoJDEpID8gJDEgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kZGF0YVxuKSIpKTsKLSAgJGRhdGFOb2RlLT5tb2R1bGUoJG1vZHVsZU5hbWUpOworICAg
IG15ICRtb2R1bGVOYW1lID0gKGRlZmluZWQoJDEpID8gJDEgOiBkaWUoIlBhcnNpbmcgZXJyb3Ih
XG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKKyAgICAkZGF0YU5vZGUtPm1vZHVsZSgkbW9kdWxlTmFt
ZSk7CiAKLSAgcHJpbnQgIiAgfC0tLS0+IE1vZHVsZTsgTkFNRSBcIiRtb2R1bGVOYW1lXCJcbiB8
LVxuIHxcbiIgaWYoISRiZVF1aWV0KTsKKyAgICBwcmludCAiICB8LS0tLT4gTW9kdWxlOyBOQU1F
IFwiJG1vZHVsZU5hbWVcIlxuIHwtXG4gfFxuIiB1bmxlc3MgJGJlUXVpZXQ7CiB9CiAKIHN1YiBk
dW1wRXh0ZW5kZWRBdHRyaWJ1dGVzCiB7Ci0gIG15ICRwYWRTdHIgPSBzaGlmdDsKLSAgbXkgJGF0
dHJzID0gc2hpZnQ7CisgICAgbXkgJHBhZFN0ciA9IHNoaWZ0OworICAgIG15ICRhdHRycyA9IHNo
aWZ0OwogCi0gIGlmICghJXskYXR0cnN9KSB7Ci0gICAgcmV0dXJuICIiOwotICB9Ci0KLSAgbXkg
QHRlbXA7Ci0gIHdoaWxlICgoJG5hbWUsICR2YWx1ZSkgPSBlYWNoKCV7JGF0dHJzfSkpIHsKLSAg
ICBwdXNoKEB0ZW1wLCAiJG5hbWU9JHZhbHVlIik7Ci0gIH0KLSAgCi0gIHJldHVybiAkcGFkU3Ry
IC4gIlsiIC4gam9pbigiLCAiLCBAdGVtcCkgLiAiXSI7CisgICAgaWYgKCEleyRhdHRyc30pIHsK
KyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKworICAgIG15IEB0ZW1wOworICAgIHdoaWxlICgo
JG5hbWUsICR2YWx1ZSkgPSBlYWNoKCV7JGF0dHJzfSkpIHsKKyAgICAgICAgcHVzaChAdGVtcCwg
IiRuYW1lPSR2YWx1ZSIpOworICAgIH0KKworICAgIHJldHVybiAkcGFkU3RyIC4gIlsiIC4gam9p
bigiLCAiLCBAdGVtcCkgLiAiXSI7CiB9CiAKIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlcwog
ewotICBteSAkc3RyID0gc2hpZnQ7Ci0gICRzdHIgPX4gcy9cW1xzKiguKilcXS8kMS9nOwotICAK
LSAgbXkgJWF0dHJzID0gKCk7Ci0gIAotICBmb3JlYWNoIG15ICR2YWx1ZSAoc3BsaXQoL1xzKixc
cyovLCAkc3RyKSkgewotICAgICgkbmFtZSwkdmFsdWUpID0gc3BsaXQoL1xzKj1ccyovLCR2YWx1
ZSwyKTsKKyAgICBteSAkc3RyID0gc2hpZnQ7CisgICAgJHN0ciA9fiBzL1xbXHMqKC4qKVxdLyQx
L2c7CiAKLSAgICAjIEF0dHJpYnV0ZXMgd2l0aCBubyB2YWx1ZSBhcmUgc2V0IHRvIGJlIHRydWUK
LSAgICAkdmFsdWUgPSAxIHVubGVzcyBkZWZpbmVkICR2YWx1ZTsKLSAgICAkYXR0cnN7JG5hbWV9
ID0gJHZhbHVlOwotICB9Ci0gIAotICByZXR1cm4gXCVhdHRyczsKKyAgICBteSAlYXR0cnMgPSAo
KTsKKworICAgIGZvcmVhY2ggbXkgJHZhbHVlIChzcGxpdCgvXHMqLFxzKi8sICRzdHIpKSB7Cisg
ICAgICAgICgkbmFtZSwkdmFsdWUpID0gc3BsaXQoL1xzKj1ccyovLCAkdmFsdWUsIDIpOworCisg
ICAgICAgICMgQXR0cmlidXRlcyB3aXRoIG5vIHZhbHVlIGFyZSBzZXQgdG8gYmUgdHJ1ZQorICAg
ICAgICAkdmFsdWUgPSAxIHVubGVzcyBkZWZpbmVkICR2YWx1ZTsKKyAgICAgICAgJGF0dHJzeyRu
YW1lfSA9ICR2YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gXCVhdHRyczsKIH0KIAogc3ViIFBh
cnNlSW50ZXJmYWNlCiB7Ci0gIG15ICRvYmplY3QgPSBzaGlmdDsKLSAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7Ci0gIG15ICRzZWN0aW9uTmFtZSA9IHNoaWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlm
dDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkc2VjdGlvbk5hbWUgPSBzaGlm
dDsKKworICAgIG15ICRkYXRhID0gam9pbigiIiwgQHRlbXBvcmFyeUNvbnRlbnQpOworCisgICAg
IyBMb29rIGZvciBlbmQtb2YtaW50ZXJmYWNlIG1hcmsKKyAgICAkZGF0YSA9fiAvfTsvZzsKKyAg
ICAkZGF0YSA9IHN1YnN0cigkZGF0YSwgaW5kZXgoJGRhdGEsICRzZWN0aW9uTmFtZSksIHBvcygk
ZGF0YSkgLSBsZW5ndGgoJGRhdGEpKTsKKworICAgICRkYXRhID1+IHMvW1xuXHJdLy9nOworCisg
ICAgIyBCZWdpbm5pbmcgb2YgdGhlIHJlZ2V4cCBwYXJzaW5nIG1hZ2ljCisgICAgaWYgKCRzZWN0
aW9uTmFtZSBlcSAiZXhjZXB0aW9uIikgeworICAgICAgICBwcmludCAiIHwtIFRyeWluZyB0byBw
YXJzZSBleGNlcHRpb24uLi5cbiIgdW5sZXNzICRiZVF1aWV0OworCisgICAgICAgIG15ICRleGNl
cHRpb25OYW1lID0gIiI7CisgICAgICAgIG15ICRleGNlcHRpb25EYXRhID0gIiI7CisgICAgICAg
IG15ICRleGNlcHRpb25EYXRhTmFtZSA9ICIiOworICAgICAgICBteSAkZXhjZXB0aW9uRGF0YVR5
cGUgPSAiIjsKKworICAgICAgICAjIE1hdGNoIGlkZW50aWZpZXIgb2YgdGhlIGV4Y2VwdGlvbiwg
YW5kIGVuY2xvc2VkIGRhdGEuLi4KKyAgICAgICAgJGRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6OmV4
Y2VwdGlvblNlbGVjdG9yLzsKKyAgICAgICAgJGV4Y2VwdGlvbk5hbWUgPSAoZGVmaW5lZCgkMSkg
PyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAg
ICAkZXhjZXB0aW9uRGF0YSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGRhdGFcbikiKSk7CiAKLSAgbXkgJGRhdGEgPSBqb2luKCIiLCBAdGVtcG9y
YXJ5Q29udGVudCk7CisgICAgICAgICgnJyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVk
ZWQgZm9yIHJlZ2V4cCBtYXRjaGluZwogCi0gICMgTG9vayBmb3IgZW5kLW9mLWludGVyZmFjZSBt
YXJrCi0gICRkYXRhID1+IC99Oy9nOwotICAkZGF0YSA9IHN1YnN0cigkZGF0YSwgaW5kZXgoJGRh
dGEsICRzZWN0aW9uTmFtZSksIHBvcygkZGF0YSkgLSBsZW5ndGgoJGRhdGEpKTsKKyAgICAgICAg
IyAuLi4gcGFyc2UgZW5jbG9zZWQgZGF0YSAoZ2V0LiBuYW1lICYgdHlwZSkKKyAgICAgICAgJGV4
Y2VwdGlvbkRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6OmV4Y2VwdGlvblN1YlNlbGVjdG9yLzsKKyAg
ICAgICAgJGV4Y2VwdGlvbkRhdGFUeXBlID0gKGRlZmluZWQoJDEpID8gJDEgOiBkaWUoIlBhcnNp
bmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKKyAgICAgICAgJGV4Y2VwdGlvbkRhdGFO
YW1lID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4k
ZGF0YVxuKSIpKTsKIAotICAkZGF0YSA9fiBzL1tcblxyXS8vZzsKKyAgICAgICAgIyBGaWxsIGlu
IGRvbUNsYXNzIGRhdGFzdHJ1Y3R1cmUKKyAgICAgICAgJGRhdGFOb2RlLT5uYW1lKCRleGNlcHRp
b25OYW1lKTsKIAotICAjIEJlZ2lubmluZyBvZiB0aGUgcmVnZXhwIHBhcnNpbmcgbWFnaWMKLSAg
aWYoJHNlY3Rpb25OYW1lIGVxICJleGNlcHRpb24iKSB7Ci0gICAgcHJpbnQgIiB8LSBUcnlpbmcg
dG8gcGFyc2UgZXhjZXB0aW9uLi4uXG4iIGlmKCEkYmVRdWlldCk7CisgICAgICAgIG15ICRuZXdE
YXRhTm9kZSA9IG5ldyBkb21BdHRyaWJ1dGUoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT50eXBl
KCJyZWFkb25seSBhdHRyaWJ1dGUiKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUo
bmV3IGRvbVNpZ25hdHVyZSgpKTsKKworICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
bmFtZSgkZXhjZXB0aW9uRGF0YU5hbWUpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVy
ZS0+dHlwZSgkZXhjZXB0aW9uRGF0YVR5cGUpOwogCi0gICAgbXkgJGV4Y2VwdGlvbk5hbWUgPSAi
IjsgbXkgJGV4Y2VwdGlvbkRhdGEgPSAiIjsKLSAgICBteSAkZXhjZXB0aW9uRGF0YU5hbWUgPSAi
IjsgbXkgJGV4Y2VwdGlvbkRhdGFUeXBlID0gIiI7CisgICAgICAgIG15ICRhcnJheVJlZiA9ICRk
YXRhTm9kZS0+YXR0cmlidXRlczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbmV3RGF0YU5v
ZGUpOworCisgICAgICAgIHByaW50ICIgIHwtLS0tPiBFeGNlcHRpb247IE5BTUUgXCIkZXhjZXB0
aW9uTmFtZVwiIERBVEEgVFlQRSBcIiRleGNlcHRpb25EYXRhVHlwZVwiIERBVEEgTkFNRSBcIiRl
eGNlcHRpb25EYXRhTmFtZVwiXG4gfC1cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsKKyAgICB9IGVs
c2lmICgkc2VjdGlvbk5hbWUgZXEgImludGVyZmFjZSIpIHsKKyAgICAgICAgcHJpbnQgIiB8LSBU
cnlpbmcgdG8gcGFyc2UgaW50ZXJmYWNlLi4uXG4iIHVubGVzcyAkYmVRdWlldDsKKworICAgICAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICIiOworICAgICAgICBteSAkaW50ZXJmYWNlRGF0YSA9ICIi
OworCisgICAgICAgICMgTWF0Y2ggaWRlbnRpZmllciBvZiB0aGUgaW50ZXJmYWNlLCBhbmQgZW5j
bG9zZWQgZGF0YS4uLgorICAgICAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNl
U2VsZWN0b3IvOworCisgICAgICAgICRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVm
aW5lZCgkMSkgPyAkMSA6ICIgIik7IGNob3AoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyk7
CisgICAgICAgICRpbnRlcmZhY2VOYW1lID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNp
bmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKKyAgICAgICAgJGludGVyZmFjZUJhc2Ug
PSAoZGVmaW5lZCgkMykgPyAkMyA6ICIiKTsKKyAgICAgICAgJGludGVyZmFjZURhdGEgPSAoZGVm
aW5lZCgkNCkgPyAkNCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikp
OworCisgICAgICAgICMgRmlsbCBpbiBrbm93biBwYXJ0cyBvZiB0aGUgZG9tQ2xhc3MgZGF0YXN0
cnVjdHVyZSBub3cuLi4KKyAgICAgICAgJGRhdGFOb2RlLT5uYW1lKCRpbnRlcmZhY2VOYW1lKTsK
KyAgICAgICAgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJp
YnV0ZXMoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcykpOworCisgICAgICAgICMgSW5oZXJp
dGFuY2UgZGV0ZWN0aW9uCisgICAgICAgIG15IEBpbnRlcmZhY2VQYXJlbnRzID0gc3BsaXQoLywv
LCAkaW50ZXJmYWNlQmFzZSk7CisgICAgICAgIGZvcmVhY2goQGludGVyZmFjZVBhcmVudHMpIHsK
KyAgICAgICAgICAgIG15ICRsaW5lID0gJF87CisgICAgICAgICAgICAkbGluZSA9fiBzL1xzKi8v
ZzsKKworICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5wYXJlbnRzOworICAg
ICAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbGluZSk7CisgICAgICAgIH0KKworICAgICAgICAk
aW50ZXJmYWNlRGF0YSA9fiBzL1tcblxyXS8vZzsKKyAgICAgICAgbXkgQGludGVyZmFjZU1ldGhv
ZHMgPSBzcGxpdCgvOy8sICRpbnRlcmZhY2VEYXRhKTsKKworICAgICAgICBmb3JlYWNoIG15ICRs
aW5lIChAaW50ZXJmYWNlTWV0aG9kcykgeworICAgICAgICAgICAgaWYgKCRsaW5lID1+IC9hdHRy
aWJ1dGUvKSB7CisgICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVy
ZmFjZUF0dHJpYnV0ZVNlbGVjdG9yLzsKKworICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVU
eXBlID0gKGRlZmluZWQoJDEpID8gJDEgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4k
bGluZVxuKSIpKTsKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlRXh0ZW5kZWRBdHRyaWJ1
dGVzID0gKGRlZmluZWQoJDIpID8gJDIgOiAiICIpOyBjaG9wKCRhdHRyaWJ1dGVFeHRlbmRlZEF0
dHJpYnV0ZXMpOworCisgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZURhdGFUeXBlID0gKGRl
ZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIp
KTsKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlRGF0YU5hbWUgPSAoZGVmaW5lZCgkNCkg
PyAkNCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwogICAKLSAg
ICAjIE1hdGNoIGlkZW50aWZpZXIgb2YgdGhlIGV4Y2VwdGlvbiwgYW5kIGVuY2xvc2VkIGRhdGEu
Li4KLSAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU2VsZWN0b3IvOwotICAg
ICRleGNlcHRpb25OYW1lID0gKGRlZmluZWQoJDEpID8gJDEgOiBkaWUoIlBhcnNpbmcgZXJyb3Ih
XG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKLSAgICAkZXhjZXB0aW9uRGF0YSA9IChkZWZpbmVkKCQy
KSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7Ci0KLSAg
ICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hp
bmcKLQotICAgICMgLi4uIHBhcnNlIGVuY2xvc2VkIGRhdGEgKGdldC4gbmFtZSAmIHR5cGUpCi0g
ICAgJGV4Y2VwdGlvbkRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6OmV4Y2VwdGlvblN1YlNlbGVjdG9y
LzsKLSAgICAkZXhjZXB0aW9uRGF0YVR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFy
c2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotICAgICRleGNlcHRpb25EYXRhTmFt
ZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRh
dGFcbikiKSk7Ci0KLSAgICAjIEZpbGwgaW4gZG9tQ2xhc3MgZGF0YXN0cnVjdHVyZQotICAgICRk
YXRhTm9kZS0+bmFtZSgkZXhjZXB0aW9uTmFtZSk7Ci0KLSAgICBteSAkbmV3RGF0YU5vZGUgPSBu
ZXcgZG9tQXR0cmlidXRlKCk7Ci0gICAgJG5ld0RhdGFOb2RlLT50eXBlKCJyZWFkb25seSBhdHRy
aWJ1dGUiKTsKLSAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkp
OwotCi0gICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoJGV4Y2VwdGlvbkRhdGFOYW1l
KTsKLSAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkZXhjZXB0aW9uRGF0YVR5cGUp
OwotICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5oYXNQdHJGbGFnKDApOwotCi0gICAgbXkg
JGFycmF5UmVmID0gJGRhdGFOb2RlLT5hdHRyaWJ1dGVzOwotICAgIHB1c2goQCRhcnJheVJlZiwg
JG5ld0RhdGFOb2RlKTsKLQotICAgIHByaW50ICIgIHwtLS0tPiBFeGNlcHRpb247IE5BTUUgXCIk
ZXhjZXB0aW9uTmFtZVwiIERBVEEgVFlQRSBcIiRleGNlcHRpb25EYXRhVHlwZVwiIERBVEEgTkFN
RSBcIiRleGNlcHRpb25EYXRhTmFtZVwiXG4gfC1cbiB8XG4iIGlmKCEkYmVRdWlldCk7Ci0gIH0g
ZWxzaWYoJHNlY3Rpb25OYW1lIGVxICJpbnRlcmZhY2UiKSB7Ci0gICAgcHJpbnQgIiB8LSBUcnlp
bmcgdG8gcGFyc2UgaW50ZXJmYWNlLi4uXG4iIGlmKCEkYmVRdWlldCk7CisgICAgICAgICAgICAg
ICAgKCcnID1+IC9eLyk7ICMgUmVzZXQgdmFyaWFibGVzIG5lZWRlZCBmb3IgcmVnZXhwIG1hdGNo
aW5nCiAKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICIiOwotICAgIG15ICRpbnRlcmZhY2VEYXRh
ID0gIiI7Ci0gICAgCi0gICAgIyBNYXRjaCBpZGVudGlmaWVyIG9mIHRoZSBpbnRlcmZhY2UsIGFu
ZCBlbmNsb3NlZCBkYXRhLi4uCi0gICAgJGRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFj
ZVNlbGVjdG9yLzsKLSAgICAKLSAgICAkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRl
ZmluZWQoJDEpID8gJDEgOiAiICIpOyBjaG9wKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMp
OwotICAgICRpbnRlcmZhY2VOYW1lID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcg
ZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKLSAgICAkaW50ZXJmYWNlQmFzZSA9IChkZWZp
bmVkKCQzKSA/ICQzIDogIiIpOwotICAgICRpbnRlcmZhY2VEYXRhID0gKGRlZmluZWQoJDQpID8g
JDQgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKLQotICAgICMg
RmlsbCBpbiBrbm93biBwYXJ0cyBvZiB0aGUgZG9tQ2xhc3MgZGF0YXN0cnVjdHVyZSBub3cuLi4K
LSAgICAkZGF0YU5vZGUtPm5hbWUoJGludGVyZmFjZU5hbWUpOwotICAgICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRpbnRlcmZhY2VFeHRlbmRl
ZEF0dHJpYnV0ZXMpKTsKLQotICAgICMgSW5oZXJpdGFuY2UgZGV0ZWN0aW9uCi0gICAgbXkgQGlu
dGVyZmFjZVBhcmVudHMgPSBzcGxpdCgvLC8sICRpbnRlcmZhY2VCYXNlKTsKLSAgICBmb3JlYWNo
KEBpbnRlcmZhY2VQYXJlbnRzKSB7Ci0gICAgICBteSAkbGluZSA9ICRfOwotICAgICAgJGxpbmUg
PX4gcy9ccyovL2c7CisgICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6Omdl
dHRlclJhaXNlc1NlbGVjdG9yLzsKKyAgICAgICAgICAgICAgICBteSAkZ2V0dGVyRXhjZXB0aW9u
ID0gKGRlZmluZWQoJDEpID8gJDEgOiAiIik7CiAKLSAgICAgIG15ICRhcnJheVJlZiA9ICRkYXRh
Tm9kZS0+cGFyZW50czsKLSAgICAgIHB1c2goQCRhcnJheVJlZiwgJGxpbmUpOwotICAgIH0KKyAg
ICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6c2V0dGVyUmFpc2VzU2VsZWN0
b3IvOworICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJFeGNlcHRpb24gPSAoZGVmaW5lZCgkMSkg
PyAkMSA6ICIiKTsKIAotICAgICRpbnRlcmZhY2VEYXRhID1+IHMvW1xuXHJdLy9nOwotICAgIG15
IEBpbnRlcmZhY2VNZXRob2RzID0gc3BsaXQoLzsvLCAkaW50ZXJmYWNlRGF0YSk7CisgICAgICAg
ICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUF0dHJpYnV0ZSgpOworICAgICAgICAg
ICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgkYXR0cmlidXRlVHlwZSk7CisgICAgICAgICAgICAg
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKIAotICAgIGZv
cmVhY2goQGludGVyZmFjZU1ldGhvZHMpIHsKLSAgICAgIG15ICRsaW5lID0gJF87CisgICAgICAg
ICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoJGF0dHJpYnV0ZURhdGFOYW1l
KTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkYXR0cmli
dXRlRGF0YVR5cGUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGF0dHJpYnV0ZUV4dGVu
ZGVkQXR0cmlidXRlcykpOwogCi0gICAgICBpZigkbGluZSA9fiAvYXR0cmlidXRlLykgewotICAg
ICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlQXR0cmlidXRlU2VsZWN0b3Iv
OworICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRkYXRhTm9kZS0+YXR0cmlidXRlczsK
KyAgICAgICAgICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRuZXdEYXRhTm9kZSk7CiAKLSAgICAg
ICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICBteSAkYXR0cmlidXRlRXh0ZW5k
ZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDIpID8gJDIgOiAiICIpOyBjaG9wKCRhdHRyaWJ1dGVF
eHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAgICAKLSAgICAgICAgbXkgJGF0dHJpYnV0ZURhdGFU
eXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4k
bGluZVxuKSIpKTsKLSAgICAgICAgbXkgJGF0dHJpYnV0ZURhdGFOYW1lID0gKGRlZmluZWQoJDQp
ID8gJDQgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAg
ICAgICAKLSAgICAgICAgKCcnID1+IC9eLyk7ICMgUmVzZXQgdmFyaWFibGVzIG5lZWRlZCBmb3Ig
cmVnZXhwIG1hdGNoaW5nCi0gICAgICAgIAotICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVy
ZTo6Z2V0dGVyUmFpc2VzU2VsZWN0b3IvOwotICAgICAgICBteSAkZ2V0dGVyRXhjZXB0aW9uID0g
KGRlZmluZWQoJDEpID8gJDEgOiAiIik7Ci0gICAgICAKLSAgICAgICAgJGxpbmUgPX4gLyRJRExT
dHJ1Y3R1cmU6OnNldHRlclJhaXNlc1NlbGVjdG9yLzsKLSAgICAgICAgbXkgJHNldHRlckV4Y2Vw
dGlvbiA9IChkZWZpbmVkKCQxKSA/ICQxIDogIiIpOwotICAgICAgCi0gICAgICAgIG15ICRuZXdE
YXRhTm9kZSA9IG5ldyBkb21BdHRyaWJ1dGUoKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT50eXBl
KCRhdHRyaWJ1dGVUeXBlKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRv
bVNpZ25hdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBwcmludCAiICB8ICB8PiAgQXR0cmlidXRl
OyBUWVBFIFwiJGF0dHJpYnV0ZVR5cGVcIiBEQVRBIE5BTUUgXCIkYXR0cmlidXRlRGF0YU5hbWVc
IiBEQVRBIFRZUEUgXCIkYXR0cmlidXRlRGF0YVR5cGVcIiBHRVQgRVhDRVBUSU9OPyBcIiRnZXR0
ZXJFeGNlcHRpb25cIiBTRVQgRVhDRVBUSU9OPyBcIiRzZXR0ZXJFeGNlcHRpb25cIiIgLgorICAg
ICAgICAgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAg
ICAgICAgIiwgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAi
XG4iIHVubGVzcyAkYmVRdWlldDsKIAotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
bmFtZSgkYXR0cmlidXRlRGF0YU5hbWUpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVy
ZS0+dHlwZSgkYXR0cmlidXRlRGF0YVR5cGUpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRhdHRyaWJ1
dGVFeHRlbmRlZEF0dHJpYnV0ZXMpKTsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyRXhjZXB0aW9u
ID1+IHMvXHMrLy9nOworICAgICAgICAgICAgICAgICRzZXR0ZXJFeGNlcHRpb24gPX4gcy9ccysv
L2c7CisgICAgICAgICAgICAgICAgQHskbmV3RGF0YU5vZGUtPmdldHRlckV4Y2VwdGlvbnN9ID0g
c3BsaXQoLywvLCAkZ2V0dGVyRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBAeyRuZXdEYXRh
Tm9kZS0+c2V0dGVyRXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRzZXR0ZXJFeGNlcHRpb24pOwor
ICAgICAgICAgICAgfSBlbHNpZiAoKCRsaW5lICF+IHMvXlxzKiQvL2cpIGFuZCAoJGxpbmUgIX4g
L15ccytjb25zdC8pKSB7CisgICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6
OmludGVyZmFjZU1ldGhvZFNlbGVjdG9yLyBvciBkaWUgIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6
XG4kbGluZVxuKSI7CiAKLSAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5hdHRyaWJ1
dGVzOwotICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRuZXdEYXRhTm9kZSk7CisgICAgICAgICAg
ICAgICAgbXkgJG1ldGhvZEV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVkKCQxKSA/ICQxIDog
IiAiKTsgY2hvcCgkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgICAgICBt
eSAkbWV0aG9kVHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxu
U291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAgICAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAo
ZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4p
IikpOworICAgICAgICAgICAgICAgIG15ICRtZXRob2RTaWduYXR1cmUgPSAoZGVmaW5lZCgkNCkg
PyAkNCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwogCi0gICAg
ICAgIHByaW50ICIgIHwgIHw+ICBBdHRyaWJ1dGU7IFRZUEUgXCIkYXR0cmlidXRlVHlwZVwiIERB
VEEgTkFNRSBcIiRhdHRyaWJ1dGVEYXRhTmFtZVwiIERBVEEgVFlQRSBcIiRhdHRyaWJ1dGVEYXRh
VHlwZVwiIEdFVCBFWENFUFRJT04/IFwiJGdldHRlckV4Y2VwdGlvblwiIFNFVCBFWENFUFRJT04/
IFwiJHNldHRlckV4Y2VwdGlvblwiIiAuCi0gICAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJp
YnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAgICAiLCAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAgICAgICAg
ICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hp
bmcKIAotICAgICAgICAkZ2V0dGVyRXhjZXB0aW9uID1+IHMvXHMrLy9nOwotICAgICAgICAkc2V0
dGVyRXhjZXB0aW9uID1+IHMvXHMrLy9nOwotICAgICAgICBAeyRuZXdEYXRhTm9kZS0+Z2V0dGVy
RXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRnZXR0ZXJFeGNlcHRpb24pOwotICAgICAgICBAeyRu
ZXdEYXRhTm9kZS0+c2V0dGVyRXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRzZXR0ZXJFeGNlcHRp
b24pOwotICAgICAgfSBlbHNpZigoJGxpbmUgIX4gcy9eXHMqJC8vZykgYW5kICgkbGluZSAhfiAv
XlxzK2NvbnN0LykpIHsKLSAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFj
ZU1ldGhvZFNlbGVjdG9yLyBvciBkaWUgIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxu
KSI7Ci0KLSAgICAgICAgbXkgJG1ldGhvZEV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVkKCQx
KSA/ICQxIDogIiAiKTsgY2hvcCgkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAg
bXkgJG1ldGhvZFR5cGUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICBteSAkbWV0aG9kTmFtZSA9IChkZWZpbmVk
KCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0g
ICAgICAgIG15ICRtZXRob2RTaWduYXR1cmUgPSAoZGVmaW5lZCgkNCkgPyAkNCA6IGRpZSgiUGFy
c2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICAKLSAgICAgICAgKCcn
ID1+IC9eLyk7ICMgUmVzZXQgdmFyaWFibGVzIG5lZWRlZCBmb3IgcmVnZXhwIG1hdGNoaW5nCi0g
ICAgICAgIAotICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6cmFpc2VzU2VsZWN0b3Iv
OwotICAgICAgICBteSAkbWV0aG9kRXhjZXB0aW9uID0gKGRlZmluZWQoJDEpID8gJDEgOiAiIik7
CisgICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OnJhaXNlc1NlbGVjdG9y
LzsKKyAgICAgICAgICAgICAgICBteSAkbWV0aG9kRXhjZXB0aW9uID0gKGRlZmluZWQoJDEpID8g
JDEgOiAiIik7CiAKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7
CisgICAgICAgICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7CiAK
LSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKLSAg
ICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoJG1ldGhvZE5hbWUpOwotICAgICAg
ICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkbWV0aG9kVHlwZSk7Ci0gICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0
dHJpYnV0ZXMoJG1ldGhvZEV4dGVuZGVkQXR0cmlidXRlcykpOwotCi0gICAgICAgIHByaW50ICIg
IHwgIHwtICBNZXRob2Q7IFRZUEUgXCIkbWV0aG9kVHlwZVwiIE5BTUUgXCIkbWV0aG9kTmFtZVwi
IEVYQ0VQVElPTj8gXCIkbWV0aG9kRXhjZXB0aW9uXCIiIC4KLSAgICAgICAgICBkdW1wRXh0ZW5k
ZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAgICAgIiwgJG5ld0RhdGFOb2RlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIGlmKCEkYmVRdWlldCk7Ci0KLSAgICAgICAg
JG1ldGhvZEV4Y2VwdGlvbiA9fiBzL1xzKy8vZzsKLSAgICAgICAgQHskbmV3RGF0YU5vZGUtPnJh
aXNlc0V4Y2VwdGlvbnN9ID0gc3BsaXQoLywvLCAkbWV0aG9kRXhjZXB0aW9uKTsKLQotICAgICAg
ICBteSBAcGFyYW1zID0gc3BsaXQoLywvLCAkbWV0aG9kU2lnbmF0dXJlKTsKLSAgICAgICAgZm9y
ZWFjaChAcGFyYW1zKSB7Ci0gICAgICAgICAgbXkgJGxpbmUgPSAkXzsKLQotICAgICAgICAgICRs
aW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VQYXJhbWV0ZXJTZWxlY3Rvci87Ci0gICAg
ICAgICAgbXkgJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8gJDEgOiAi
ICIpOyBjaG9wKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICAgbXkgJHBhcmFt
VHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxu
JGxpbmVcbikiKSk7Ci0gICAgICAgICAgbXkgJHBhcmFtTmFtZSA9IChkZWZpbmVkKCQzKSA/ICQz
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0KLSAgICAgICAg
ICBteSAkcGFyYW1EYXRhTm9kZSA9IG5ldyBkb21TaWduYXR1cmUoKTsKLSAgICAgICAgICAkcGFy
YW1EYXRhTm9kZS0+bmFtZSgkcGFyYW1OYW1lKTsKLSAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+
dHlwZSgkcGFyYW1UeXBlKTsKLSAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcykp
OworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1
cmUoKSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoJG1l
dGhvZE5hbWUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBl
KCRtZXRob2RUeXBlKTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRtZXRob2RFeHRlbmRl
ZEF0dHJpYnV0ZXMpKTsKIAotICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRhTm9kZS0+
cGFyYW1ldGVyczsKLSAgICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRwYXJhbURhdGFOb2RlKTsK
KyAgICAgICAgICAgICAgICBwcmludCAiICB8ICB8LSAgTWV0aG9kOyBUWVBFIFwiJG1ldGhvZFR5
cGVcIiBOQU1FIFwiJG1ldGhvZE5hbWVcIiBFWENFUFRJT04/IFwiJG1ldGhvZEV4Y2VwdGlvblwi
IiAuCisgICAgICAgICAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAg
ICAgICAgICAgICAiLCAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KSAuICJcbiIgdW5sZXNzICRiZVF1aWV0OwogCi0gICAgICAgICAgcHJpbnQgIiAgfCAgIHw+ICBQ
YXJhbTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1FIFwiJHBhcmFtTmFtZVwiIiAuIAotICAgICAg
ICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAgICAgICAgICIsICRwYXJh
bURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiBpZighJGJlUXVpZXQpOyAgICAg
ICAgICAKLSAgICAgICAgfQorICAgICAgICAgICAgICAgICRtZXRob2RFeGNlcHRpb24gPX4gcy9c
cysvL2c7CisgICAgICAgICAgICAgICAgQHskbmV3RGF0YU5vZGUtPnJhaXNlc0V4Y2VwdGlvbnN9
ID0gc3BsaXQoLywvLCAkbWV0aG9kRXhjZXB0aW9uKTsKIAotICAgICAgICBteSAkYXJyYXlSZWYg
PSAkZGF0YU5vZGUtPmZ1bmN0aW9uczsKLSAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbmV3RGF0
YU5vZGUpOwotICAgICAgfSBlbHNpZigkbGluZSA9fiAvXlxzK2NvbnN0LykgewotICAgICAgICAk
bGluZSA9fiAvJElETFN0cnVjdHVyZTo6Y29uc3RhbnRTZWxlY3Rvci87Ci0gICAgICAgIG15ICRj
b25zdFR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJj
ZTpcbiRsaW5lXG4pIikpOwotICAgICAgICBteSAkY29uc3ROYW1lID0gKGRlZmluZWQoJDIpID8g
JDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAgICAg
bXkgJGNvbnN0VmFsdWUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOwotCi0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBk
b21Db25zdGFudCgpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPm5hbWUoJGNvbnN0TmFtZSk7Ci0g
ICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgkY29uc3RUeXBlKTsKLSAgICAgICAgJG5ld0RhdGFO
b2RlLT52YWx1ZSgkY29uc3RWYWx1ZSk7CisgICAgICAgICAgICAgICAgbXkgQHBhcmFtcyA9IHNw
bGl0KC8sLywgJG1ldGhvZFNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgZm9yZWFjaChAcGFy
YW1zKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRsaW5lID0gJF87CiAKLSAgICAgICAgbXkg
JGFycmF5UmVmID0gJGRhdGFOb2RlLT5jb25zdGFudHM7Ci0gICAgICAgIHB1c2goQCRhcnJheVJl
ZiwgJG5ld0RhdGFOb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1
Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8gJDEgOiAiICIpOyBj
aG9wKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgICAgICAgICAgICAgIG15ICRw
YXJhbVR5cGUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJj
ZTpcbiRsaW5lXG4pIikpOworICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gKGRl
ZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIp
KTsKIAotICAgICAgICBwcmludCAiICB8ICAgfD4gIENvbnN0YW50OyBUWVBFIFwiJGNvbnN0VHlw
ZVwiIE5BTUUgXCIkY29uc3ROYW1lXCIgVkFMVUUgXCIkY29uc3RWYWx1ZVwiXG4iIGlmKCEkYmVR
dWlldCk7Ci0gICAgICB9Ci0gICAgfQorICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1EYXRh
Tm9kZSA9IG5ldyBkb21TaWduYXR1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtRGF0
YU5vZGUtPm5hbWUoJHBhcmFtTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbURhdGFO
b2RlLT50eXBlKCRwYXJhbVR5cGUpOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1EYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRwYXJhbUV4dGVu
ZGVkQXR0cmlidXRlcykpOworCisgICAgICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRu
ZXdEYXRhTm9kZS0+cGFyYW1ldGVyczsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJGFycmF5
UmVmLCAkcGFyYW1EYXRhTm9kZSk7CisKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgfCAg
IHw+ICBQYXJhbTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1FIFwiJHBhcmFtTmFtZVwiIiAuIAor
ICAgICAgICAgICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAg
ICAgICAgICAgICIsICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiB1
bmxlc3MgJGJlUXVpZXQ7ICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIG15ICRhcnJheVJlZiA9ICRkYXRhTm9kZS0+ZnVuY3Rpb25zOworICAgICAgICAgICAg
ICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKKyAgICAgICAgICAgIH0gZWxzaWYg
KCRsaW5lID1+IC9eXHMrY29uc3QvKSB7CisgICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExT
dHJ1Y3R1cmU6OmNvbnN0YW50U2VsZWN0b3IvOworICAgICAgICAgICAgICAgIG15ICRjb25zdFR5
cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRs
aW5lXG4pIikpOworICAgICAgICAgICAgICAgIG15ICRjb25zdE5hbWUgPSAoZGVmaW5lZCgkMikg
PyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAg
ICAgICAgICAgIG15ICRjb25zdFZhbHVlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNp
bmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKKworICAgICAgICAgICAgICAgIG15ICRu
ZXdEYXRhTm9kZSA9IG5ldyBkb21Db25zdGFudCgpOworICAgICAgICAgICAgICAgICRuZXdEYXRh
Tm9kZS0+bmFtZSgkY29uc3ROYW1lKTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnR5
cGUoJGNvbnN0VHlwZSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT52YWx1ZSgkY29u
c3RWYWx1ZSk7CiAKLSAgICBwcmludCAiICB8LS0tLT4gSW50ZXJmYWNlOyBOQU1FIFwiJGludGVy
ZmFjZU5hbWVcIiIgLgotICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAg
ICAgICAgICAgICAgICAiLCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4gfC1c
biB8XG4iIGlmKCEkYmVRdWlldCk7Ci0gIH0KKyAgICAgICAgICAgICAgICBteSAkYXJyYXlSZWYg
PSAkZGF0YU5vZGUtPmNvbnN0YW50czsKKyAgICAgICAgICAgICAgICBwdXNoKEAkYXJyYXlSZWYs
ICRuZXdEYXRhTm9kZSk7CisKKyAgICAgICAgICAgICAgICBwcmludCAiICB8ICAgfD4gIENvbnN0
YW50OyBUWVBFIFwiJGNvbnN0VHlwZVwiIE5BTUUgXCIkY29uc3ROYW1lXCIgVkFMVUUgXCIkY29u
c3RWYWx1ZVwiXG4iIHVubGVzcyAkYmVRdWlldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHByaW50ICIgIHwtLS0tPiBJbnRlcmZhY2U7IE5BTUUgXCIkaW50ZXJmYWNlTmFt
ZVwiIiAuCisgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAg
ICAgICAgICAgIiwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4gIlxuIHwtXG4gfFxu
IiB1bmxlc3MgJGJlUXVpZXQ7CisgICAgfQogfQogCiAjIEludGVybmFsIGhlbHBlcgogc3ViIERl
dGVybWluZVBhcnNlTW9kZQogewotICBteSAkb2JqZWN0ID0gc2hpZnQ7ICAKLSAgbXkgJGxpbmUg
PSBzaGlmdDsKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7ICAKKyAgICBteSAkbGluZSA9IHNoaWZ0
OwogCi0gIG15ICRtb2RlID0gTU9ERV9VTkRFRjsKLSAgaWYoJF8gPX4gL21vZHVsZS8pIHsKLSAg
ICAkbW9kZSA9IE1PREVfTU9EVUxFOwotICB9IGVsc2lmKCRfID1+IC9pbnRlcmZhY2UvKSB7Ci0g
ICAgJG1vZGUgPSBNT0RFX0lOVEVSRkFDRTsKLSAgfSBlbHNpZigkXyA9fiAvZXhjZXB0aW9uLykg
ewotICAgICRtb2RlID0gTU9ERV9FWENFUFRJT047Ci0gIH0gZWxzaWYoJF8gPX4gL2FsaWFzLykg
ewotICAgICRtb2RlID0gTU9ERV9BTElBUzsKLSAgfQorICAgIG15ICRtb2RlID0gTU9ERV9VTkRF
RjsKKyAgICBpZiAoJF8gPX4gL21vZHVsZS8pIHsKKyAgICAgICAgJG1vZGUgPSBNT0RFX01PRFVM
RTsKKyAgICB9IGVsc2lmICgkXyA9fiAvaW50ZXJmYWNlLykgeworICAgICAgICAkbW9kZSA9IE1P
REVfSU5URVJGQUNFOworICAgIH0gZWxzaWYgKCRfID1+IC9leGNlcHRpb24vKSB7CisgICAgICAg
ICRtb2RlID0gTU9ERV9FWENFUFRJT047CisgICAgfSBlbHNpZiAoJF8gPX4gL2FsaWFzLykgewor
ICAgICAgICAkbW9kZSA9IE1PREVfQUxJQVM7CisgICAgfQogCi0gIHJldHVybiAkbW9kZTsKKyAg
ICByZXR1cm4gJG1vZGU7CiB9CiAKICMgSW50ZXJuYWwgaGVscGVyCiBzdWIgUHJvY2Vzc1NlY3Rp
b24KIHsKLSAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKICAg
Ci0gIGlmKCRwYXJzZU1vZGUgZXEgTU9ERV9NT0RVTEUpIHsKLSAgICBkaWUgKCJUd28gbW9kdWxl
cyBpbiBvbmUgZmlsZSEgRmF0YWwgZXJyb3IhXG4iKSBpZigkZG9jdW1lbnQgbmUgMCk7Ci0gICAg
JGRvY3VtZW50ID0gbmV3IGlkbERvY3VtZW50KCk7Ci0gICAgJG9iamVjdC0+UGFyc2VNb2R1bGUo
JGRvY3VtZW50KTsKLSAgfSBlbHNpZigkcGFyc2VNb2RlIGVxIE1PREVfSU5URVJGQUNFKSB7Ci0g
ICAgbXkgJG5vZGUgPSBuZXcgZG9tQ2xhc3MoKTsKLSAgICAkb2JqZWN0LT5QYXJzZUludGVyZmFj
ZSgkbm9kZSwgImludGVyZmFjZSIpOworICAgIGlmICgkcGFyc2VNb2RlIGVxIE1PREVfTU9EVUxF
KSB7CisgICAgICAgIGRpZSAoIlR3byBtb2R1bGVzIGluIG9uZSBmaWxlISBGYXRhbCBlcnJvciFc
biIpIGlmICgkZG9jdW1lbnQgbmUgMCk7CisgICAgICAgICRkb2N1bWVudCA9IG5ldyBpZGxEb2N1
bWVudCgpOworICAgICAgICAkb2JqZWN0LT5QYXJzZU1vZHVsZSgkZG9jdW1lbnQpOworICAgIH0g
ZWxzaWYgKCRwYXJzZU1vZGUgZXEgTU9ERV9JTlRFUkZBQ0UpIHsKKyAgICAgICAgbXkgJG5vZGUg
PSBuZXcgZG9tQ2xhc3MoKTsKKyAgICAgICAgJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJG5vZGUs
ICJpbnRlcmZhY2UiKTsKICAgICAKLSAgICBkaWUgKCJObyBtb2R1bGUgc3BlY2lmaWVkISBGYXRh
bCBFcnJvciFcbiIpIGlmKCRkb2N1bWVudCBlcSAwKTsKLSAgICBteSAkYXJyYXlSZWYgPSAkZG9j
dW1lbnQtPmNsYXNzZXM7Ci0gICAgcHVzaChAJGFycmF5UmVmLCAkbm9kZSk7Ci0gIH0gZWxzaWYo
JHBhcnNlTW9kZSBlcSBNT0RFX0VYQ0VQVElPTikgewotICAgIG15ICRub2RlID0gbmV3IGRvbUNs
YXNzKCk7Ci0gICAgJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJG5vZGUsICJleGNlcHRpb24iKTsK
LQotICAgIGRpZSAoIk5vIG1vZHVsZSBzcGVjaWZpZWQhIEZhdGFsIEVycm9yIVxuIikgaWYoJGRv
Y3VtZW50IGVxIDApOwotICAgIG15ICRhcnJheVJlZiA9ICRkb2N1bWVudC0+Y2xhc3NlczsKLSAg
ICBwdXNoKEAkYXJyYXlSZWYsICRub2RlKTsKLSAgfSBlbHNpZigkcGFyc2VNb2RlIGVxIE1PREVf
QUxJQVMpIHsKLSAgICBwcmludCAiIHwtIFRyeWluZyB0byBwYXJzZSBhbGlhcy4uLlxuIiBpZigh
JGJlUXVpZXQpOworICAgICAgICBkaWUgKCJObyBtb2R1bGUgc3BlY2lmaWVkISBGYXRhbCBFcnJv
ciFcbiIpIGlmICgkZG9jdW1lbnQgZXEgMCk7CisgICAgICAgIG15ICRhcnJheVJlZiA9ICRkb2N1
bWVudC0+Y2xhc3NlczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbm9kZSk7CisgICAgfSBl
bHNpZigkcGFyc2VNb2RlIGVxIE1PREVfRVhDRVBUSU9OKSB7CisgICAgICAgIG15ICRub2RlID0g
bmV3IGRvbUNsYXNzKCk7CisgICAgICAgICRvYmplY3QtPlBhcnNlSW50ZXJmYWNlKCRub2RlLCAi
ZXhjZXB0aW9uIik7CisKKyAgICAgICAgZGllICgiTm8gbW9kdWxlIHNwZWNpZmllZCEgRmF0YWwg
RXJyb3IhXG4iKSBpZiAoJGRvY3VtZW50IGVxIDApOworICAgICAgICBteSAkYXJyYXlSZWYgPSAk
ZG9jdW1lbnQtPmNsYXNzZXM7CisgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5vZGUpOworICAg
IH0gZWxzaWYoJHBhcnNlTW9kZSBlcSBNT0RFX0FMSUFTKSB7CisgICAgICAgIHByaW50ICIgfC0g
VHJ5aW5nIHRvIHBhcnNlIGFsaWFzLi4uXG4iIHVubGVzcyAkYmVRdWlldDsKICAgICAKLSAgICBt
eSAkbGluZSA9IGpvaW4oIiIsIEB0ZW1wb3JhcnlDb250ZW50KTsKLSAgICAkbGluZSA9fiAvJElE
TFN0cnVjdHVyZTo6YWxpYXNTZWxlY3Rvci87CisgICAgICAgIG15ICRsaW5lID0gam9pbigiIiwg
QHRlbXBvcmFyeUNvbnRlbnQpOworICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6YWxp
YXNTZWxlY3Rvci87CiAKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IChkZWZpbmVkKCQxKSA/ICQx
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgbXkgJHdy
YXBwZXJOYW1lID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kbGluZVxuKSIpKTsKKyAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAoZGVmaW5lZCgk
MSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworICAg
ICAgICBteSAkd3JhcHBlck5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwogICAgIAotICAgIHByaW50ICIgIHwtLS0tPiBB
bGlhczsgSU5URVJGQUNFIFwiJGludGVyZmFjZU5hbWVcIiBXUkFQUEVSIFwiJHdyYXBwZXJOYW1l
XCJcbiB8LVxuIHxcbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAgcHJpbnQgIiAgfC0tLS0+IEFs
aWFzOyBJTlRFUkZBQ0UgXCIkaW50ZXJmYWNlTmFtZVwiIFdSQVBQRVIgXCIkd3JhcHBlck5hbWVc
IlxuIHwtXG4gfFxuIiB1bmxlc3MgJGJlUXVpZXQ7CiAKLSAgICAjIEZJWE1FOiBDaGVjayBpZiBh
bGlhcyBpcyBhbHJlYWR5IGluIGFsaWFzZXMKLSAgICBteSAkYWxpYXNlcyA9ICRkb2N1bWVudC0+
YWxpYXNlczsKLSAgICAkYWxpYXNlcy0+eyRpbnRlcmZhY2VOYW1lfSA9ICR3cmFwcGVyTmFtZTsK
LSAgfQorICAgICAgICAjIEZJWE1FOiBDaGVjayBpZiBhbGlhcyBpcyBhbHJlYWR5IGluIGFsaWFz
ZXMKKyAgICAgICAgbXkgJGFsaWFzZXMgPSAkZG9jdW1lbnQtPmFsaWFzZXM7CisgICAgICAgICRh
bGlhc2VzLT57JGludGVyZmFjZU5hbWV9ID0gJHdyYXBwZXJOYW1lOworICAgIH0KIAotICBAdGVt
cG9yYXJ5Q29udGVudCA9ICIiOworICAgIEB0ZW1wb3JhcnlDb250ZW50ID0gIiI7CiB9CiAKIDE7
Ci0KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L05vZGUuaWRsCShyZXZpc2lvbiAxNjQwOCkKKysrIFdlYkNvcmUvZG9tL05vZGUuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDExIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFVzZXJEYXRhSGFuZGxlciBoYW5kbGVyKTsK
ICAgICAgICAgRE9NVXNlckRhdGEgICAgICAgIGdldFVzZXJEYXRhKGluIERPTVN0cmluZyBrZXkp
OwogI2VuZGlmIC8qICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAqLworCisgICAgICAg
IC8vIGV4dGVuc2lvbnMKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAg
ICAgIGlzQ29udGVudEVkaXRhYmxlOworCiAjZW5kaWYgLyogIWRlZmluZWQoTEFOR1VBR0VfSkFW
QVNDUklQVCkgKi8KICAgICB9OwogCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDA4KQorKysgV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA2LTA5LTE3ICBTYW0gV2Vpbmln
ICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MDMKKyAgICAgICAgWWV0IEFub3RoZXIgT2JqZWN0aXZlLUMg
QmluZGluZ3MgUGF0Y2gKKworICAgICAgICAqIE1pZ3JhdGVIZWFkZXJzLm1ha2U6CisKIDIwMDYt
MDktMTYgIEJyYWR5IEVpZHNvbiA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSHlhdHQKSW5kZXg6IFdlYktpdC9NaWdyYXRlSGVhZGVycy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9NaWdyYXRlSGVhZGVycy5tYWtlCShyZXZpc2lvbiAxNjQwOCkKKysrIFdlYktp
dC9NaWdyYXRlSGVhZGVycy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIFBS
SVZBVEVfSEVBREVSU19ESVIgPSAkKFRBUkdFVF9CVUlMRF9ESVIKIC5QSE9OWSA6IGFsbAogYWxs
IDogXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET00uaCBcCisgICAgJChQVUJMSUNfSEVB
REVSU19ESVIpL0RPTUFic3RyYWN0Vmlldy5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikv
RE9NQXR0ci5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NQ0RBVEFTZWN0aW9uLmgg
XAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01DU1MuaCBcCkBAIC01NCw3ICs1NSw2IEBA
IGFsbCA6IFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NQ29tbWVudC5oIFwKICAgICAk
KFBVQkxJQ19IRUFERVJTX0RJUikvRE9NQ29yZS5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJ
UikvRE9NQ291bnRlci5oIFwKLSAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NSW1wbGVtZW50
YXRpb24uaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTURvY3VtZW50LmggXAogICAg
ICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01Eb2N1bWVudEZyYWdtZW50LmggXAogICAgICQoUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NRG9jdW1lbnRQcml2YXRlLmggXApAQCAtNjQsOSArNjQsMTEg
QEAgYWxsIDogXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01FbnRpdHkuaCBcCiAgICAg
JChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUVudGl0eVJlZmVyZW5jZS5oIFwKICAgICAkKFBVQkxJ
Q19IRUFERVJTX0RJUikvRE9NRXZlbnQuaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RP
TUV2ZW50RXhjZXB0aW9uLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01FdmVudExp
c3RlbmVyLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01FdmVudFRhcmdldC5oIFwK
ICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NRXZlbnRzLmggXAorICAgICQoUFVCTElDX0hF
QURFUlNfRElSKS9ET01FeGNlcHRpb24uaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RP
TUV4dGVuc2lvbnMuaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUhUTUwuaCBcCiAg
ICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUhUTUxBbmNob3JFbGVtZW50LmggXApAQCAtMTM5
LDYgKzE0MSw3IEBAIGFsbCA6IFwKICAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxU
ZXh0QXJlYUVsZW1lbnRQcml2YXRlLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01I
VE1MVGl0bGVFbGVtZW50LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01IVE1MVUxp
c3RFbGVtZW50LmggXAorICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01JbXBsZW1lbnRhdGlv
bi5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NS2V5Ym9hcmRFdmVudC5oIFwKICAg
ICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL0RPTUtleWJvYXJkRXZlbnRQcml2YXRlLmggXAogICAg
ICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01NZWRpYUxpc3QuaCBcCkBAIC0xNjAsNiArMTYzLDcg
QEAgYWxsIDogXAogICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uUHJpdmF0ZS5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NUkdCQ29sb3Iu
aCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVJhbmdlLmggXAorICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01SYW5nZUV4Y2VwdGlvbi5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJT
X0RJUikvRE9NUmVjdC5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NU3R5bGVTaGVl
dC5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NU3R5bGVTaGVldExpc3QuaCBcCkBA
IC0xNzMsNiArMTc3LDcgQEAgYWxsIDogXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01X
aGVlbEV2ZW50LmggXAogICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvRE9NV2hlZWxFdmVudFBy
aXZhdGUuaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVhQYXRoLmggXAorICAgICQo
UFVCTElDX0hFQURFUlNfRElSKS9ET01YUGF0aEV4Y2VwdGlvbi5oIFwKICAgICAkKFBVQkxJQ19I
RUFERVJTX0RJUikvRE9NWFBhdGhFeHByZXNzaW9uLmggXAogICAgICQoUFVCTElDX0hFQURFUlNf
RElSKS9ET01YUGF0aE5TUmVzb2x2ZXIuaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RP
TVhQYXRoUmVzdWx0LmggXAo=
</data>
<flag name="review"
          id="3455"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10614</attachid>
            <date>2006-09-17 19:34:13 -0700</date>
            <delta_ts>2006-09-17 19:34:32 -0700</delta_ts>
            <desc>patch with Tim&apos;s comments addressed</desc>
            <filename>YAOCB.diff</filename>
            <type>text/plain</type>
            <size>108058</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMzIEBACisyMDA2LTA5LTE3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5MDMKKyAgICAgICAgWWV0IEFub3RoZXIgT2JqZWN0aXZlLUMgQmluZGluZ3MgUGF0Y2gKKwor
ICAgICAgICAtIFdoaXRlc3BhY2UgY2xlYW51cCBmb3IgSURMUGFyc2VyLnBtCisKKyAgICAgICAg
LSBBZGQgY29uZGl0aW9uYWwgI2lmZGVmcyAoaWUuICNpZmRlZiBTVkdfU1VQUE9SVCkgdG8gYXV0
by1nZW5lcmF0ZWQKKyAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKworICAgICAgICAt
IFNwbGl0IERPTUV4Y2VwdGlvbiwgRE9NUmFuZ2VFeGNlcHRpb24sIERPTVhQYXRoRXhjZXB0aW9u
LCBET01FdmVudHNFeGNlcHRpb24KKyAgICAgICAgICBhbmQgRE9NQWJzdHJhY3RWaWV3IGludG8g
dGhlaXIgb3duIGZpbGVzLgorCisgICAgICAgIC0gUmVtb3ZlIHByaXZhdGUgbWV0aG9kIFtET01S
R0JDb2xvciBfY29sb3JdIGZyb20gRE9NUHJpdmF0ZS5oIGFzCisgICAgICAgICAgaXQgaXMgbm90
IHVzZWQgYW5kIGEgcHVibGljIG1ldGhvZCBpcyBhdmFpbGFibGUgbm93LgorCisgICAgICAgIC0g
UmVtb3ZlIGludGVybmFsIG1ldGhvZCBbRE9NRG9jdW1lbnQgX293bmVyRWxlbWVudF0gZnJvbSBE
T01JbnRlcm5hbC5oCisgICAgICAgICAgYXMgaXQgbm90IHVzZWQuCisKKyAgICAgICAgLSBBdXRv
LWdlbmVyYXRlIG1ldGhvZCBpc0NvbnRlbnRFZGl0YWJsZSBmb3IgRE9NTm9kZS4KKworICAgICAg
ICAtIEdlbmVyYWwgY2xlYW51cCBvZiBiaW5kaW5ncyBjb2RlIGluY2x1ZGluZyByZW1vdmluZyB1
bm5lZWRlZCAjaW1wb3J0cworICAgICAgICAgIGFuZCB3aGl0ZXNwYWNlIGNsZWFudXAKKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKGFkZEVsZW1lbnRDbGFzcyk6CisgICAgICAgIChl
bGVtZW50Q2xhc3MpOgorICAgICAgICAoLVtET01Ob2RlIF9pbml0V2l0aE5vZGU6V2ViQ29yZTo6
XSk6CisgICAgICAgICgrW0RPTU5vZGUgX25vZGVXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAo
LVtET01Ob2RlIFdlYkNvcmU6Ol0pOgorICAgICAgICAoLVtET01Ob2RlIEtKUzo6QmluZGluZ3M6
Ol0pOgorICAgICAgICAoLVtET01Ob2RlIGFkZEV2ZW50TGlzdGVuZXI6OjpdKToKKyAgICAgICAg
KC1bRE9NTm9kZSByZW1vdmVFdmVudExpc3RlbmVyOjo6XSk6CisgICAgICAgICgtW0RPTU5vZGUg
ZGlzcGF0Y2hFdmVudDpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBpbWFnZV0pOgorICAgICAg
ICAoLVtET01FbGVtZW50IF9mb250XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2ltYWdlVElG
RlJlcHJlc2VudGF0aW9uXSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2dldFVSTEF0dHJpYnV0
ZTpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBfTlBPYmplY3RdKToKKyAgICAgICAgKC1bRE9N
RWxlbWVudCBpc0ZvY3VzZWRdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZGVhbGxvY10pOgorICAg
ICAgICAoLVtET01SYW5nZSBmaW5hbGl6ZV0pOgorICAgICAgICAoLVtET01SYW5nZSBkZXNjcmlw
dGlvbl0pOgorICAgICAgICAoLVtET01SYW5nZSBzdGFydENvbnRhaW5lcl0pOgorICAgICAgICAo
LVtET01SYW5nZSBzdGFydE9mZnNldF0pOgorICAgICAgICAoLVtET01SYW5nZSBlbmRDb250YWlu
ZXJdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZW5kT2Zmc2V0XSk6CisgICAgICAgICgtW0RPTVJh
bmdlIGNvbGxhcHNlZF0pOgorICAgICAgICAoLVtET01SYW5nZSBjb21tb25BbmNlc3RvckNvbnRh
aW5lcl0pOgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydDo6XSk6CisgICAgICAgICgtW0RP
TVJhbmdlIHNldEVuZDo6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHNldFN0YXJ0QmVmb3JlOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydEFmdGVyOl0pOgorICAgICAgICAoLVtET01S
YW5nZSBzZXRFbmRCZWZvcmU6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHNldEVuZEFmdGVyOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBjb2xsYXBzZTpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ug
c2VsZWN0Tm9kZTpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ugc2VsZWN0Tm9kZUNvbnRlbnRzOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBjb21wYXJlQm91bmRhcnlQb2ludHM6Ol0pOgorICAgICAg
ICAoLVtET01SYW5nZSBkZWxldGVDb250ZW50c10pOgorICAgICAgICAoLVtET01SYW5nZSBleHRy
YWN0Q29udGVudHNdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgY2xvbmVDb250ZW50c10pOgorICAg
ICAgICAoLVtET01SYW5nZSBpbnNlcnROb2RlOl0pOgorICAgICAgICAoLVtET01SYW5nZSBzdXJy
b3VuZENvbnRlbnRzOl0pOgorICAgICAgICAoLVtET01SYW5nZSBjbG9uZVJhbmdlXSk6CisgICAg
ICAgICgtW0RPTVJhbmdlIHRvU3RyaW5nXSk6CisgICAgICAgICgtW0RPTVJhbmdlIGRldGFjaF0p
OgorICAgICAgICAoLVtET01SYW5nZSBfaW5pdFdpdGhSYW5nZTpXZWJDb3JlOjpdKToKKyAgICAg
ICAgKCtbRE9NUmFuZ2UgX3JhbmdlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9NUmFu
Z2UgV2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgX2luaXRXaXRoTm9kZUZp
bHRlcjpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldp
dGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgV2ViQ29yZTo6XSk6Cisg
ICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtET01Ob2RlRmls
dGVyIGZpbmFsaXplXSk6CisgICAgICAgICgtW0RPTU5vZGVJdGVyYXRvciBfaW5pdFdpdGhOb2Rl
SXRlcmF0b3I6V2ViQ29yZTo6ZmlsdGVyOl0pOgorICAgICAgICAoLVtET01Ob2RlSXRlcmF0b3Ig
V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTU5vZGVJdGVyYXRvciBfbm9kZUl0ZXJhdG9yV2l0
aDpXZWJDb3JlOjpmaWx0ZXI6XSk6CisgICAgICAgICgtW0RPTVRyZWVXYWxrZXIgX2luaXRXaXRo
VHJlZVdhbGtlcjpXZWJDb3JlOjpmaWx0ZXI6XSk6CisgICAgICAgICgtW0RPTVRyZWVXYWxrZXIg
V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTVRyZWVXYWxrZXIgX3RyZWVXYWxrZXJXaXRoOldl
YkNvcmU6OmZpbHRlcjpdKToKKyAgICAgICAgKE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2Nl
cHROb2RlKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlTm9kZUl0ZXJhdG9yOjo6Ol0p
OgorICAgICAgICAoLVtET01Eb2N1bWVudCBjcmVhdGVUcmVlV2Fsa2VyOjo6Ol0pOgorICAgICAg
ICAoT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQpOgorICAgICAgICAoT2JqQ0V2ZW50TGlzdGVuZXI6
OmNyZWF0ZSk6CisgICAgICAgIChPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lmg6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9N
QWJzdHJhY3RWaWV3IGRvY3VtZW50XSk6CisgICAgICAgICgtW0RPTUFic3RyYWN0VmlldyBXZWJD
b3JlOjpdKToKKyAgICAgICAgKC1bRE9NQWJzdHJhY3RWaWV3IF9pbml0V2l0aEFic3RyYWN0Vmll
dzpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NQWJzdHJhY3RWaWV3IF9hYnN0cmFjdFZpZXdX
aXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTLm1tOgorICAg
ICAgICAoLVtET01TdHlsZVNoZWV0IF9pbml0V2l0aFN0eWxlU2hlZXQ6V2ViQ29yZTo6XSk6Cisg
ICAgICAgICgrW0RPTVN0eWxlU2hlZXQgX3N0eWxlU2hlZXRXaXRoOldlYkNvcmU6Ol0pOgorICAg
ICAgICAoK1tET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpXZWJDb3JlOjpdKToK
KyAgICAgICAgKC1bRE9NQ1NTUnVsZSBfaW5pdFdpdGhSdWxlOldlYkNvcmU6Ol0pOgorICAgICAg
ICAoK1tET01DU1NSdWxlIF9DU1NSdWxlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9N
Q1NTVmFsdWUgX2luaXRXaXRoVmFsdWU6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUNTU1Zh
bHVlIF9DU1NWYWx1ZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUNTU1ByaW1pdGl2
ZVZhbHVlIF9DU1NQcmltaXRpdmVWYWx1ZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RP
TURvY3VtZW50IGdldENvbXB1dGVkU3R5bGU6Ol0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBn
ZXRNYXRjaGVkQ1NTUnVsZXM6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ29yZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRFeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTUV2ZW50cy5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06Cisg
ICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBfY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJr
dXBTdHJpbmc6YmFzZVVSTFN0cmluZzpdKToKKyAgICAgICAgKHZpZXdGb3JFbGVtZW50KToKKyAg
ICAgICAgKC1bRE9NSFRNTElucHV0RWxlbWVudCBfcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOndp
dGhTdHJpbmc6c2VsZWN0aW5nRnJvbUluZGV4Ol0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRF
bGVtZW50IF9zZWxlY3RlZFJhbmdlXSk6CisgICAgICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQg
X3NldEF1dG9maWxsZWQ6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01Qcml2YXRlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2VFeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NVmlld3MubW06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01YUGF0
aC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NWFBhdGhFeGNlcHRpb24uaDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKiBkb20vTm9kZS5p
ZGw6CisKIDIwMDYtMDktMTcgIEJyYWR5IEVpZHNvbiA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FyZ2UKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTYsNiArNDU2LDEwIEBA
CiAJCTg1MThEQ0VBMEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThEQ0U4MEE5
Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSAqLzsgfTsKIAkJODUxOERE
NzgwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERENzYwQTlDRjMxQjAwOTFCN0E2IC8q
IERPTU5hbWVkTm9kZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07
CiAJCTg1MThERDc5MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTE4REQ3NzBBOUNGMzFC
MDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLm1tICovOyB9OworCQk4NTFFRTgwQzBBQkNBMjhG
MDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTFFRTgwQTBBQkNBMjhGMDBBNkFBMzMgLyogRE9NQWJzdHJh
Y3RWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODUxRUU4MEQwQUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MUVFODBCMEFCQ0EyOEYw
MEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gKi87IH07CisJCTg1MUVFODExMEFCQ0EzOTYw
MEE2QUEzMyAvKiBET01FdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODUxRUU4MTAwQUJDQTM5NjAwQTZBQTMzIC8qIERPTUV2ZW50
RXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODUxRUU4MjEwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTFFRTgyMDBBQkNB
NTgxMDBBNkFBMzMgLyogRE9NUmFuZ2VFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NTIxN0UwMjBBNUVDRDQ3MDBEQjhEMDAgLyog
WFNMSW1wb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTIxN0UwMDBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5jcHAgKi87
IH07CiAJCTg1MjE3RTAzMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTIxN0UwMTBBNUVDRDQ3
MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5oICovOyB9OwogCQk4NTJCOUU4NzBBQTc5QzQ3MDAy
QURBNkUgLyogRE9NSFRNTEFwcGxldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MkI5RTgzMEFBNzlDNDcwMDJBREE2RSAvKiBET01IVE1M
QXBwbGV0RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC01MDEsNiArNTA1LDcgQEAKIAkJODU3RTBCMkMwQUIwNDNGQzAwMzZFNDQ3IC8q
IERPTU1vdXNlRXZlbnRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTdFMEIyQjBBQjA0M0ZDMDAzNkU0NDcgLyogRE9NTW91c2VFdmVudFBy
aXZhdGUuaCAqLzsgfTsKIAkJODU3RTBCMzEwQUIwNDQ3ODAwMzZFNDQ3IC8qIERPTU1vdXNlRXZl
bnQuaCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU3
RTBCMjMwQUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQuaCAqLzsgfTsKIAkJODU3RTBC
MzIwQUIwNDQ3ODAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnRQcml2YXRlLmggaW4gQ29weUZpbGVz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1N0UwQjJCMEFCMDQzRkMwMDM2
RTQ0NyAvKiBET01Nb3VzZUV2ZW50UHJpdmF0ZS5oICovOyB9OworCQk4NTgwMTVDRTBBQkNBNzVE
MDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1ODAxNUNEMEFCQ0E3NUQwMDgwNTg4RCAvKiBET01YUGF0
aEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg1OEMzODFDMEFBOEUyOTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU4QzM4MUEwQUE4RTI5NjAw
QjE4N0E0IC8qIERPTUNTU1ZhbHVlLmggKi87IH07CiAJCTg1OEMzODFEMEFBOEUyOTYwMEIxODdB
NCAvKiBET01DU1NWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1OEMzODFCMEFBOEUyOTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5tbSAqLzsg
fTsKIAkJODU4QzM4MkMwQUE4RTQwNTAwQjE4N0E0IC8qIERPTUNTU1ByaW1pdGl2ZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NThDMzgyQTBB
QThFNDA1MDBCMTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaCAqLzsgfTsKQEAgLTU4OSw2
ICs1OTQsNyBAQAogCQk4NUJBNEQyRTBBQTY4ODlGMDA4ODA1MkQgLyogRE9NSFRNTFVMaXN0RWxl
bWVudC5oIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NUJBNEQwOTBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5oICovOyB9Owog
CQk4NUJDQkMxMzBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3VtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUJDQkMxMTBBQkJBODdEMDAz
ODExNjAgLyogRE9NSFRNTERvY3VtZW50LmggKi87IH07CiAJCTg1QkNCQzE0MEFCQkE4N0QwMDM4
MTE2MCAvKiBET01IVE1MRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUJDQkMxMjBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3Vt
ZW50Lm1tICovOyB9OworCQk4NUM3OEE2ODBBQkRFMUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM3OEE2
NzBBQkRFMUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODVDN0YzRTYwQUFGNUQ1RTAwNDAxNEREIC8q
IERPTUV2ZW50LmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1QUZBODIwMEFBRjUyOEEwMEU4NDMwNSAvKiBET01FdmVudC5oICovOyB9OwogCQk4NUM3
RjQ0NzBBQUY3NkRDMDA0MDE0REQgLyogRE9NRXZlbnRUYXJnZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QzdGNDQ1MEFBRjc2REMwMDQwMTRERCAv
KiBET01FdmVudFRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg1QzdGNDkxMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM3RjQ4RjBBQUY3
OURDMDA0MDE0REQgLyogRE9NVUlFdmVudC5oICovOyB9OwpAQCAtMTk3MCw3ICsxOTc2LDYgQEAK
IAkJQkMxQTM3QkUwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTgwOTdDNzE1RjAwMTlG
M0Q4IC8qIERPTVRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDMUEzN0JGMDk3QzcxNUYwMDE5RjNEOCAvKiBET01VdGlsaXR5Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTkw
OTdDNzE1RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi87IH07CiAJCUJDMUEzN0MwMDk3Qzcx
NUYwMDE5RjNEOCAvKiBET01WaWV3cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkMxQTM3QzEw
OTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QUIwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdz
Lm1tICovOyB9OwogCQlCQzZCN0JBRjA5OTM2MDNDMDA1Mjg2N0IgLyogSW1hZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2QjdCQUUwOTkzNjAz
QzAwNTI4NjdCIC8qIEltYWdlLmNwcCAqLzsgfTsKIAkJQkM2QjdFQ0YwOTk4QUM3RjAwNTI4NjdC
IC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzZCN0VDRTA5OThBQzdGMDA1Mjg2N0IgLyogSW1hZ2VTb3VyY2UuaCAqLzsgfTsK
IAkJQkM2RDZERDIwOUFGOTA2NjAwRjU5NzU5IC8qIEZvbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDZERDAwOUFGOTA2NjAwRjU5NzU5IC8q
IEZvbnQuY3BwICovOyB9OwpAQCAtMjE1MiwyMyArMjE1Nyw2IEBACiAJCUZBRTA0MTkwMDk3NTk2
QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdl
TG9hZGVyLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAotLyogQmVn
aW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCi0JCUJDRkFENDVGMEFCRDNBQkEwMEI3NjYzRCAv
KiBEZXZlbG9wbWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNl
dHRpbmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0g
RGV2ZWxvcG1lbnQ7Ci0JCX07Ci0JCUJDRkFENDYwMEFCRDNBQkEwMEI3NjYzRCAvKiBEZXBsb3lt
ZW50ICovID0gewotCQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7
Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVwbG95bWVu
dDsKLQkJfTsKLS8qIEVuZCBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KLQogLyogQmVnaW4gUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJB
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0
ZW1Qcm94eTsKQEAgLTI4MzUsNiArMjgyMywxMCBAQAogCQk4NTE4RENFODBBOUNDODBEMDA5MUI3
QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NRE9NSW1wbGVtZW50YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5hbWVkTm9kZU1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTE4REQ3NzBBOUNGMzFCMDA5MUI3QTYgLyog
RE9NTmFtZWROb2RlTWFwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTU5hbWVkTm9kZU1hcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUx
RUU4MEEwQUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQWJzdHJhY3RWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1MUVFODBCMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQWJzdHJhY3RW
aWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTFFRTgxMDBBQkNBMzk2MDBB
NkFBMzMgLyogRE9NRXZlbnRFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NRXZlbnRFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUxRUU4MjAwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJhbmdlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg1MjE3RTAwMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRS
dWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xJbXBvcnRS
dWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyMTdFMDEwQTVFQ0Q0NzAw
REI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhTTEltcG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyQjlF
ODMwQUE3OUM0NzAwMkFEQTZFIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MQXBwbGV0RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjg3NSw2ICsyODY3LDcgQEAKIAkJODU3RTBCMjMwQUIwNDM0
NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTU1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU3
RTBCMjQwQUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTW91c2VFdmVudC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODU3RTBCMkIwQUIwNDNGQzAwMzZFNDQ3IC8qIERPTU1vdXNlRXZl
bnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Nb3VzZUV2
ZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTgwMTVDRDBBQkNB
NzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NWFBhdGhFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODU4QzM4MUEwQUE4RTI5NjAwQjE4N0E0IC8qIERPTUNTU1ZhbHVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NThDMzgxQjBBQThFMjk2MDBCMTg3QTQgLyogRE9NQ1NTVmFsdWUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ1NTVmFsdWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1OEMzODJBMEFBOEU0MDUwMEIxODdBNCAv
KiBET01DU1NQcmltaXRpdmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI5NjIsNiArMjk1NSw3IEBACiAJCTg1QzU2Q0E5MEFBODlFNjYwMEQ5NTc1NSAvKiBDU1NJbXBv
cnRSdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTSW1wb3J0UnVsZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1QzU2Q0FDMEFBODlGOEUwMEQ5NTc1NSAvKiBD
U1NDaGFyc2V0UnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0NoYXJzZXRSdWxl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVDNTZDQUQwQUE4OUZFMDAwRDk1
NzU1IC8qIENTU1Vua25vd25SdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVW5r
bm93blJ1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUM3OEE2NzBBQkRF
MUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUM3
RjQ0NTBBQUY3NkRDMDA0MDE0REQgLyogRE9NRXZlbnRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUV2ZW50VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1QzdGNDhGMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01VSUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg1QzdGNDkwMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVVJRXZlbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mzc5LDcgKzQzNzMsNiBAQAogCQlCQzFB
MzdBODA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxQTM3QTkwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVXRpbGl0eS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01WaWV3cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQzFBMzdBQjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmll
d3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVmlld3Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0IzNjQ3MDVDOUQ1RTIwMEU0Mjkw
MiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21pY1N0cmluZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJDNUVDMTc2MEE1MDdFM0Uw
MDYwMDdGNSAvKiB2aWV3LXNvdXJjZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJ2aWV3
LXNvdXJjZS5jc3MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZCN0JBRTA5OTM2
MDNDMDA1Mjg2N0IgLyogSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0MTQsOSAr
NTQwNywyNyBAQAogCQkJbmFtZSA9IFN0eWxlU2hlZXRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJODUxRUU4MDYwQUJDQTI1MjAwQTZBQTMzIC8qIFZpZXdzICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk4NTFFRTgwQTBBQkNBMjhG
MDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3LmggKi8sCisJCQkJODUxRUU4MEIwQUJDQTI4RjAw
QTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gVmlld3M7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk4NTFFRTgyMzBBQkNBNThBMDBB
NkFBMzMgLyogUmFuZ2UgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTg1MUVFODIwMEFCQ0E1ODEwMEE2QUEzMyAvKiBET01SYW5nZUV4Y2VwdGlvbi5oICov
LAorCQkJKTsKKwkJCW5hbWUgPSBSYW5nZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3JlICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NUM3OEE2NzBBQkRFMUI0MDA0NEZDMTYg
LyogRE9NRXhjZXB0aW9uLmggKi8sCiAJCQkJODU2QzhBRTIwQTkxMjY0OTAwNUM2ODdCIC8qIERP
TU9iamVjdC5oICovLAogCQkJCTg1NkM4QUUzMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3Qu
bW0gKi8sCiAJCQkpOwpAQCAtNTQzNSw2ICs1NDQ2LDE0IEBACiAJCQluYW1lID0gVHJhdmVyc2Fs
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODU4MDE1Q0MwQUJDQTc0MTAw
ODA1ODhEIC8qIFhQYXRoICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQk4NTgwMTVDRDBBQkNBNzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCAq
LywKKwkJCSk7CisJCQluYW1lID0gWFBhdGg7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk4NThDMzk1MTBBQTkwMjRDMDBCMTg3QTQgLyogQ1NTICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTU3MjEsNiArNTc0MCw3IEBACiAJCTg1QzdG
NDQzMEFBRjc2ODYwMDQwMTRERCAvKiBFdmVudHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTg1MUVFODEwMEFCQ0EzOTYwMEE2QUEzMyAvKiBET01FdmVu
dEV4Y2VwdGlvbi5oICovLAogCQkJCTg1QzdGNDQ1MEFBRjc2REMwMDQwMTRERCAvKiBET01FdmVu
dFRhcmdldC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBFdmVudHM7CkBAIC02NzI0LDcgKzY3NDQs
MTAgQEAKIAkJCQk4NThDMzk1MTBBQTkwMjRDMDBCMTg3QTQgLyogQ1NTICovLAogCQkJCTg1QzdG
NDQzMEFBRjc2ODYwMDQwMTRERCAvKiBFdmVudHMgKi8sCiAJCQkJODU5OTJGQzIwQUE1REQ0NjAw
QUMwNzg1IC8qIEhUTUwgKi8sCisJCQkJODUxRUU4MjMwQUJDQTU4QTAwQTZBQTMzIC8qIFJhbmdl
ICovLAogCQkJCTg1OUZBNUYyMEFCMEJFRTIwMDRGQUVFOSAvKiBUcmF2ZXJzYWwgKi8sCisJCQkJ
ODUxRUU4MDYwQUJDQTI1MjAwQTZBQTMzIC8qIFZpZXdzICovLAorCQkJCTg1ODAxNUNDMEFCQ0E3
NDEwMDgwNTg4RCAvKiBYUGF0aCAqLywKIAkJCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyog
Q29kZUdlbmVyYXRvck9iakMucG0gKi8sCiAJCQkJMUNEMEI2MjAwQUFCREI1MDAwRDBBM0ZGIC8q
IFB1YmxpY0RPTUludGVyZmFjZXMuaCAqLywKIAkJCQlCQzFBMzc5NzA5N0M3MTVGMDAxOUYzRDgg
LyogRE9NLmggKi8sCkBAIC02NzQ3LDcgKzY3NzAsNiBAQAogCQkJCUJDMUEzN0E4MDk3QzcxNUYw
MDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCAqLywKIAkJCQlCQzFBMzdBOTA5N0M3MTVGMDAxOUYz
RDggLyogRE9NVXRpbGl0eS5tbSAqLywKIAkJCQlCQzFBMzdBQTA5N0M3MTVGMDAxOUYzRDggLyog
RE9NVmlld3MuaCAqLywKLQkJCQlCQzFBMzdBQjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3Mu
bW0gKi8sCiAJCQkJMUExRDEzN0UwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLmggKi8sCiAJ
CQkJMUExRDEzN0YwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLm1tICovLAogCQkJCTFDQUYz
NDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLywKQEAgLTg0MDYsNiAr
ODQyOCwxMSBAQAogCQkJCTg1M0JGNERCMEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTNCRjRFQjBBQkI2RTk3MDA4NjQ3QkIgLyogRE9NTm9kZVByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QkNCQzEzMEFCQkE4N0QwMDM4MTE2MCAvKiBET01I
VE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MUVFODBDMEFCQ0EyOEYwMEE2QUEz
MyAvKiBET01BYnN0cmFjdFZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MUVFODExMEFCQ0Ez
OTYwMEE2QUEzMyAvKiBET01FdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUx
RUU4MjEwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4NTgwMTVDRTBBQkNBNzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTg1Qzc4QTY4MEFCREUxQjQwMDQ0RkMxNiAvKiBET01FeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODQ0MCwxMiArODQ2Nyw2IEBACiAJCTA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2pl
Y3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZD
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87
Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJfTsKLQkJCWJ1aWxkU3R5bGVzID0gKAotCQkJCUJD
RkFENDVGMEFCRDNBQkEwMEI3NjYzRCAvKiBEZXZlbG9wbWVudCAqLywKLQkJCQlCQ0ZBRDQ2MDBB
QkQzQUJBMDBCNzY2M0QgLyogRGVwbG95bWVudCAqLywKLQkJCSk7CiAJCQloYXNTY2FubmVkRm9y
RW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtODc5
NSw3ICs4ODE2LDYgQEAKIAkJCQlCQzFBMzdCNzA5N0M3MTVGMDAxOUYzRDggLyogRE9NSFRNTC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0JBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01JbnRl
cm5hbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0JGMDk3QzcxNUYwMDE5RjNEOCAvKiBE
T01VdGlsaXR5Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMxQTM3QzEwOTdDNzE1RjAwMTlGM0Q4
IC8qIERPTVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ3OEYwOTdDQUFDODAwOTRD
OUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VBNDc5ODA5N0NBQUM4MDA5NEM5RTQgLyogY3NzaGVscGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRUE0NzlBMDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NwYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC05NDk3LDYgKzk1MTcsNyBAQAogCQkJCUIyMDExMTA3MEFCNzc0MDUwMERCMEU2
OCAvKiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1M0JGNERDMEFCQjZC
NTUwMDg2NDdCQiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQ0JDMTQwQUJC
QTg3RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1
MUVFODBEMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMTY0MTUpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4IEBACiAjaW1w
b3J0ICJjc3NoZWxwZXIuaCIKIAogLy8gRnJvbSBvbGQgRE9NQ29yZS5oCi0jaW1wb3J0ICJET01O
b2RlLmgiCiAjaW1wb3J0ICJET01PYmplY3QuaCIKKyNpbXBvcnQgIkRPTUV4Y2VwdGlvbi5oIgog
CiAvLyBHZW5lcmF0ZWQgT2JqZWN0aXZlLUMgQmluZGluZ3MKICNpbXBvcnQgIkRPTUF0dHIuaCIK
QEAgLTc5LDYgKzc5LDcgQEAKICNpbXBvcnQgIkRPTUVudGl0eS5oIgogI2ltcG9ydCAiRE9NRW50
aXR5UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJET01OYW1lZE5vZGVNYXAuaCIKKyNpbXBvcnQgIkRP
TU5vZGUuaCIKICNpbXBvcnQgIkRPTU5vZGVMaXN0LmgiCiAjaW1wb3J0ICJET01Ob3RhdGlvbi5o
IgogI2ltcG9ydCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCkBAIC04Niw3ICs4Nyw2IEBA
CiAKIC8vIEZyb20gb2xkIERPTUhUTUwuaAogI2ltcG9ydCAiRE9NSFRNTEFwcGxldEVsZW1lbnQu
aCIKLSNpbXBvcnQgIkRPTUhUTUxEb2N1bWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTE9wdGlvbkVs
ZW1lbnQuaCIKIAogLy8gR2VuZXJhdGVkIE9iamVjdGl2ZS1DIEJpbmRpbmdzCkBAIC0xMDEsNiAr
MTAxLDcgQEAKICNpbXBvcnQgIkRPTUhUTUxETGlzdEVsZW1lbnQuaCIKICNpbXBvcnQgIkRPTUhU
TUxEaXJlY3RvcnlFbGVtZW50LmgiCiAjaW1wb3J0ICJET01IVE1MRGl2RWxlbWVudC5oIgorI2lt
cG9ydCAiRE9NSFRNTERvY3VtZW50LmgiCiAjaW1wb3J0ICJET01IVE1MRWxlbWVudC5oIgogI2lt
cG9ydCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTEZvbnRFbGVt
ZW50LmgiCkBAIC0xNDYsNTEgKzE0NywyNCBAQAogCiAjaW1wb3J0IDxvYmpjL29iamMtY2xhc3Mu
aD4KIAotdXNpbmcgV2ViQ29yZTo6QXRvbWljU3RyaW5nOwotdXNpbmcgV2ViQ29yZTo6QXRvbWlj
U3RyaW5nSW1wbDsKLXVzaW5nIFdlYkNvcmU6OkF0dHI7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVu
dDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJDb3JlOjpET01J
bXBsZW1lbnRhdGlvbkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNv
cmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7Ci11c2luZyBXZWJD
b3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNpbmcgV2ViQ29y
ZTo6S1VSTDsKLXVzaW5nIFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDsKLXVzaW5nIFdlYkNvcmU6Ok5v
ZGU7Ci11c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRl
ckNvbmRpdGlvbjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjsKLXVzaW5nIFdlYkNvcmU6
Ok5vZGVMaXN0OwotdXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6
OlJhbmdlOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q7Ci11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUcmVlV2Fs
a2VyOwotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogCi1jbGFzcyBPYmpD
RXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKK2NsYXNzIE9iakNFdmVudExp
c3RlbmVyIDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotICAg
IHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqY3JlYXRlKGlkIDxET01FdmVudExpc3RlbmVyPik7
CisgICAgc3RhdGljIE9iakNFdmVudExpc3RlbmVyKiBmaW5kKGlkIDxET01FdmVudExpc3RlbmVy
Pik7CisgICAgc3RhdGljIE9iakNFdmVudExpc3RlbmVyKiBjcmVhdGUoaWQgPERPTUV2ZW50TGlz
dGVuZXI+KTsKIAogcHJpdmF0ZToKICAgICBPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRM
aXN0ZW5lcj4pOwogICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVyKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQgKiwgYm9vbCBpc1dpbmRvd0V2ZW50KTsKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqLCBib29sIGlzV2luZG93RXZl
bnQpOwogCiAgICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7CiB9OwogCiB0eXBl
ZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJNYXA7Ci10eXBlZGVm
IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7Cit0eXBlZGVm
IEhhc2hNYXA8V2ViQ29yZTo6QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7
CiAKIHN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKIHN0YXRpYyBMaXN0ZW5l
ck1hcCogbGlzdGVuZXJNYXA7CkBAIC0xOTksNyArMTczLDcgQEAgc3RhdGljIExpc3RlbmVyTWFw
KiBsaXN0ZW5lck1hcDsKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBE
T01Ob2RlCiAKLXN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWcsIENsYXNzIG9iakNDbGFzcykKK3N0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25z
dCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykKIHsKICAgICBl
bGVtZW50Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwog
fQpAQCAtMjc1LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUhUTUxFbGVtZW50Q2xhc3NN
YXAoKQogICAgIC8vIEZJWE1FOiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0aGUgQVBJIGhhcyBiZWVu
IGRldGVybWluZWQuCiB9CiAKLXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdOYW1lKQorc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBXZWJDb3Jl
OjpBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgaWYgKCFlbGVtZW50Q2xhc3NNYXApCiAg
ICAgICAgIGNyZWF0ZUhUTUxFbGVtZW50Q2xhc3NNYXAoKTsKQEAgLTMwMSwxOCArMjc1LDE4IEBA
IHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXA+IiwgW1tzZWxmIGNsYXNzXSBk
ZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsXTsKIH0KIAotLSAoaWQpX2lu
aXRXaXRoTm9kZTooTm9kZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aE5vZGU6KFdlYkNvcmU6Ok5v
ZGUgKilpbXBsCiB7CiAgICAgQVNTRVJUKGltcGwpOwogCiAgICAgW3N1cGVyIF9pbml0XTsKLSAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKKyAgICBf
aW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwogICAgIGltcGwt
PnJlZigpOwogICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7CiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKLSsgKERPTU5vZGUgKilfbm9kZVdpdGg6KE5vZGUgKilpbXBsCisrIChET01Ob2RlICop
X25vZGVXaXRoOihXZWJDb3JlOjpOb2RlICopaW1wbAogewogICAgIGlmICghaW1wbCkKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTMyNCw0OSArMjk4LDQ5IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50
Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICAKICAgICBDbGFzcyB3cmFwcGVyQ2xhc3MgPSBuaWw7
CiAgICAgc3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgTm9kZTo6RUxF
TUVOVF9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkVMRU1FTlRfTk9ERToKICAg
ICAgICAgICAgIGlmIChpbXBsLT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gZWxlbWVudENsYXNzKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCkt
PmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBlbGVtZW50Q2xh
c3Moc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihpbXBsKS0+bG9jYWxOYW1lKCkp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01F
bGVtZW50IGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkFU
VFJJQlVURV9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkFUVFJJQlVURV9OT0RF
OgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUF0dHIgY2xhc3NdOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgorICAgICAgICBjYXNlIFdl
YkNvcmU6Ok5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01U
ZXh0IGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNEQVRB
X1NFQ1RJT05fTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpDREFUQV9TRUNUSU9O
X05PREU6CiAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NQ0RBVEFTZWN0aW9uIGNsYXNz
XTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVO
Q0VfTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05P
REU6CiAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRW50aXR5UmVmZXJlbmNlIGNsYXNz
XTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgor
ICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTUVudGl0eSBjbGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAgIGNhc2Ug
V2ViQ29yZTo6Tm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAg
d3JhcHBlckNsYXNzID0gW0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CisgICAgICAgIGNh
c2UgV2ViQ29yZTo6Tm9kZTo6Q09NTUVOVF9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUNvbW1lbnQgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGltcGwpLT5pc0hUTUxEb2N1bWVudCgpKQorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6
OkRPQ1VNRU5UX05PREU6CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9j
dW1lbnQqPihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICB3cmFwcGVy
Q2xhc3MgPSBbRE9NSFRNTERvY3VtZW50IGNsYXNzXTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnQgY2xhc3NdOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgICAgIHdy
YXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTURvY3VtZW50RnJhZ21lbnQgY2xhc3NdOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKKyAgICAgICAgY2FzZSBXZWJD
b3JlOjpOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RP
TU5vdGF0aW9uIGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6
OlhQQVRIX05BTUVTUEFDRV9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OlhQQVRI
X05BTUVTUEFDRV9OT0RFOgogICAgICAgICAgICAgLy8gRklYTUU6IENyZWF0ZSBhbiBYUGF0aCBv
YmplY3RpdmUgQyB3cmFwcGVyCiAgICAgICAgICAgICAvLyBTZWUgaHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1CiAgICAgICAgICAgICByZXR1cm4gbmls
OwpAQCAtMzc0LDE1ICszNDgsMTUgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBB
dG9taWNTdAogICAgIHJldHVybiBbW1t3cmFwcGVyQ2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6
aW1wbF0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChOb2RlICopX25vZGUKKy0gKFdlYkNvcmU6Ok5v
ZGUgKilfbm9kZQogewotICAgIHJldHVybiBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCk7Cisg
ICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpOwogfQogCiAtIChj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4ZWN1dGlvbkNvbnRleHQKIHsKLSAg
ICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkgewotICAgICAgICBpZiAoRnJhbWVNYWMgKmYg
PSBNYWMobi0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCisgICAgaWYgKFdlYkNvcmU6Ok5vZGUgKm4g
PSBbc2VsZiBfbm9kZV0pIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZyYW1lTWFjICpmID0gTWFj
KG4tPmRvY3VtZW50KCktPmZyYW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIGYtPmV4ZWN1dGlv
bkNvbnRleHRGb3JET00oKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0zOTAsMTcgKzM2NCw5
IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi1A
aW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViUHJpdmF0ZSkKLQotLSAoQk9PTClpc0NvbnRlbnRF
ZGl0YWJsZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzQ29udGVudEVkaXRhYmxlKCk7
Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTU5vZGVFeHRlbnNpb25z
KQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVu
dGF0aW9uCiAtIChOU1JlY3QpYm91bmRpbmdCb3gKIHsKICAgICBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOwpAQCAtNDA5LDYgKzM3NSw3
IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4g
TlNaZXJvUmVjdDsKIH0KIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbgogLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cwogewogICAgIFdl
YkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7
CkBAIC00MzQsNyArNDAxLDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9t
aWNTdAogICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQogICAgICAg
ICByYWlzZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgIAotICAgIEV2
ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVy
KTsKKyAgICBXZWJDb3JlOjpFdmVudExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVu
ZXI6OmNyZWF0ZShsaXN0ZW5lcik7CiAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9k
ZV0pLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1cmUpOwogICAgIHdy
YXBwZXItPmRlcmVmKCk7CiB9CkBAIC00NDQsNyArNDExLDcgQEAgc3RhdGljIENsYXNzIGVsZW1l
bnRDbGFzcyhjb25zdCBBdG9taWNTdAogICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFy
Z2V0Tm9kZSgpKQogICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9F
UlIpOwogCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5l
cjo6ZmluZChsaXN0ZW5lcikpCisgICAgaWYgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgKndyYXBw
ZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6ZmluZChsaXN0ZW5lcikpCiAgICAgICAgIEV2ZW50VGFy
Z2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFw
cGVyLCB1c2VDYXB0dXJlKTsKIH0KIApAQCAtNDUzLDcgKzQyMCw3IEBAIHN0YXRpYyBDbGFzcyBl
bGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVu
dFRhcmdldE5vZGUoKSkKICAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JU
RURfRVJSKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIEJPT0wgcmVzdWx0ID0gRXZlbnRUYXJnZXROb2RlQ2FzdChb
c2VsZiBfbm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtldmVudCBfZXZlbnRdLCBlYyk7CiAgICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDYxLDMxICs0MjgsMTgg
QEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50Ci0KLUBp
bXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsRXh0ZW5zaW9uKQotCi0t
IChET01FbGVtZW50ICopX293bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVudCBf
ZWxlbWVudFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+b3duZXJFbGVtZW50KCldOwotfQotCi1AZW5k
Ci0KLQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUVsZW1lbnQK
IAogLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGF1dG8tZ2VuZW5lcmF0ZSBpbiBET01FbGVtZW50
Lm1tCiBAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudEFwcEtpdEV4dGVuc2lv
bnMpCiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgaW1wbGVt
ZW50YXRpb24KIC0gKE5TSW1hZ2UqKWltYWdlCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5k
ZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcg
PSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKKyAgICAgICAgV2ViQ29yZTo6
UmVuZGVySW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlckltYWdlKj4ocmVu
ZGVyZXIpOwogICAgICAgICBpZiAoaW1nLT5jYWNoZWRJbWFnZSgpICYmICFpbWctPmNhY2hlZElt
YWdlKCktPmlzRXJyb3JJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltZy0+Y2FjaGVkSW1h
Z2UoKS0+aW1hZ2UoKS0+Z2V0TlNJbWFnZSgpOwogICAgIH0KQEAgLTQ5Niw0NSArNDUwLDQ5IEBA
IHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGltcGxlbWVudGF0
aW9uIERPTUVsZW1lbnQgKFdlYlByaXZhdGUpCiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBp
bXBsZW1lbnRlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24KIC0gKE5TRm9udCAqKV9mb250CiB7Ci0g
ICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsK
KyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5y
ZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5z
dHlsZSgpLT5mb250KCkucHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250KCk7CiAgICAgcmV0dXJuIG5p
bDsKIH0KIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbgogLSAoTlNEYXRhKilfaW1hZ2VUSUZGUmVwcmVzZW50YXRpb24KIHsKLSAgICBS
ZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOworICAg
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0tPnJlbmRl
cmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkpIHsKLSAgICAg
ICAgUmVuZGVySW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVyZXIp
OworICAgICAgICBXZWJDb3JlOjpSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7CiAgICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdl
KCkgJiYgIWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gKE5TRGF0YSopKGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJl
c2VudGF0aW9uKCkpOwogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQogCisvLyBGSVhNRTogdGhp
cyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtIChOU1VSTCAq
KV9nZXRVUkxBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQogewogICAgIEFTU0VSVChuYW1lKTsK
LSAgICBFbGVtZW50ICplID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICBy
ZXR1cm4gS1VSTChlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRy
aWJ1dGUobmFtZSkpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7CisgICAgV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKKyAgICBBU1NFUlQoZWxlbWVu
dCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OktVUkwoZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwocGFyc2VVUkwoZWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWUpKS5kZXByZWNhdGVkU3Ry
aW5nKCkpKS5nZXROU1VSTCgpOwogfQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVt
ZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtICh2b2lkICopX05QT2JqZWN0CiB7Ci0gICAg
RWxlbWVudCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKKyAgICBXZWJDb3JlOjpFbGVtZW50
KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRdOwogICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1l
KGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC0+
aGFzVGFnTmFtZShvYmplY3RUYWcpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKLSAgICBlbHNl
Ci0gICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAwOwogfQogCisvLyBGSVhNRTogdGhpcyBz
aG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtIChCT09MKWlzRm9j
dXNlZAogewotICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07CisgICAgV2ViQ29y
ZTo6RWxlbWVudCogaW1wbCA9IFtzZWxmIF9lbGVtZW50XTsKICAgICBpZiAoaW1wbC0+ZG9jdW1l
bnQoKS0+Zm9jdXNOb2RlKCkgPT0gaW1wbCkKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICByZXR1
cm4gTk87CkBAIC01NTAsMTcgKzUwOCwxNSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNv
bnN0IEF0b21pY1N0CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChfaW50ZXJuYWwpIHsK
LSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Cisg
ICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6UmFuZ2UqPihfaW50
ZXJuYWwpLT5kZXJlZigpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5h
bGl6ZQogewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAg
RE9NX2Nhc3Q8V2ViQ29yZTo6UmFuZ2UqPihfaW50ZXJuYWwpLT5kZXJlZigpOwogICAgIFtzdXBl
ciBmaW5hbGl6ZV07CiB9CiAKQEAgLTU2OSwxMyArNTI1LDEyIEBAIHN0YXRpYyBDbGFzcyBlbGVt
ZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICBpZiAoIV9pbnRlcm5hbCkKICAgICAgICAgcmV0
dXJuIEAiPERPTVJhbmdlOiBudWxsPiI7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPERPTVJhbmdlOiAlQCAlZCAlQCAlZD4iLAotICAgICAgICBbc2VsZiBzdGFydENv
bnRhaW5lcl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwKLSAgICAgICAgW3NlbGYgZW5kQ29udGFpbmVy
XSwgW3NlbGYgZW5kT2Zmc2V0XV07CisgICAgICAgICAgICAgICBbc2VsZiBzdGFydENvbnRhaW5l
cl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwgW3NlbGYgZW5kQ29udGFpbmVyXSwgW3NlbGYgZW5kT2Zm
c2V0XV07CiB9CiAKIC0gKERPTU5vZGUgKilzdGFydENvbnRhaW5lcgogewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERP
TU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5zdGFydENv
bnRhaW5lcihlYyldOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTU4Myw3ICs1MzgsNyBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0
b21pY1N0CiAKIC0gKGludClzdGFydE9mZnNldAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCByZXN1bHQgPSBb
c2VsZiBfcmFuZ2VdLT5zdGFydE9mZnNldChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTkxLDcgKzU0Niw3IEBAIHN0YXRpYyBDbGFzcyBlbGVt
ZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoRE9NTm9kZSAqKWVuZENvbnRhaW5lcgogewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFu
Z2VdLT5lbmRDb250YWluZXIoZWMpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC01OTksNyArNTU0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFz
cyhjb25zdCBBdG9taWNTdAogCiAtIChpbnQpZW5kT2Zmc2V0CiB7Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IHJl
c3VsdCA9IFtzZWxmIF9yYW5nZV0tPmVuZE9mZnNldChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjA3LDcgKzU2Miw3IEBAIHN0YXRpYyBDbGFz
cyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoQk9PTCljb2xsYXBzZWQKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7CiAgICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjE1LDcgKzU3MCw3
IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoRE9NTm9k
ZSAqKWNvbW1vbkFuY2VzdG9yQ29udGFpbmVyCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRE9NTm9kZSAqcmVzdWx0
ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9yYW5nZV0tPmNvbW1vbkFuY2VzdG9yQ29udGFp
bmVyKGVjKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtNjIzLDg1ICs1NzgsODUgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9t
aWNTdAogCiAtICh2b2lkKXNldFN0YXJ0OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQK
IHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFydChbcmVmTm9kZSBfbm9kZV0sIG9m
ZnNldCwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZvaWQpc2V0RW5k
OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFu
Z2VdLT5zZXRFbmQoW3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsKICAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNldFN0YXJ0QmVmb3JlOihET01Ob2RlICopcmVmTm9k
ZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QmVmb3JlKFtyZWZOb2RlIF9u
b2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZvaWQpc2V0U3Rh
cnRBZnRlcjooRE9NTm9kZSAqKXJlZk5vZGUKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5z
ZXRTdGFydEFmdGVyKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7CiB9CiAKIC0gKHZvaWQpc2V0RW5kQmVmb3JlOihET01Ob2RlICopcmVmTm9kZQogewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFtzZWxmIF9yYW5nZV0tPnNldEVuZEJlZm9yZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsK
ICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNldEVuZEFmdGVyOihET01O
b2RlICopcmVmTm9kZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPnNldEVuZEFmdGVyKFty
ZWZOb2RlIF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZv
aWQpY29sbGFwc2U6KEJPT0wpdG9TdGFydAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPmNv
bGxhcHNlKHRvU3RhcnQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2
b2lkKXNlbGVjdE5vZGU6KERPTU5vZGUgKilyZWZOb2RlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3Jh
bmdlXS0+c2VsZWN0Tm9kZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKICAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwogfQogCiAtICh2b2lkKXNlbGVjdE5vZGVDb250ZW50czooRE9NTm9kZSAqKXJlZk5v
ZGUKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZWxlY3ROb2RlQ29udGVudHMoW3JlZk5v
ZGUgX25vZGVdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAoc2hvcnQp
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzOih1bnNpZ25lZCBzaG9ydClob3cgOihET01SYW5nZSAqKXNv
dXJjZVJhbmdlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2hvcnQgcmVzdWx0
ID0gW3NlbGYgX3JhbmdlXS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXRpY19jYXN0PFJhbmdl
OjpDb21wYXJlSG93Pihob3cpLCBbc291cmNlUmFuZ2UgX3JhbmdlXSwgZWMpOworICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHNob3J0IHJlc3VsdCA9IFtzZWxmIF9yYW5n
ZV0tPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzdGF0aWNfY2FzdDxXZWJDb3JlOjpSYW5nZTo6Q29t
cGFyZUhvdz4oaG93KSwgW3NvdXJjZVJhbmdlIF9yYW5nZV0sIGVjKTsKICAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC0gKHZvaWQpZGVsZXRlQ29udGVu
dHMKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5kZWxldGVDb250ZW50cyhlYyk7CiAgICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWV4dHJh
Y3RDb250ZW50cwogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtE
T01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5l
eHRyYWN0Q29udGVudHMoZWMpLmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC03MDksNyArNjY0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRD
bGFzcyhjb25zdCBBdG9taWNTdAogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY2xvbmVDb250
ZW50cwogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1
bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNv
bnRlbnRzKGVjKS5nZXQoKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNzE3LDIxICs2NzIsMjEgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhj
b25zdCBBdG9taWNTdAogCiAtICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCiB7
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBfbm9kZV0sIGVj
KTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXN1cnJvdW5kQ29udGVu
dHM6KERPTU5vZGUgKiluZXdQYXJlbnQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zdXJy
b3VuZENvbnRlbnRzKFtuZXdQYXJlbnQgX25vZGVdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKIH0KIAogLSAoRE9NUmFuZ2UgKiljbG9uZVJhbmdlCiB7Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRE9NUmFu
Z2UgKnJlc3VsdCA9IFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFu
Z2UoZWMpLmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1
bHQ7CkBAIC03MzksNyArNjk0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBB
dG9taWNTdAogCiAtIChOU1N0cmluZyAqKXRvU3RyaW5nCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgTlNTdHJpbmcg
KnJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPnRvU3RyaW5nKGVjKTsKICAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC03NTIsNyArNzA3LDcgQEAgc3RhdGljIENs
YXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiAtICh2b2lkKWRldGFjaAogewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFtzZWxmIF9yYW5nZV0tPmRldGFjaChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKIH0KQEAgLTc2MSwxOCArNzE2LDE4IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29u
c3QgQXRvbWljU3QKIAogQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwp
CiAKLS0gKGlkKV9pbml0V2l0aFJhbmdlOihSYW5nZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aFJh
bmdlOihXZWJDb3JlOjpSYW5nZSAqKWltcGwKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAKICAgICBb
c3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFs
ICo+KGltcGwpOworICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
aW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7CiAgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAotKyAoRE9NUmFuZ2UgKilfcmFuZ2VXaXRoOihSYW5nZSAq
KWltcGwKKysgKERPTVJhbmdlICopX3JhbmdlV2l0aDooV2ViQ29yZTo6UmFuZ2UgKilpbXBsCiB7
CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzg1LDkgKzc0MCw5IEBA
IHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4gW1tb
c2VsZiBhbGxvY10gX2luaXRXaXRoUmFuZ2U6aW1wbF0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChS
YW5nZSAqKV9yYW5nZQorLSAoV2ViQ29yZTo6UmFuZ2UgKilfcmFuZ2UKIHsKLSAgICByZXR1cm4g
RE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKTsKKyAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29y
ZTo6UmFuZ2UqPihfaW50ZXJuYWwpOwogfQogCiBAZW5kCkBAIC04MDcsMTggKzc2MiwxOCBAQCBz
dGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBpbXBsZW1lbnRhdGlv
biBET01Ob2RlRmlsdGVyCiAKLS0gKGlkKV9pbml0V2l0aE5vZGVGaWx0ZXI6KE5vZGVGaWx0ZXIg
KilpbXBsCistIChpZClfaW5pdFdpdGhOb2RlRmlsdGVyOihXZWJDb3JlOjpOb2RlRmlsdGVyICop
aW1wbAogewogICAgIEFTU0VSVChpbXBsKTsKIAogICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2lu
dGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgX2ludGVy
bmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYo
KTsKICAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwogICAgIHJldHVybiBzZWxmOwogfQog
Ci0rIChET01Ob2RlRmlsdGVyICopX25vZGVGaWx0ZXJXaXRoOihOb2RlRmlsdGVyICopaW1wbAor
KyAoRE9NTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyV2l0aDooV2ViQ29yZTo6Tm9kZUZpbHRlciAq
KWltcGwKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04MzEsMjIg
Kzc4NiwyMiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAg
cmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVGaWx0ZXI6aW1wbF0gYXV0b3JlbGVh
c2VdOwogfQogCi0tIChOb2RlRmlsdGVyICopX25vZGVGaWx0ZXIKKy0gKFdlYkNvcmU6Ok5vZGVG
aWx0ZXIgKilfbm9kZUZpbHRlcgogewotICAgIHJldHVybiBET01fY2FzdDxOb2RlRmlsdGVyICo+
KF9pbnRlcm5hbCk7CisgICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGVGaWx0ZXIqPihf
aW50ZXJuYWwpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBpZiAoX2ludGVybmFsKQot
ICAgICAgICBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CisgICAg
ICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGVGaWx0ZXIqPihfaW50ZXJuYWwpLT5kZXJlZigpOwog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewogICAgIGlmIChf
aW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKS0+ZGVy
ZWYoKTsKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZUZpbHRlcio+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7CiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIApAQCAtODYzLDI0ICs4MTgsMjQg
QEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAaW1wbGVtZW50
YXRpb24gRE9NTm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRo
Tm9kZUl0ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0
ZXI+KWZpbHRlcgorLSAoaWQpX2luaXRXaXRoTm9kZUl0ZXJhdG9yOihXZWJDb3JlOjpOb2RlSXRl
cmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgogewogICAgIEFT
U0VSVChpbXBsKTsKIAogICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYoKTsKICAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwogICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRhaW5dOwogICAg
IHJldHVybiBzZWxmOwogfQogCi0tIChOb2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJhdG9yCistIChX
ZWJDb3JlOjpOb2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJhdG9yCiB7Ci0gICAgcmV0dXJuIERPTV9j
YXN0PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiBET01fY2FzdDxXZWJD
b3JlOjpOb2RlSXRlcmF0b3IqPihfaW50ZXJuYWwpOwogfQogCi0rIChET01Ob2RlSXRlcmF0b3Ig
Kilfbm9kZUl0ZXJhdG9yV2l0aDooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01O
b2RlRmlsdGVyPilmaWx0ZXIKKysgKERPTU5vZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0b3JXaXRo
OihXZWJDb3JlOjpOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+
KWZpbHRlcgogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTkwMSwy
NCArODU2LDI0IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAog
QGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQp
X2luaXRXaXRoVHJlZVdhbGtlcjooVHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9k
ZUZpbHRlcj4pZmlsdGVyCistIChpZClfaW5pdFdpdGhUcmVlV2Fsa2VyOihXZWJDb3JlOjpUcmVl
V2Fsa2VyICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKIHsKICAgICBB
U1NFUlQoaW1wbCk7CiAKICAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9j
YXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0
PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7CiAgICAgYWRkRE9N
V3JhcHBlcihzZWxmLCBpbXBsKTsKICAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKICAg
ICByZXR1cm4gc2VsZjsKIH0KIAotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCistIChXZWJD
b3JlOjpUcmVlV2Fsa2VyICopX3RyZWVXYWxrZXIKIHsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8VHJl
ZVdhbGtlciAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpUcmVl
V2Fsa2VyICo+KF9pbnRlcm5hbCk7CiB9CiAKLSsgKERPTVRyZWVXYWxrZXIgKilfdHJlZVdhbGtl
cldpdGg6KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRl
cgorKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooV2ViQ29yZTo6VHJlZVdhbGtl
ciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCiB7CiAgICAgaWYgKCFp
bXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTM3LDE2ICs4OTIsMTUgQEAgc3RhdGljIENs
YXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC8vIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uCiAKLWNsYXNzIE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJDb25kaXRpb24KLXsKK2NsYXNzIE9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uIDogcHVibGljIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRp
b24gewogcHVibGljOgogICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmls
dGVyPik7CiAgICAgdmlydHVhbCB+T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKTsKLSAgICB2aXJ0
dWFsIHNob3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OworICAgIHZpcnR1YWwgc2hvcnQgYWNj
ZXB0Tm9kZShXZWJDb3JlOjpOb2RlKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0gICAgT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbiAmKTsKKyAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbiYpOworICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICZvcGVyYXRvcj0oY29u
c3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24mKTsKIAogICAgIGlkIDxET01Ob2RlRmlsdGVyPiBt
X2ZpbHRlcjsKIH07CkBAIC05NjMsMTAgKzkxNywxMCBAQCBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bjo6fk9iakNOb2RlRmlsdGVyCiAgICAgQ0ZSZWxlYXNlKG1fZmlsdGVyKTsKIH0KIAotc2hvcnQg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoTm9kZSogbm9kZSkgY29uc3QKK3No
b3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKFdlYkNvcmU6Ok5vZGUqIG5v
ZGUpIGNvbnN0CiB7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6
RklMVEVSX1JFSkVDVDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5vZGVGaWx0ZXI6OkZJTFRF
Ul9SRUpFQ1Q7CiAgICAgcmV0dXJuIFttX2ZpbHRlciBhY2NlcHROb2RlOltET01Ob2RlIF9ub2Rl
V2l0aDpub2RlXV07CiB9CiAKQEAgLTk3OSwyMiArOTMzLDIyIEBAIHNob3J0IE9iakNOb2RlRmls
dGVyQ29uZGl0aW9uOjphY2NlcHROb2QKIAogLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9k
ZUl0ZXJhdG9yOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9N
Tm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCiB7Ci0gICAg
UmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUZp
bHRlcj4gY3BwRmlsdGVyOwogICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGNwcEZpbHRlciA9IG5l
dyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlTm9kZUl0ZXJhdG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hv
dywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7CisgICAgICAgIGNwcEZp
bHRlciA9IG5ldyBXZWJDb3JlOjpOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bihmaWx0ZXIpKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRl
Tm9kZUl0ZXJhdG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRF
bnRpdHlSZWZlcmVuY2VzLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1
cm4gW0RPTU5vZGVJdGVyYXRvciBfbm9kZUl0ZXJhdG9yV2l0aDppbXBsLmdldCgpIGZpbHRlcjpm
aWx0ZXJdOwogfQogCiAtIChET01UcmVlV2Fsa2VyICopY3JlYXRlVHJlZVdhbGtlcjooRE9NTm9k
ZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRl
ciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwogewotICAgIFJlZlB0cjxOb2RlRmlsdGVy
PiBjcHBGaWx0ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsK
ICAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgUmVmUHRyPFRyZWVXYWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVh
dGVUcmVlV2Fsa2VyKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRF
bnRpdHlSZWZlcmVuY2VzLCBlYyk7CisgICAgICAgIGNwcEZpbHRlciA9IG5ldyBXZWJDb3JlOjpO
b2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VHJlZVdhbGtl
cj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRyZWVXYWxrZXIoW3Jvb3QgX25vZGVd
LCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVjKTsKICAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiBbRE9NVHJlZVdhbGtlciBfdHJlZVdh
bGtlcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKIH0KQEAgLTEwMDksMTIgKzk2Mywx
MiBAQCBPYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpCiB7CiAgICAgaWYg
KExpc3RlbmVyTWFwKiBtYXAgPSBsaXN0ZW5lck1hcCkKICAgICAgICAgcmV0dXJuIG1hcC0+Z2V0
KGxpc3RlbmVyKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKIH0KIAogT2JqQ0V2
ZW50TGlzdGVuZXIgKk9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUoaWQgPERPTUV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyKQogewotICAgIE9iakNFdmVudExpc3RlbmVyICp3cmFwcGVyID0gZmluZChs
aXN0ZW5lcik7CisgICAgT2JqQ0V2ZW50TGlzdGVuZXIqIHdyYXBwZXIgPSBmaW5kKGxpc3RlbmVy
KTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHdyYXBwZXIgPSBuZXcgT2JqQ0V2ZW50TGlz
dGVuZXIobGlzdGVuZXIpOwogICAgIHdyYXBwZXItPnJlZigpOwpAQCAtMTAzOCw3ICs5OTIsNyBA
QCBPYmpDRXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVudExpc3RlbmVyKCkKICAgICBbbV9saXN0ZW5l
ciByZWxlYXNlXTsKIH0KIAotdm9pZCBPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoRXZl
bnQgKmV2ZW50LCBib29sKQordm9pZCBPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoV2Vi
Q29yZTo6RXZlbnQqIGV2ZW50LCBib29sKQogewogICAgIFttX2xpc3RlbmVyIGhhbmRsZUV2ZW50
OltET01FdmVudCBfZXZlbnRXaXRoOmV2ZW50XV07CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQWJzdHJhY3RWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUFic3RyYWN0Vmlldy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUFic3RyYWN0Vmlldy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVj
dC5oPgorCitAY2xhc3MgRE9NRG9jdW1lbnQ7CisKK0BpbnRlcmZhY2UgRE9NQWJzdHJhY3RWaWV3
IDogRE9NT2JqZWN0CistIChET01Eb2N1bWVudCAqKWRvY3VtZW50OworQGVuZApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkRPTUFic3RyYWN0Vmlldy5oIgorCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisKKyNpbXBvcnQgIkRPTURvY3VtZW50LmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2lt
cG9ydCAiRE9NV2luZG93LmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OworfQorCitBTExPV19E
T01fQ0FTVChET01XaW5kb3cpCisKK0BpbXBsZW1lbnRhdGlvbiBET01BYnN0cmFjdFZpZXcKKwor
I2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NV2luZG93Kj4oX2ludGVy
bmFsKQorCistIChET01Eb2N1bWVudCAqKWRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtET01Eb2N1
bWVudCBfZG9jdW1lbnRXaXRoOldURjo6Z2V0UHRyKElNUEwtPmRvY3VtZW50KCkpXTsKK30KKwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NQWJzdHJhY3RWaWV3IChXZWJDb3JlSW50ZXJuYWwp
CisKKy0gKFdlYkNvcmU6OkFic3RyYWN0VmlldyAqKV9hYnN0cmFjdFZpZXcKK3sKKyAgICByZXR1
cm4gSU1QTDsKK30KKworLSAoaWQpX2luaXRXaXRoQWJzdHJhY3RWaWV3OihXZWJDb3JlOjpBYnN0
cmFjdFZpZXcgKilpbXBsCit7CisgICAgQVNTRVJUKGltcGwpOworCisgICAgW3N1cGVyIF9pbml0
XTsKKyAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsK
KyAgICBpbXBsLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOworICAgIHJl
dHVybiBzZWxmOworfQorCisrIChET01BYnN0cmFjdFZpZXcgKilfYWJzdHJhY3RWaWV3V2l0aDoo
V2ViQ29yZTo6QWJzdHJhY3RWaWV3ICopaW1wbAoreworICAgIGlmICghaW1wbCkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZCBjYWNoZWRJbnN0YW5jZTsKKyAgICBjYWNoZWRJbnN0
YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7CisgICAgaWYgKGNhY2hlZEluc3RhbmNlKQorICAg
ICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAK
KyAgICByZXR1cm4gW1tbRE9NQWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdFdpdGhBYnN0cmFjdFZp
ZXc6aW1wbF0gYXV0b3JlbGVhc2VdOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQ1NTLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01D
U1MubW0JKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsNDUgKzI4LDM3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIkRPTUNTUy5oIgogCi0jaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJD
U1NDaGFyc2V0UnVsZS5oIgogI2ltcG9ydCAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW1wb3J0ICJD
U1NJbXBvcnRSdWxlLmgiCiAjaW1wb3J0ICJDU1NNZWRpYVJ1bGUuaCIKICNpbXBvcnQgIkNTU1Bh
Z2VSdWxlLmgiCisjaW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2ltcG9ydCAiQ1NTUnVs
ZS5oIgogI2ltcG9ydCAiQ1NTUnVsZUxpc3QuaCIKKyNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRp
b24uaCIKICNpbXBvcnQgIkNTU1N0eWxlUnVsZS5oIgogI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5o
IgogI2ltcG9ydCAiQ1NTVmFsdWVMaXN0LmgiCi0jaW1wb3J0ICJDb3VudGVyLmgiCiAjaW1wb3J0
ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgogI2ltcG9ydCAiRE9NV2lu
ZG93LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5o
IgotI2ltcG9ydCAiSFRNTExpbmtFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MU3R5bGVFbGVtZW50
LmgiCi0jaW1wb3J0ICJNZWRpYUxpc3QuaCIKLSNpbXBvcnQgIlByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oIgotI2ltcG9ydCAiUmVjdEltcGwuaCIKICNpbXBvcnQgIlN0eWxlU2hlZXQuaCIKLSNpbXBv
cnQgIlN0eWxlU2hlZXRMaXN0LmgiCiAKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KICNpbXBvcnQg
PG9iamMvb2JqYy1jbGFzcy5oPgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OwogfQogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC8vIERPTVN0eWxlU2hlZXQKIAogQGltcGxlbWVudGF0aW9uIERPTVN0eWxlU2hlZXQgKFdl
YkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRoU3R5bGVTaGVldDooU3R5bGVTaGVldCAq
KWltcGwKKy0gKGlkKV9pbml0V2l0aFN0eWxlU2hlZXQ6KFdlYkNvcmU6OlN0eWxlU2hlZXQgKilp
bXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01P
YmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtNzUsNyArNjcsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotKyAoRE9NU3R5bGVTaGVldCAqKV9zdHls
ZVNoZWV0V2l0aDooU3R5bGVTaGVldCAqKWltcGwKKysgKERPTVN0eWxlU2hlZXQgKilfc3R5bGVT
aGVldFdpdGg6KFdlYkNvcmU6OlN0eWxlU2hlZXQgKilpbXBsCiB7CiAgICAgaWYgKCFpbXBsKQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTAxLDcgKzkzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBET01DU1NTdHlsZVNoZWV0IChXZWJDb3JlSW50ZXJu
YWwpCiAKLSsgKERPTUNTU1N0eWxlU2hlZXQgKilfQ1NTU3R5bGVTaGVldFdpdGg6KENTU1N0eWxl
U2hlZXQgKilpbXBsCisrIChET01DU1NTdHlsZVNoZWV0ICopX0NTU1N0eWxlU2hlZXRXaXRoOihX
ZWJDb3JlOjpDU1NTdHlsZVNoZWV0ICopaW1wbAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
T01DU1NTdHlsZVNoZWV0Kj4oW0RPTVN0eWxlU2hlZXQgX3N0eWxlU2hlZXRXaXRoOmltcGxdKTsK
IH0KQEAgLTExNCw3ICsxMDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxl
bWVudGF0aW9uIERPTUNTU1J1bGUgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRo
UnVsZTooQ1NTUnVsZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aFJ1bGU6KFdlYkNvcmU6OkNTU1J1
bGUgKilpbXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJuYWwgPSBET01fY2Fz
dDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtMTIzLDcgKzExNSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0rIChET01DU1NSdWxlICop
X0NTU1J1bGVXaXRoOihDU1NSdWxlICopaW1wbAorKyAoRE9NQ1NTUnVsZSAqKV9DU1NSdWxlV2l0
aDooV2ViQ29yZTo6Q1NTUnVsZSAqKWltcGwKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC0xNjgsNyArMTYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IEBpbXBsZW1lbnRhdGlvbiBET01DU1NWYWx1ZSAoV2ViQ29yZUludGVybmFsKQogCi0tIChpZClf
aW5pdFdpdGhWYWx1ZTooQ1NTVmFsdWUgKilpbXBsCistIChpZClfaW5pdFdpdGhWYWx1ZTooV2Vi
Q29yZTo6Q1NTVmFsdWUgKilpbXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJu
YWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtMTc3LDcgKzE2OSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0rIChE
T01DU1NWYWx1ZSAqKV9DU1NWYWx1ZVdpdGg6KENTU1ZhbHVlICopaW1wbAorKyAoRE9NQ1NTVmFs
dWUgKilfQ1NTVmFsdWVXaXRoOihXZWJDb3JlOjpDU1NWYWx1ZSAqKWltcGwKIHsKICAgICBpZiAo
IWltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMTgsNyArMjEwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NWYWx1ZSo+KF9pbnRlcm5h
bCkpOwogfQogCi0rIChET01DU1NQcmltaXRpdmVWYWx1ZSAqKV9DU1NQcmltaXRpdmVWYWx1ZVdp
dGg6KENTU1ZhbHVlICopaW1wbAorKyAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilfQ1NTUHJpbWl0
aXZlVmFsdWVXaXRoOihXZWJDb3JlOjpDU1NWYWx1ZSAqKWltcGwKIHsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NQ1NTUHJpbWl0aXZlVmFsdWUqPihbRE9NQ1NTVmFsdWUgX0NTU1ZhbHVlV2l0
aDppbXBsXSk7CiB9CkBAIC0yMjcsMTkgKzIxOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01SR0JDb2xv
cgotCi1AaW1wbGVtZW50YXRpb24gRE9NUkdCQ29sb3IgKFdlYlByaXZhdGUpCi0KLS0gKE5TQ29s
b3IgKilfY29sb3IKLXsKLSAgICByZXR1cm4gW3NlbGYgY29sb3JdOwotfQotCi1AZW5kCi0KLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQGltcGxlbWVudGF0aW9uIERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKERPTUNTUzJQcm9wZXJ0aWVzKQogCkBAIC0xNDgzLDcgKzE0
NjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBz
ZXVkb0VsdAogewotICAgIEFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9jdW1lbnRdLT5kZWZh
dWx0VmlldygpOworICAgIFdlYkNvcmU6OkFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9jdW1l
bnRdLT5kZWZhdWx0VmlldygpOwogCiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJuIG5pbDsK
QEAgLTE0OTcsNyArMTQ3Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtIChET01D
U1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3Ry
aW5nICopcHNldWRvRWx0CiB7Ci0gICAgQWJzdHJhY3RWaWV3KiBkdiA9IFtzZWxmIF9kb2N1bWVu
dF0tPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6QWJzdHJhY3RWaWV3KiBkdiA9IFtzZWxm
IF9kb2N1bWVudF0tPmRlZmF1bHRWaWV3KCk7CiAKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1
cm4gbmlsOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCShyZXZpc2lvbiAxNjQxNSkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEz
ICsyOCwxNCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01DREFUQVNlY3Rpb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01Db21tZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTURvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50RnJhZ21l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnRUeXBlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RPTUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRW50aXR5Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RPTUVudGl0eVJlZmVyZW5jZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9ET01ET01J
bXBsZW1lbnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FeGNlcHRpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvRE9NTmFtZWROb2RlTWFwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZUxpc3QuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01FdmVudEV4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01FdmVudEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUV2ZW50RXhjZXB0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0
IERPTUV2ZW50RXhjZXB0aW9uOworCitlbnVtIERPTUV2ZW50RXhjZXB0aW9uQ29kZSB7CisgICAg
RE9NX1VOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSID0gMAorfTsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01FdmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NRXZlbnRzLmgJKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUV2ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTVZpZXdzLmg+CiAKICNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRE9NRXZlbnRFeGNlcHRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRXZl
bnRMaXN0ZW5lci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVudFRhcmdldC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01LZXlib2FyZEV2ZW50Lmg+CkBAIC0zOSwxMiArNDAsNiBAQAogI2ltcG9y
dCA8V2ViQ29yZS9ET01VSUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVdoZWVsRXZlbnQu
aD4KIAotZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXZlbnRFeGNlcHRpb247Ci0KLWVudW0g
RE9NRXZlbnRFeGNlcHRpb25Db2RlIHsKLSAgICBET01fVU5TUEVDSUZJRURfRVZFTlRfVFlQRV9F
UlIgPSAwCi19OwotCiBAaW50ZXJmYWNlIERPTUtleWJvYXJkRXZlbnQgKE5vblN0YW5kYXJkQWRk
aXRpb25zKQogLSAoQk9PTClnZXRNb2RpZmllclN0YXRlOihOU1N0cmluZyAqKWtleUlkZW50aWZp
ZXJBcmc7CiBAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW0JKHJldmlzaW9u
IDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzgsOCArMzgsNiBAQAogI2ltcG9ydCAiT3ZlcmZsb3dFdmVudC5oIgogI2ltcG9y
dCAiVUlFdmVudC5oIgogCi1BTExPV19ET01fQ0FTVChFdmVudCkKLQogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUV2ZW50CiAKQEAgLTk4LDYgKzk2LDcgQEAgQUxM
T1dfRE9NX0NBU1QoRXZlbnQpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01LZXlib2FyZEV2ZW50IChO
b25TdGFuZGFyZEFkZGl0aW9ucykKIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVu
dGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbgogLSAoQk9PTClnZXRNb2RpZmllclN0YXRlOihOU1N0
cmluZyAqKWtleUlkZW50aWZpZXJBcmcKIHsKICAgICBpZiAoW2tleUlkZW50aWZpZXJBcmcgaXNF
cXVhbFRvU3RyaW5nOkAiQ29udHJvbCJdICYmIFtzZWxmIGN0cmxLZXldKQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUhUTUwubW0JKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUhUTUwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDI4ICszNCwxNCBAQAogI2ltcG9y
dCAiRm91bmRhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJI
VE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxGb3JtRWxlbWVudC5oIgotI2ltcG9ydCAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgotI2ltcG9ydCAi
SFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2ltcG9ydCAiSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmgiCi0jaW1wb3J0ICJIVE1MU2VsZWN0RWxlbWVudC5oIgotI2lt
cG9ydCAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxUYWJsZUNlbGxF
bGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFibGVFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5oIgogI2ltcG9ydCAiS1VSTC5oIgotI2ltcG9ydCAiTmFtZU5vZGVM
aXN0LmgiCiAjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVuZGVyVGV4dENvbnRyb2wuaCIK
ICNpbXBvcnQgImNzc2hlbHBlci5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotCiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NSFRNTERvY3VtZW50CiAKQEAgLTc4LDcg
KzY0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKV9jcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcg
KiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nCiB7
Ci0gICAgTlNVUkwgKmJhc2VVUkwgPSBLVVJMKFtzZWxmIF9kb2N1bWVudF0tPmNvbXBsZXRlVVJM
KHBhcnNlVVJMKGJhc2VVUkxTdHJpbmcpKS5kZXByZWNhdGVkU3RyaW5nKCkpLmdldE5TVVJMKCk7
CisgICAgTlNVUkwgKmJhc2VVUkwgPSBXZWJDb3JlOjpLVVJMKFtzZWxmIF9kb2N1bWVudF0tPmNv
bXBsZXRlVVJMKFdlYkNvcmU6OnBhcnNlVVJMKGJhc2VVUkxTdHJpbmcpKS5kZXByZWNhdGVkU3Ry
aW5nKCkpLmdldE5TVVJMKCk7CiAgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50RnJhZ21l
bnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZyBiYXNlVVJMOmJhc2VVUkxdOwogfQogCkBA
IC0xMjIsMTkgKzEwOCwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAjcHJhZ21h
IG1hcmsgRE9NIEVYVEVOU0lPTlMKIAotLy8gVGhlc2UgI2ltcG9ydHMgYW5kICJ1c2luZ3MiIGFy
ZSB1c2VkIG9ubHkgYnkgdmlld0ZvckVsZW1lbnQgYW5kIHNob3VsZCBiZSBkZWxldGVkIAorLy8g
VGhpcyAjaW1wb3J0IGlzIHVzZWQgb25seSBieSB2aWV3Rm9yRWxlbWVudCBhbmQgc2hvdWxkIGJl
IGRlbGV0ZWQgCiAvLyB3aGVuIHRoYXQgZnVuY3Rpb24gZ29lcyBhd2F5LgogI2ltcG9ydCAiUmVu
ZGVyV2lkZ2V0LmgiCi11c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7Ci11c2luZyBXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQ7CiAKIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvbmx5IGJ5IHRoZSB0
d28gRm9ybUF1dG9GaWxsVHJhbnNpdGlvbiBjYXRlZ29yaWVzLCBhbmQgd2lsbCBnbyBhd2F5CiAv
LyBhcyBzb29uIGFzIHBvc3NpYmxlLgogc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9N
RWxlbWVudCAqZWxlbWVudCkKIHsKLSAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW2VsZW1l
bnQgX2VsZW1lbnRdLT5yZW5kZXJlcigpOworICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVu
ZGVyZXIgPSBbZWxlbWVudCBfZWxlbWVudF0tPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc1dpZGdldCgpKSB7Ci0gICAgICAgIFdpZGdldCAqd2lkZ2V0ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgUmVuZGVyV2lkZ2V0Kj4ocmVuZGVyZXIpLT53aWRnZXQoKTsKKyAgICAg
ICAgV2ViQ29yZTo6V2lkZ2V0ICp3aWRnZXQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQqPihyZW5kZXJlciktPndpZGdldCgpOwogICAgICAgICBpZiAod2lkZ2V0KSB7
CiAgICAgICAgICAgICB3aWRnZXQtPnBvcHVsYXRlKCk7CiAgICAgICAgICAgICByZXR1cm4gd2lk
Z2V0LT5nZXRWaWV3KCk7CkBAIC0xODgsOSArMTcyLDkgQEAgc3RhdGljIE5TVmlldyAqdmlld0Zv
ckVsZW1lbnQoRE9NRWxlbWVudAogCiAtICh2b2lkKV9yZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6
KE5TUmFuZ2UpdGFyZ2V0UmFuZ2Ugd2l0aFN0cmluZzooTlNTdHJpbmcgKilyZXBsYWNlbWVudFN0
cmluZyBzZWxlY3RpbmdGcm9tSW5kZXg6KGludClpbmRleAogewotICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsKKyAgICBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBbc2VsZiBfSFRNTElucHV0RWxlbWVu
dF07CiAgICAgaWYgKGlucHV0RWxlbWVudCkgewotICAgICAgICBTdHJpbmcgbmV3VmFsdWUgPSBp
bnB1dEVsZW1lbnQtPnZhbHVlKCkucmVwbGFjZSh0YXJnZXRSYW5nZS5sb2NhdGlvbiwgdGFyZ2V0
UmFuZ2UubGVuZ3RoLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgICAgIFdlYkNvcmU6OlN0cmlu
ZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC0+dmFsdWUoKS5yZXBsYWNlKHRhcmdldFJhbmdlLmxv
Y2F0aW9uLCB0YXJnZXRSYW5nZS5sZW5ndGgsIHJlcGxhY2VtZW50U3RyaW5nKTsKICAgICAgICAg
aW5wdXRFbGVtZW50LT5zZXRWYWx1ZShuZXdWYWx1ZSk7CiAgICAgICAgIGlucHV0RWxlbWVudC0+
c2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxlbmd0aCgpKTsKICAgICB9CkBAIC0x
OTgsNyArMTgyLDcgQEAgc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9NRWxlbWVudAog
CiAtIChOU1JhbmdlKV9zZWxlY3RlZFJhbmdlCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5w
dXRFbGVtZW50ID0gW3NlbGYgX0hUTUxJbnB1dEVsZW1lbnRdOworICAgIFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsKICAg
ICBpZiAoaW5wdXRFbGVtZW50KSB7CiAgICAgICAgIGludCBzdGFydCA9IGlucHV0RWxlbWVudC0+
c2VsZWN0aW9uU3RhcnQoKTsKICAgICAgICAgaW50IGVuZCA9IGlucHV0RWxlbWVudC0+c2VsZWN0
aW9uRW5kKCk7CkBAIC0yMTIsNyArMTk2LDcgQEAgc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1l
bnQoRE9NRWxlbWVudAogICAgIC8vIFRoaXMgbm90aWZpZXMgdGhlIGlucHV0IGVsZW1lbnQgdGhh
dCB0aGUgY29udGVudCBoYXMgYmVlbiBhdXRvZmlsbGVkCiAgICAgLy8gVGhpcyBhbGxvd3MgV2Vi
S2l0IHRvIG9iZXkgdGhlIC13ZWJraXQtYXV0b2ZpbGwgcHNldWRvIHN0eWxlLCB3aGljaAogICAg
IC8vIGNoYW5nZXMgdGhlIGJhY2tncm91bmQgY29sb3IuCi0gICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gW3NlbGYgX0hUTUxJbnB1dEVsZW1lbnRdOworICAgIFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsK
ICAgICBpZiAoaW5wdXRFbGVtZW50KQogICAgICAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxs
ZWQoZmlsbGVkKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCShyZXZp
c2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgQXR0cjsKICAgICBjbGFzcyBDREFUQVNlY3Rpb247CisgICAgY2xhc3MgQ1NTUHJpbWl0aXZl
VmFsdWU7CiAgICAgY2xhc3MgQ1NTUnVsZTsKICAgICBjbGFzcyBDU1NSdWxlTGlzdDsKICAgICBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpAQCAtMjAxLDEwICsyMDIsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAtIChXZWJDb3JlOjpEb2N1bWVudCAqKV9kb2N1bWVudDsKIEBlbmQKIAotQGlu
dGVyZmFjZSBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsRXh0ZW5zaW9uKQotLSAoRE9NRWxl
bWVudCAqKV9vd25lckVsZW1lbnQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFn
bWVudCAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVu
dEZyYWdtZW50V2l0aDooV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCAqKWltcGw7CiAtIChXZWJD
b3JlOjpEb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnQ7CkBAIC0yOTMsNiArMjkw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQGVuZAogCiBAaW50ZXJmYWNlIERPTUNTU1ByaW1p
dGl2ZVZhbHVlIChXZWJDb3JlSW50ZXJuYWwpCistIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZSAqKV9DU1NQcmltaXRpdmVWYWx1ZTsKICsgKERPTUNTU1ByaW1pdGl2ZVZhbHVlICopX0NTU1By
aW1pdGl2ZVZhbHVlV2l0aDooV2ViQ29yZTo6Q1NTVmFsdWUgKilpbXBsOwogQGVuZAogCkBAIC00
MjMsMTkgKzQyMSwyMCBAQCBpbmxpbmUgdm9pZCByYWlzZU9uRE9NRXJyb3IoV2ViQ29yZTo6RXhj
CiAgICAgICAgIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2xhc3MgV2ViQ29yZTo6dHlwZSo+
KHApOyB9CiAKIC8vIE5vIGNsYXNzIHNob3VsZCBhcHBlYXIgaW4gdGhpcyBsaXN0IGlmIGl0cyBi
YXNlIGNsYXNzIGlzIGFscmVhZHkgaGVyZS4KLUFMTE9XX0RPTV9DQVNUKENvdW50ZXIpCiBBTExP
V19ET01fQ0FTVChDU1NSdWxlKQogQUxMT1dfRE9NX0NBU1QoQ1NTUnVsZUxpc3QpCiBBTExPV19E
T01fQ0FTVChDU1NTdHlsZURlY2xhcmF0aW9uKQogQUxMT1dfRE9NX0NBU1QoQ1NTU3R5bGVTaGVl
dCkKIEFMTE9XX0RPTV9DQVNUKENTU1ZhbHVlKQorQUxMT1dfRE9NX0NBU1QoQ291bnRlcikKIEFM
TE9XX0RPTV9DQVNUKERPTUltcGxlbWVudGF0aW9uRnJvbnQpCitBTExPV19ET01fQ0FTVChFdmVu
dCkKIEFMTE9XX0RPTV9DQVNUKEhUTUxDb2xsZWN0aW9uKQogQUxMT1dfRE9NX0NBU1QoSFRNTE9w
dGlvbnNDb2xsZWN0aW9uKQogQUxMT1dfRE9NX0NBU1QoTWVkaWFMaXN0KQogQUxMT1dfRE9NX0NB
U1QoTmFtZWROb2RlTWFwKQotQUxMT1dfRE9NX0NBU1QoTm9kZUZpbHRlcikKIEFMTE9XX0RPTV9D
QVNUKE5vZGUpCitBTExPV19ET01fQ0FTVChOb2RlRmlsdGVyKQogQUxMT1dfRE9NX0NBU1QoTm9k
ZUl0ZXJhdG9yKQogQUxMT1dfRE9NX0NBU1QoTm9kZUxpc3QpCiBBTExPV19ET01fQ0FTVChSYW5n
ZSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0LmgJKHJldmlzaW9uIDE2NDE1KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwy
OCArMzAsNiBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBET01UaW1lU3RhbXA7CiAK
LWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV4Y2VwdGlvbjsKLQotLy8gRE9NIGV4Y2VwdGlv
biBjb2RlcwotZW51bSB7Ci0gICAgRE9NX0lOREVYX1NJWkVfRVJSICAgICAgICAgICAgICAgID0g
MSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICAgICAgPSAyLAotICAgIERPTV9I
SUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCi0gICAgRE9NX1dST05HX0RPQ1VNRU5U
X0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAg
ICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJSICAgICAgICAgICA9IDYsCi0gICAg
RE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0gNywKLSAgICBET01fTk9UX0ZPVU5E
X0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9OT1RfU1VQUE9SVEVEX0VSUiAgICAg
ICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgICAgID0gMTAs
Ci0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgID0gMTEsCi0gICAgRE9NX1NZ
TlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCi0gICAgRE9NX0lOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05BTUVTUEFDRV9FUlIgICAgICAgICAgICAg
ICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUKLX07
Ci0KLQogdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7
CiAKIEBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgJKHJldmlzaW9uIDE2NDE1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MU3R5bGVFbGVtZW50UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MVGV4dEFyZWFFbGVtZW50UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01LZXlib2FyZEV2ZW50UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01Nb3VzZUV2ZW50UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlSXRlcmF0b3JQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGVQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRE9NVUlFdmVudFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NV2hlZWxFdmVudFBy
aXZhdGUuaD4KQEAgLTYyLDE1ICs2NCw2IEBACiAtIChOU1N0cmluZyAqKV90ZXh0OwogQGVuZAog
Ci1AaW50ZXJmYWNlIERPTVJHQkNvbG9yIChXZWJQcml2YXRlKQotLy8gZmFzdCBhbmQgZWFzeSB3
YXkgb2YgZ2V0dGluZyBhbiBOU0NvbG9yIGZvciBhIERPTVJHQkNvbG9yCi0tIChOU0NvbG9yICop
X2NvbG9yOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vZGUgKFdlYlByaXZhdGUpCi0tIChCT09M
KWlzQ29udGVudEVkaXRhYmxlOwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUVsZW1lbnQgKFdlYlBy
aXZhdGUpCiAtIChOU0ZvbnQgKilfZm9udDsKIC0gKE5TRGF0YSAqKV9pbWFnZVRJRkZSZXByZXNl
bnRhdGlvbjsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCShyZXZpc2lvbiAxNjQxNSkK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyMCArMjgsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKLWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTVJhbmdl
RXhjZXB0aW9uOworI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZUV4Y2VwdGlvbi5oPgogCisvLyBE
T00gUmFuZ2UgY29tcGFyaXNvbiBjb2RlcwogZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gcmFu
Z2UgZXhjZXB0aW9uIGNvZGVzCi0gICAgLy8KLSAgICBET01fQkFEX0JPVU5EQVJZUE9JTlRTX0VS
UiAgICAgICAgPSAxLAotICAgIERPTV9JTlZBTElEX05PREVfVFlQRV9FUlIgICAgICAgICA9IDIK
LX07Ci0KLWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIFJhbmdlIGNvbXBhcmlzb24gY29kZXMK
LSAgICAvLwogICAgIERPTV9TVEFSVF9UT19TVEFSVCAgICAgICAgICAgICAgICA9IDAsCiAgICAg
RE9NX1NUQVJUX1RPX0VORCAgICAgICAgICAgICAgICAgID0gMSwKICAgICBET01fRU5EX1RPX0VO
RCAgICAgICAgICAgICAgICAgICAgPSAyLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVJhbmdlRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVJhbmdlRXhjZXB0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NUmFuZ2VFeGNlcHRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NUmFuZ2VF
eGNlcHRpb247CisKK2VudW0gRE9NUmFuZ2VFeGNlcHRpb25Db2RlIHsKKyAgICBET01fQkFEX0JP
VU5EQVJZUE9JTlRTX0VSUiAgICAgICAgPSAxLAorICAgIERPTV9JTlZBTElEX05PREVfVFlQRV9F
UlIgICAgICAgICA9IDIKK307CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkocmV2aXNp
b24gMTY0MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAotQGludGVyZmFjZSBET01BYnN0cmFjdFZp
ZXcgOiBET01PYmplY3QKLS0gKERPTURvY3VtZW50ICopZG9jdW1lbnQ7Ci1AZW5kCisjaW1wb3J0
IDxXZWJDb3JlL0RPTUFic3RyYWN0Vmlldy5oPgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3
cy5tbQkocmV2aXNpb24gMTY0MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET01WaWV3cy5oIgotCi0jaW1wb3J0ICJET01J
bnRlcm5hbC5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRPTVdpbmRvdy5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3
OwotfQotCi1BTExPV19ET01fQ0FTVChET01XaW5kb3cpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01B
YnN0cmFjdFZpZXcKLQotLSAoRE9NRG9jdW1lbnQgKilkb2N1bWVudAotewotICAgIHJldHVybiBb
RE9NRG9jdW1lbnQgX2RvY3VtZW50V2l0aDpbc2VsZiBfYWJzdHJhY3RWaWV3XS0+ZG9jdW1lbnQo
KV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUFic3RyYWN0VmlldyAoV2ViQ29y
ZUludGVybmFsKQotCi0tIChXZWJDb3JlOjpBYnN0cmFjdFZpZXcgKilfYWJzdHJhY3RWaWV3Ci17
Ci0gICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6OkFic3RyYWN0VmlldyAqPihfaW50ZXJuYWwp
OwotfQotCi0tIChpZClfaW5pdFdpdGhBYnN0cmFjdFZpZXc6KFdlYkNvcmU6OkFic3RyYWN0Vmll
dyAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGlt
cGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLSsgKERPTUFic3RyYWN0VmlldyAqKV9hYnN0cmFjdFZpZXdXaXRoOihXZWJDb3Jl
OjpBYnN0cmFjdFZpZXcgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0g
Z2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJl
dHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJl
dHVybiBbW1tET01BYnN0cmFjdFZpZXcgYWxsb2NdIF9pbml0V2l0aEFic3RyYWN0VmlldzppbXBs
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01YUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5o
CShyZXZpc2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAorI2ltcG9ydCA8V2ViQ29y
ZS9ET01YUGF0aEV4Y2VwdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01YUGF0aEV4cHJlc3Np
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTVhQYXRoUmVzdWx0Lmg+Ci0KLWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTVhQ
YXRoRXhjZXB0aW9uOwotCi1lbnVtIERPTVhQYXRoRXhjZXB0aW9uQ29kZSB7Ci0gICAgRE9NX0lO
VkFMSURfRVhQUkVTU0lPTl9FUlIgPSA1MSwKLSAgICBET01fVFlQRV9FUlIgPSA1MgotfTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4Y2VwdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhjZXB0aW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2V4dGVy
biBOU1N0cmluZyAqIGNvbnN0IERPTVhQYXRoRXhjZXB0aW9uOworCitlbnVtIERPTVhQYXRoRXhj
ZXB0aW9uQ29kZSB7CisgICAgRE9NX0lOVkFMSURfRVhQUkVTU0lPTl9FUlIgICAgICA9IDUxLAor
ICAgIERPTV9UWVBFX0VSUiAgICAgICAgICAgICAgICAgICAgPSA1MgorfTsKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDE2
NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC02NDYsNiArNjQ2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZU5h
bWUpOwogICAgIG15ICRwYXJlbnRJbXBsQ2xhc3NOYW1lID0gR2V0UGFyZW50SW1wbENsYXNzTmFt
ZSgkZGF0YU5vZGUpOwogICAgIG15ICRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSA9ICJXZWJD
b3JlOjoiIC4gJGltcGxDbGFzc05hbWU7CisgICAgbXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKIAogICAgIG15ICRudW1BdHRy
aWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OwogICAgIG15ICRudW1GdW5jdGlvbnMg
PSBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfTsKQEAgLTY1Niw2ICs2NTcsOCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICMgLSBJTkNMVURFUyAtCiAgICAgcHVzaChAaW1wbENvbnRl
bnRIZWFkZXIsICJcbiNpbXBvcnQgXCJjb25maWcuaFwiXG4iKTsKIAorICAgIHB1c2goQGltcGxD
b250ZW50SGVhZGVyLCAiXG4jaWZkZWYgJHtjb25kaXRpb25hbH1fU1VQUE9SVFxuXG4iKSBpZiAk
Y29uZGl0aW9uYWw7CisKICAgICBteSAkY2xhc3NIZWFkZXJOYW1lID0gR2V0Q2xhc3NIZWFkZXJO
YW1lKCRjbGFzc05hbWUpOwogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBc
IiRjbGFzc0hlYWRlck5hbWUuaFwiXG5cbiIpOwogCkBAIC0xMDgwLDYgKzEwODMsOCBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAjIEVORCBXZWJDb3JlSW50ZXJuYWwgY2F0
ZWdvcnkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcQGVuZFxuIik7CiAgICAgfQorICAg
IAorICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbH1fU1VQ
UE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOwogfQogCiAjIEludGVybmFsIGhlbHBlcgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAxNjQxNSkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDM2NSArNDQsMzYzIEBAIG15ICRkb2N1bWVudCA9IDA7ICMgV2lsbCBob2xkIHRoZSByZXN1bHQK
ICMgRGVmYXVsdCBDb25zdHJ1Y3Rvcgogc3ViIG5ldwogewotICBteSAkb2JqZWN0ID0gc2hpZnQ7
Ci0gIG15ICRyZWZlcmVuY2UgPSB7IH07CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15
ICRyZWZlcmVuY2UgPSB7IH07CiAKLSAgJGRvY3VtZW50ID0gMDsKLSAgJGJlUXVpZXQgPSBzaGlm
dDsKKyAgICAkZG9jdW1lbnQgPSAwOworICAgICRiZVF1aWV0ID0gc2hpZnQ7CiAKLSAgYmxlc3Mo
JHJlZmVyZW5jZSwgJG9iamVjdCk7Ci0gIHJldHVybiAkcmVmZXJlbmNlOworICAgIGJsZXNzKCRy
ZWZlcmVuY2UsICRvYmplY3QpOworICAgIHJldHVybiAkcmVmZXJlbmNlOwogfQogCiAjIFJldHVy
bnMgdGhlIHBhcnNlZCAnaWRsRG9jdW1lbnQnCiBzdWIgUGFyc2UKIHsKLSAgbXkgJG9iamVjdCA9
IHNoaWZ0OwotICBteSAkZmlsZU5hbWUgPSBzaGlmdDsKLSAgbXkgJGRlZmluZXMgPSBzaGlmdDsK
LSAgCi0gIHByaW50ICIgfCAqKiogU3RhcnRpbmcgdG8gcGFyc2UgJGZpbGVOYW1lLi4uXG4gfFxu
IiBpZighJGJlUXVpZXQpOworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZmlsZU5h
bWUgPSBzaGlmdDsKKyAgICBteSAkZGVmaW5lcyA9IHNoaWZ0OworCisgICAgcHJpbnQgIiB8ICoq
KiBTdGFydGluZyB0byBwYXJzZSAkZmlsZU5hbWUuLi5cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsK
KworICAgIG9wZW4gRklMRSwgIi18IiwgIi91c3IvYmluL2djYyIsICItRSIsICItUCIsICIteCIs
ICJjKysiLCAKKyAgICAgICAgKG1hcCB7ICItRCRfIiB9IHNwbGl0KC8gLywgJGRlZmluZXMpKSwg
JGZpbGVOYW1lIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJGZpbGVOYW1lIjsKKyAgICBteSBAZG9j
dW1lbnRDb250ZW50ID0gPEZJTEU+OworICAgIGNsb3NlIEZJTEU7CisKKyAgICBteSAkZGF0YUF2
YWlsYWJsZSA9IDA7CisKKyAgICAjIFNpbXBsZSBJREwgUGFyc2VyICh0bSkKKyAgICBmb3JlYWNo
IChAZG9jdW1lbnRDb250ZW50KSB7CisgICAgICAgIG15ICRuZXdQYXJzZU1vZGUgPSAkb2JqZWN0
LT5EZXRlcm1pbmVQYXJzZU1vZGUoJF8pOworCisgICAgICAgIGlmICgkbmV3UGFyc2VNb2RlIG5l
IE1PREVfVU5ERUYpIHsKKyAgICAgICAgICAgIGlmICgkZGF0YUF2YWlsYWJsZSBlcSAwKSB7Cisg
ICAgICAgICAgICAgICAgJGRhdGFBdmFpbGFibGUgPSAxOyAjIFN0YXJ0IG5vZGUgYnVpbGRpbmcu
Li4KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJG9iamVjdC0+UHJvY2Vz
c1NlY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gIG9wZW4gRklMRSwgIi18
IiwgIi91c3IvYmluL2djYyIsICItRSIsICItUCIsICIteCIsICJjKysiLCAKLSAgICAgIChtYXAg
eyAiLUQkXyIgfSBzcGxpdCgvIC8sICRkZWZpbmVzKSksICRmaWxlTmFtZSBvciBkaWUgIkNvdWxk
IG5vdCBvcGVuICRmaWxlTmFtZSI7Ci0gIG15IEBkb2N1bWVudENvbnRlbnQgPSA8RklMRT47Ci0g
IGNsb3NlIEZJTEU7Ci0KLSAgbXkgJGRhdGFBdmFpbGFibGUgPSAwOwotCi0gICMgU2ltcGxlIElE
TCBQYXJzZXIgKHRtKQotICBmb3JlYWNoKEBkb2N1bWVudENvbnRlbnQpIHsKLSAgICBteSAkbmV3
UGFyc2VNb2RlID0gJG9iamVjdC0+RGV0ZXJtaW5lUGFyc2VNb2RlKCRfKTsKLQotICAgIGlmKCRu
ZXdQYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgewotICAgICAgaWYoJGRhdGFBdmFpbGFibGUgZXEg
MCkgewotICAgICAgICAkZGF0YUF2YWlsYWJsZSA9IDE7ICMgU3RhcnQgbm9kZSBidWlsZGluZy4u
LgotICAgICAgfSBlbHNlIHsKLSAgICAgICAgJG9iamVjdC0+UHJvY2Vzc1NlY3Rpb24oKTsKLSAg
ICAgIH0KLSAgICB9CisgICAgICAgICMgVXBkYXRlIGRldGVjdGVkIGRhdGEgc3RyZWFtIG1vZGUu
Li4KKyAgICAgICAgaWYgKCRuZXdQYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgeworICAgICAgICAg
ICAgJHBhcnNlTW9kZSA9ICRuZXdQYXJzZU1vZGU7CisgICAgICAgIH0KIAotICAgICMgVXBkYXRl
IGRldGVjdGVkIGRhdGEgc3RyZWFtIG1vZGUuLi4KLSAgICBpZigkbmV3UGFyc2VNb2RlIG5lIE1P
REVfVU5ERUYpIHsKLSAgICAgICRwYXJzZU1vZGUgPSAkbmV3UGFyc2VNb2RlOworICAgICAgICBw
dXNoKEB0ZW1wb3JhcnlDb250ZW50LCAkXyk7CiAgICAgfQogCi0gICAgcHVzaChAdGVtcG9yYXJ5
Q29udGVudCwgJF8pOwotICB9CisgICAgIyBDaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyByZW1h
aW5pbmcgdG8gcGFyc2UuLi4KKyAgICBpZiAoKCRwYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgYW5k
ICgkI3RlbXBvcmFyeUNvbnRlbnQgPiAwKSkgeworICAgICAgICAkb2JqZWN0LT5Qcm9jZXNzU2Vj
dGlvbigpOworICAgIH0KIAotICAjIENoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHJlbWFpbmlu
ZyB0byBwYXJzZS4uLgotICBpZigoJHBhcnNlTW9kZSBuZSBNT0RFX1VOREVGKSBhbmQgKCQjdGVt
cG9yYXJ5Q29udGVudCA+IDApKSB7Ci0gICAgJG9iamVjdC0+UHJvY2Vzc1NlY3Rpb24oKTsKLSAg
fQorICAgIHByaW50ICIgfCAqKiogRmluaXNoZWQgcGFyc2luZyFcbiIgdW5sZXNzICRiZVF1aWV0
OworIAorICAgICRkb2N1bWVudC0+ZmlsZU5hbWUoJGZpbGVOYW1lKTsKIAotICBwcmludCAiIHwg
KioqIEZpbmlzaGVkIHBhcnNpbmchXG4iIGlmKCEkYmVRdWlldCk7Ci0gIAotICAkZG9jdW1lbnQt
PmZpbGVOYW1lKCRmaWxlTmFtZSk7Ci0gIAotICByZXR1cm4gJGRvY3VtZW50OworICAgIHJldHVy
biAkZG9jdW1lbnQ7CiB9CiAKIHN1YiBQYXJzZU1vZHVsZQogewotICBteSAkb2JqZWN0ID0gc2hp
ZnQ7Ci0gIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKIAotICBwcmludCAiIHwtIFRyeWluZyB0byBwYXJzZSBt
b2R1bGUuLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICBwcmludCAiIHwtIFRyeWluZyB0byBwYXJz
ZSBtb2R1bGUuLi5cbiIgdW5sZXNzICRiZVF1aWV0OwogCi0gIG15ICRkYXRhID0gam9pbigiIiwg
QHRlbXBvcmFyeUNvbnRlbnQpOwotICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6bW9kdWxlU2Vs
ZWN0b3IvOworICAgIG15ICRkYXRhID0gam9pbigiIiwgQHRlbXBvcmFyeUNvbnRlbnQpOworICAg
ICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjptb2R1bGVTZWxlY3Rvci87CiAKLSAgbXkgJG1vZHVs
ZU5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpc
biRkYXRhXG4pIikpOwotICAkZGF0YU5vZGUtPm1vZHVsZSgkbW9kdWxlTmFtZSk7CisgICAgbXkg
JG1vZHVsZU5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNv
dXJjZTpcbiRkYXRhXG4pIikpOworICAgICRkYXRhTm9kZS0+bW9kdWxlKCRtb2R1bGVOYW1lKTsK
IAotICBwcmludCAiICB8LS0tLT4gTW9kdWxlOyBOQU1FIFwiJG1vZHVsZU5hbWVcIlxuIHwtXG4g
fFxuIiBpZighJGJlUXVpZXQpOworICAgIHByaW50ICIgIHwtLS0tPiBNb2R1bGU7IE5BTUUgXCIk
bW9kdWxlTmFtZVwiXG4gfC1cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsKIH0KIAogc3ViIGR1bXBF
eHRlbmRlZEF0dHJpYnV0ZXMKIHsKLSAgbXkgJHBhZFN0ciA9IHNoaWZ0OwotICBteSAkYXR0cnMg
PSBzaGlmdDsKKyAgICBteSAkcGFkU3RyID0gc2hpZnQ7CisgICAgbXkgJGF0dHJzID0gc2hpZnQ7
CiAKLSAgaWYgKCEleyRhdHRyc30pIHsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLQotICBteSBAdGVt
cDsKLSAgd2hpbGUgKCgkbmFtZSwgJHZhbHVlKSA9IGVhY2goJXskYXR0cnN9KSkgewotICAgIHB1
c2goQHRlbXAsICIkbmFtZT0kdmFsdWUiKTsKLSAgfQotICAKLSAgcmV0dXJuICRwYWRTdHIgLiAi
WyIgLiBqb2luKCIsICIsIEB0ZW1wKSAuICJdIjsKKyAgICBpZiAoISV7JGF0dHJzfSkgeworICAg
ICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgbXkgQHRlbXA7CisgICAgd2hpbGUgKCgkbmFt
ZSwgJHZhbHVlKSA9IGVhY2goJXskYXR0cnN9KSkgeworICAgICAgICBwdXNoKEB0ZW1wLCAiJG5h
bWU9JHZhbHVlIik7CisgICAgfQorCisgICAgcmV0dXJuICRwYWRTdHIgLiAiWyIgLiBqb2luKCIs
ICIsIEB0ZW1wKSAuICJdIjsKIH0KIAogc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzCiB7Ci0g
IG15ICRzdHIgPSBzaGlmdDsKLSAgJHN0ciA9fiBzL1xbXHMqKC4qKVxdLyQxL2c7Ci0gIAotICBt
eSAlYXR0cnMgPSAoKTsKLSAgCi0gIGZvcmVhY2ggbXkgJHZhbHVlIChzcGxpdCgvXHMqLFxzKi8s
ICRzdHIpKSB7Ci0gICAgKCRuYW1lLCR2YWx1ZSkgPSBzcGxpdCgvXHMqPVxzKi8sJHZhbHVlLDIp
OworICAgIG15ICRzdHIgPSBzaGlmdDsKKyAgICAkc3RyID1+IHMvXFtccyooLiopXF0vJDEvZzsK
IAotICAgICMgQXR0cmlidXRlcyB3aXRoIG5vIHZhbHVlIGFyZSBzZXQgdG8gYmUgdHJ1ZQotICAg
ICR2YWx1ZSA9IDEgdW5sZXNzIGRlZmluZWQgJHZhbHVlOwotICAgICRhdHRyc3skbmFtZX0gPSAk
dmFsdWU7Ci0gIH0KLSAgCi0gIHJldHVybiBcJWF0dHJzOworICAgIG15ICVhdHRycyA9ICgpOwor
CisgICAgZm9yZWFjaCBteSAkdmFsdWUgKHNwbGl0KC9ccyosXHMqLywgJHN0cikpIHsKKyAgICAg
ICAgKCRuYW1lLCR2YWx1ZSkgPSBzcGxpdCgvXHMqPVxzKi8sICR2YWx1ZSwgMik7CisKKyAgICAg
ICAgIyBBdHRyaWJ1dGVzIHdpdGggbm8gdmFsdWUgYXJlIHNldCB0byBiZSB0cnVlCisgICAgICAg
ICR2YWx1ZSA9IDEgdW5sZXNzIGRlZmluZWQgJHZhbHVlOworICAgICAgICAkYXR0cnN7JG5hbWV9
ID0gJHZhbHVlOworICAgIH0KKworICAgIHJldHVybiBcJWF0dHJzOwogfQogCiBzdWIgUGFyc2VJ
bnRlcmZhY2UKIHsKLSAgbXkgJG9iamVjdCA9IHNoaWZ0OwotICBteSAkZGF0YU5vZGUgPSBzaGlm
dDsKLSAgbXkgJHNlY3Rpb25OYW1lID0gc2hpZnQ7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0Owor
ICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRzZWN0aW9uTmFtZSA9IHNoaWZ0Owor
CisgICAgbXkgJGRhdGEgPSBqb2luKCIiLCBAdGVtcG9yYXJ5Q29udGVudCk7CisKKyAgICAjIExv
b2sgZm9yIGVuZC1vZi1pbnRlcmZhY2UgbWFyaworICAgICRkYXRhID1+IC99Oy9nOworICAgICRk
YXRhID0gc3Vic3RyKCRkYXRhLCBpbmRleCgkZGF0YSwgJHNlY3Rpb25OYW1lKSwgcG9zKCRkYXRh
KSAtIGxlbmd0aCgkZGF0YSkpOworCisgICAgJGRhdGEgPX4gcy9bXG5ccl0vL2c7CisKKyAgICAj
IEJlZ2lubmluZyBvZiB0aGUgcmVnZXhwIHBhcnNpbmcgbWFnaWMKKyAgICBpZiAoJHNlY3Rpb25O
YW1lIGVxICJleGNlcHRpb24iKSB7CisgICAgICAgIHByaW50ICIgfC0gVHJ5aW5nIHRvIHBhcnNl
IGV4Y2VwdGlvbi4uLlxuIiB1bmxlc3MgJGJlUXVpZXQ7CisKKyAgICAgICAgbXkgJGV4Y2VwdGlv
bk5hbWUgPSAiIjsKKyAgICAgICAgbXkgJGV4Y2VwdGlvbkRhdGEgPSAiIjsKKyAgICAgICAgbXkg
JGV4Y2VwdGlvbkRhdGFOYW1lID0gIiI7CisgICAgICAgIG15ICRleGNlcHRpb25EYXRhVHlwZSA9
ICIiOworCisgICAgICAgICMgTWF0Y2ggaWRlbnRpZmllciBvZiB0aGUgZXhjZXB0aW9uLCBhbmQg
ZW5jbG9zZWQgZGF0YS4uLgorICAgICAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0
aW9uU2VsZWN0b3IvOworICAgICAgICAkZXhjZXB0aW9uTmFtZSA9IChkZWZpbmVkKCQxKSA/ICQx
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7CisgICAgICAgICRl
eGNlcHRpb25EYXRhID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5T
b3VyY2U6XG4kZGF0YVxuKSIpKTsKIAotICBteSAkZGF0YSA9IGpvaW4oIiIsIEB0ZW1wb3JhcnlD
b250ZW50KTsKKyAgICAgICAgKCcnID1+IC9eLyk7ICMgUmVzZXQgdmFyaWFibGVzIG5lZWRlZCBm
b3IgcmVnZXhwIG1hdGNoaW5nCiAKLSAgIyBMb29rIGZvciBlbmQtb2YtaW50ZXJmYWNlIG1hcmsK
LSAgJGRhdGEgPX4gL307L2c7Ci0gICRkYXRhID0gc3Vic3RyKCRkYXRhLCBpbmRleCgkZGF0YSwg
JHNlY3Rpb25OYW1lKSwgcG9zKCRkYXRhKSAtIGxlbmd0aCgkZGF0YSkpOworICAgICAgICAjIC4u
LiBwYXJzZSBlbmNsb3NlZCBkYXRhIChnZXQuIG5hbWUgJiB0eXBlKQorICAgICAgICAkZXhjZXB0
aW9uRGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU3ViU2VsZWN0b3IvOworICAgICAg
ICAkZXhjZXB0aW9uRGF0YVR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAgICAkZXhjZXB0aW9uRGF0YU5hbWUg
PSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRh
XG4pIikpOwogCi0gICRkYXRhID1+IHMvW1xuXHJdLy9nOworICAgICAgICAjIEZpbGwgaW4gZG9t
Q2xhc3MgZGF0YXN0cnVjdHVyZQorICAgICAgICAkZGF0YU5vZGUtPm5hbWUoJGV4Y2VwdGlvbk5h
bWUpOwogCi0gICMgQmVnaW5uaW5nIG9mIHRoZSByZWdleHAgcGFyc2luZyBtYWdpYwotICBpZigk
c2VjdGlvbk5hbWUgZXEgImV4Y2VwdGlvbiIpIHsKLSAgICBwcmludCAiIHwtIFRyeWluZyB0byBw
YXJzZSBleGNlcHRpb24uLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAgbXkgJG5ld0RhdGFO
b2RlID0gbmV3IGRvbUF0dHJpYnV0ZSgpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnR5cGUoInJl
YWRvbmx5IGF0dHJpYnV0ZSIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcg
ZG9tU2lnbmF0dXJlKCkpOworCisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1l
KCRleGNlcHRpb25EYXRhTmFtZSk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50
eXBlKCRleGNlcHRpb25EYXRhVHlwZSk7CiAKLSAgICBteSAkZXhjZXB0aW9uTmFtZSA9ICIiOyBt
eSAkZXhjZXB0aW9uRGF0YSA9ICIiOwotICAgIG15ICRleGNlcHRpb25EYXRhTmFtZSA9ICIiOyBt
eSAkZXhjZXB0aW9uRGF0YVR5cGUgPSAiIjsKKyAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFO
b2RlLT5hdHRyaWJ1dGVzOworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRuZXdEYXRhTm9kZSk7
CisKKyAgICAgICAgcHJpbnQgIiAgfC0tLS0+IEV4Y2VwdGlvbjsgTkFNRSBcIiRleGNlcHRpb25O
YW1lXCIgREFUQSBUWVBFIFwiJGV4Y2VwdGlvbkRhdGFUeXBlXCIgREFUQSBOQU1FIFwiJGV4Y2Vw
dGlvbkRhdGFOYW1lXCJcbiB8LVxuIHxcbiIgdW5sZXNzICRiZVF1aWV0OworICAgIH0gZWxzaWYg
KCRzZWN0aW9uTmFtZSBlcSAiaW50ZXJmYWNlIikgeworICAgICAgICBwcmludCAiIHwtIFRyeWlu
ZyB0byBwYXJzZSBpbnRlcmZhY2UuLi5cbiIgdW5sZXNzICRiZVF1aWV0OworCisgICAgICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gIiI7CisgICAgICAgIG15ICRpbnRlcmZhY2VEYXRhID0gIiI7CisK
KyAgICAgICAgIyBNYXRjaCBpZGVudGlmaWVyIG9mIHRoZSBpbnRlcmZhY2UsIGFuZCBlbmNsb3Nl
ZCBkYXRhLi4uCisgICAgICAgICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VTZWxl
Y3Rvci87CisKKyAgICAgICAgJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVk
KCQxKSA/ICQxIDogIiAiKTsgY2hvcCgkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAg
ICAgICAgJGludGVyZmFjZU5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAgICAkaW50ZXJmYWNlQmFzZSA9IChk
ZWZpbmVkKCQzKSA/ICQzIDogIiIpOworICAgICAgICAkaW50ZXJmYWNlRGF0YSA9IChkZWZpbmVk
KCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7CisK
KyAgICAgICAgIyBGaWxsIGluIGtub3duIHBhcnRzIG9mIHRoZSBkb21DbGFzcyBkYXRhc3RydWN0
dXJlIG5vdy4uLgorICAgICAgICAkZGF0YU5vZGUtPm5hbWUoJGludGVyZmFjZU5hbWUpOworICAg
ICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmlidXRl
cygkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CisKKyAgICAgICAgIyBJbmhlcml0YW5j
ZSBkZXRlY3Rpb24KKyAgICAgICAgbXkgQGludGVyZmFjZVBhcmVudHMgPSBzcGxpdCgvLC8sICRp
bnRlcmZhY2VCYXNlKTsKKyAgICAgICAgZm9yZWFjaChAaW50ZXJmYWNlUGFyZW50cykgeworICAg
ICAgICAgICAgbXkgJGxpbmUgPSAkXzsKKyAgICAgICAgICAgICRsaW5lID1+IHMvXHMqLy9nOwor
CisgICAgICAgICAgICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPnBhcmVudHM7CisgICAgICAg
ICAgICBwdXNoKEAkYXJyYXlSZWYsICRsaW5lKTsKKyAgICAgICAgfQorCisgICAgICAgICRpbnRl
cmZhY2VEYXRhID1+IHMvW1xuXHJdLy9nOworICAgICAgICBteSBAaW50ZXJmYWNlTWV0aG9kcyA9
IHNwbGl0KC87LywgJGludGVyZmFjZURhdGEpOworCisgICAgICAgIGZvcmVhY2ggbXkgJGxpbmUg
KEBpbnRlcmZhY2VNZXRob2RzKSB7CisgICAgICAgICAgICBpZiAoJGxpbmUgPX4gL2F0dHJpYnV0
ZS8pIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNl
QXR0cmlidXRlU2VsZWN0b3IvOworCisgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUg
PSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOworICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVFeHRlbmRlZEF0dHJpYnV0ZXMg
PSAoZGVmaW5lZCgkMikgPyAkMiA6ICIgIik7IGNob3AoJGF0dHJpYnV0ZUV4dGVuZGVkQXR0cmli
dXRlcyk7CisKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlRGF0YVR5cGUgPSAoZGVmaW5l
ZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwor
ICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVEYXRhTmFtZSA9IChkZWZpbmVkKCQ0KSA/ICQ0
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAgIAotICAgICMg
TWF0Y2ggaWRlbnRpZmllciBvZiB0aGUgZXhjZXB0aW9uLCBhbmQgZW5jbG9zZWQgZGF0YS4uLgot
ICAgICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjpleGNlcHRpb25TZWxlY3Rvci87Ci0gICAgJGV4
Y2VwdGlvbk5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNv
dXJjZTpcbiRkYXRhXG4pIikpOwotICAgICRleGNlcHRpb25EYXRhID0gKGRlZmluZWQoJDIpID8g
JDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKLQotICAgICgn
JyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBtYXRjaGluZwot
Ci0gICAgIyAuLi4gcGFyc2UgZW5jbG9zZWQgZGF0YSAoZ2V0LiBuYW1lICYgdHlwZSkKLSAgICAk
ZXhjZXB0aW9uRGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU3ViU2VsZWN0b3IvOwot
ICAgICRleGNlcHRpb25EYXRhVHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5n
IGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7Ci0gICAgJGV4Y2VwdGlvbkRhdGFOYW1lID0g
KGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxu
KSIpKTsKLQotICAgICMgRmlsbCBpbiBkb21DbGFzcyBkYXRhc3RydWN0dXJlCi0gICAgJGRhdGFO
b2RlLT5uYW1lKCRleGNlcHRpb25OYW1lKTsKLQotICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBk
b21BdHRyaWJ1dGUoKTsKLSAgICAkbmV3RGF0YU5vZGUtPnR5cGUoInJlYWRvbmx5IGF0dHJpYnV0
ZSIpOwotICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7Ci0K
LSAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkZXhjZXB0aW9uRGF0YU5hbWUpOwot
ICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRleGNlcHRpb25EYXRhVHlwZSk7Ci0g
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmhhc1B0ckZsYWcoMCk7Ci0KLSAgICBteSAkYXJy
YXlSZWYgPSAkZGF0YU5vZGUtPmF0dHJpYnV0ZXM7Ci0gICAgcHVzaChAJGFycmF5UmVmLCAkbmV3
RGF0YU5vZGUpOwotCi0gICAgcHJpbnQgIiAgfC0tLS0+IEV4Y2VwdGlvbjsgTkFNRSBcIiRleGNl
cHRpb25OYW1lXCIgREFUQSBUWVBFIFwiJGV4Y2VwdGlvbkRhdGFUeXBlXCIgREFUQSBOQU1FIFwi
JGV4Y2VwdGlvbkRhdGFOYW1lXCJcbiB8LVxuIHxcbiIgaWYoISRiZVF1aWV0KTsKLSAgfSBlbHNp
Zigkc2VjdGlvbk5hbWUgZXEgImludGVyZmFjZSIpIHsKLSAgICBwcmludCAiIHwtIFRyeWluZyB0
byBwYXJzZSBpbnRlcmZhY2UuLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAgICAgICAgICAo
JycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hpbmcK
IAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gIiI7Ci0gICAgbXkgJGludGVyZmFjZURhdGEgPSAi
IjsKLSAgICAKLSAgICAjIE1hdGNoIGlkZW50aWZpZXIgb2YgdGhlIGludGVyZmFjZSwgYW5kIGVu
Y2xvc2VkIGRhdGEuLi4KLSAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlU2Vs
ZWN0b3IvOwotICAgIAotICAgICRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5l
ZCgkMSkgPyAkMSA6ICIgIik7IGNob3AoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyk7Ci0g
ICAgJGludGVyZmFjZU5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJv
ciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotICAgICRpbnRlcmZhY2VCYXNlID0gKGRlZmluZWQo
JDMpID8gJDMgOiAiIik7Ci0gICAgJGludGVyZmFjZURhdGEgPSAoZGVmaW5lZCgkNCkgPyAkNCA6
IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotCi0gICAgIyBGaWxs
IGluIGtub3duIHBhcnRzIG9mIHRoZSBkb21DbGFzcyBkYXRhc3RydWN0dXJlIG5vdy4uLgotICAg
ICRkYXRhTm9kZS0+bmFtZSgkaW50ZXJmYWNlTmFtZSk7Ci0gICAgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4dGVuZGVkQXR0
cmlidXRlcykpOwotCi0gICAgIyBJbmhlcml0YW5jZSBkZXRlY3Rpb24KLSAgICBteSBAaW50ZXJm
YWNlUGFyZW50cyA9IHNwbGl0KC8sLywgJGludGVyZmFjZUJhc2UpOwotICAgIGZvcmVhY2goQGlu
dGVyZmFjZVBhcmVudHMpIHsKLSAgICAgIG15ICRsaW5lID0gJF87Ci0gICAgICAkbGluZSA9fiBz
L1xzKi8vZzsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6Z2V0dGVy
UmFpc2VzU2VsZWN0b3IvOworICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJFeGNlcHRpb24gPSAo
ZGVmaW5lZCgkMSkgPyAkMSA6ICIiKTsKIAotICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2Rl
LT5wYXJlbnRzOwotICAgICAgcHVzaChAJGFycmF5UmVmLCAkbGluZSk7Ci0gICAgfQorICAgICAg
ICAgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpzZXR0ZXJSYWlzZXNTZWxlY3Rvci87
CisgICAgICAgICAgICAgICAgbXkgJHNldHRlckV4Y2VwdGlvbiA9IChkZWZpbmVkKCQxKSA/ICQx
IDogIiIpOwogCi0gICAgJGludGVyZmFjZURhdGEgPX4gcy9bXG5ccl0vL2c7Ci0gICAgbXkgQGlu
dGVyZmFjZU1ldGhvZHMgPSBzcGxpdCgvOy8sICRpbnRlcmZhY2VEYXRhKTsKKyAgICAgICAgICAg
ICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tQXR0cmlidXRlKCk7CisgICAgICAgICAgICAg
ICAgJG5ld0RhdGFOb2RlLT50eXBlKCRhdHRyaWJ1dGVUeXBlKTsKKyAgICAgICAgICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwogCi0gICAgZm9yZWFj
aChAaW50ZXJmYWNlTWV0aG9kcykgewotICAgICAgbXkgJGxpbmUgPSAkXzsKKyAgICAgICAgICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkYXR0cmlidXRlRGF0YU5hbWUpOwor
ICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRhdHRyaWJ1dGVE
YXRhVHlwZSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmlidXRlcygkYXR0cmlidXRlRXh0ZW5kZWRB
dHRyaWJ1dGVzKSk7CiAKLSAgICAgIGlmKCRsaW5lID1+IC9hdHRyaWJ1dGUvKSB7Ci0gICAgICAg
ICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VBdHRyaWJ1dGVTZWxlY3Rvci87Cisg
ICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5hdHRyaWJ1dGVzOworICAg
ICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKIAotICAgICAgICBt
eSAkYXR0cmlidXRlVHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRhdHRyaWJ1dGVFeHRlbmRlZEF0
dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMikgPyAkMiA6ICIgIik7IGNob3AoJGF0dHJpYnV0ZUV4dGVu
ZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIAotICAgICAgICBteSAkYXR0cmlidXRlRGF0YVR5cGUg
PSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOwotICAgICAgICBteSAkYXR0cmlidXRlRGF0YU5hbWUgPSAoZGVmaW5lZCgkNCkgPyAk
NCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICAg
IAotICAgICAgICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdl
eHAgbWF0Y2hpbmcKLSAgICAgICAgCi0gICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpn
ZXR0ZXJSYWlzZXNTZWxlY3Rvci87Ci0gICAgICAgIG15ICRnZXR0ZXJFeGNlcHRpb24gPSAoZGVm
aW5lZCgkMSkgPyAkMSA6ICIiKTsKLSAgICAgIAotICAgICAgICAkbGluZSA9fiAvJElETFN0cnVj
dHVyZTo6c2V0dGVyUmFpc2VzU2VsZWN0b3IvOwotICAgICAgICBteSAkc2V0dGVyRXhjZXB0aW9u
ID0gKGRlZmluZWQoJDEpID8gJDEgOiAiIik7Ci0gICAgICAKLSAgICAgICAgbXkgJG5ld0RhdGFO
b2RlID0gbmV3IGRvbUF0dHJpYnV0ZSgpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnR5cGUoJGF0
dHJpYnV0ZVR5cGUpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2ln
bmF0dXJlKCkpOworICAgICAgICAgICAgICAgIHByaW50ICIgIHwgIHw+ICBBdHRyaWJ1dGU7IFRZ
UEUgXCIkYXR0cmlidXRlVHlwZVwiIERBVEEgTkFNRSBcIiRhdHRyaWJ1dGVEYXRhTmFtZVwiIERB
VEEgVFlQRSBcIiRhdHRyaWJ1dGVEYXRhVHlwZVwiIEdFVCBFWENFUFRJT04/IFwiJGdldHRlckV4
Y2VwdGlvblwiIFNFVCBFWENFUFRJT04/IFwiJHNldHRlckV4Y2VwdGlvblwiIiAuCisgICAgICAg
ICAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAg
ICAiLCAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIg
dW5sZXNzICRiZVF1aWV0OwogCi0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1l
KCRhdHRyaWJ1dGVEYXRhTmFtZSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50
eXBlKCRhdHRyaWJ1dGVEYXRhVHlwZSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGF0dHJpYnV0ZUV4
dGVuZGVkQXR0cmlidXRlcykpOworICAgICAgICAgICAgICAgICRnZXR0ZXJFeGNlcHRpb24gPX4g
cy9ccysvL2c7CisgICAgICAgICAgICAgICAgJHNldHRlckV4Y2VwdGlvbiA9fiBzL1xzKy8vZzsK
KyAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+Z2V0dGVyRXhjZXB0aW9uc30gPSBzcGxp
dCgvLC8sICRnZXR0ZXJFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIEB7JG5ld0RhdGFOb2Rl
LT5zZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywgJHNldHRlckV4Y2VwdGlvbik7CisgICAg
ICAgICAgICB9IGVsc2lmICgoJGxpbmUgIX4gcy9eXHMqJC8vZykgYW5kICgkbGluZSAhfiAvXlxz
K2NvbnN0LykpIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50
ZXJmYWNlTWV0aG9kU2VsZWN0b3IvIG9yIGRpZSAiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRs
aW5lXG4pIjsKIAotICAgICAgICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPmF0dHJpYnV0ZXM7
Ci0gICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKKyAgICAgICAgICAgICAg
ICBteSAkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8gJDEgOiAiICIp
OyBjaG9wKCRtZXRob2RFeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAgICAgICAgIG15ICRt
ZXRob2RUeXBlID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kbGluZVxuKSIpKTsKKyAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFtZSA9IChkZWZp
bmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7
CisgICAgICAgICAgICAgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IChkZWZpbmVkKCQ0KSA/ICQ0
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAKLSAgICAgICAg
cHJpbnQgIiAgfCAgfD4gIEF0dHJpYnV0ZTsgVFlQRSBcIiRhdHRyaWJ1dGVUeXBlXCIgREFUQSBO
QU1FIFwiJGF0dHJpYnV0ZURhdGFOYW1lXCIgREFUQSBUWVBFIFwiJGF0dHJpYnV0ZURhdGFUeXBl
XCIgR0VUIEVYQ0VQVElPTj8gXCIkZ2V0dGVyRXhjZXB0aW9uXCIgU0VUIEVYQ0VQVElPTj8gXCIk
c2V0dGVyRXhjZXB0aW9uXCIiIC4KLSAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRl
cygiXG4gIHwgICAgICAgICAgICAgICAgICIsICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiBpZighJGJlUXVpZXQpOworICAgICAgICAgICAgICAgICgn
JyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBtYXRjaGluZwog
Ci0gICAgICAgICRnZXR0ZXJFeGNlcHRpb24gPX4gcy9ccysvL2c7Ci0gICAgICAgICRzZXR0ZXJF
eGNlcHRpb24gPX4gcy9ccysvL2c7Ci0gICAgICAgIEB7JG5ld0RhdGFOb2RlLT5nZXR0ZXJFeGNl
cHRpb25zfSA9IHNwbGl0KC8sLywgJGdldHRlckV4Y2VwdGlvbik7Ci0gICAgICAgIEB7JG5ld0Rh
dGFOb2RlLT5zZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywgJHNldHRlckV4Y2VwdGlvbik7
Ci0gICAgICB9IGVsc2lmKCgkbGluZSAhfiBzL15ccyokLy9nKSBhbmQgKCRsaW5lICF+IC9eXHMr
Y29uc3QvKSkgewotICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlTWV0
aG9kU2VsZWN0b3IvIG9yIGRpZSAiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIjsK
LQotICAgICAgICBteSAkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8g
JDEgOiAiICIpOyBjaG9wKCRtZXRob2RFeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAgICBteSAk
bWV0aG9kVHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291
cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRtZXRob2ROYW1lID0gKGRlZmluZWQoJDMp
ID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAg
ICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5n
IGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIAotICAgICAgICAoJycgPX4g
L14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hpbmcKLSAgICAg
ICAgCi0gICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpyYWlzZXNTZWxlY3Rvci87Ci0g
ICAgICAgIG15ICRtZXRob2RFeGNlcHRpb24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIiKTsKKyAg
ICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6cmFpc2VzU2VsZWN0b3IvOwor
ICAgICAgICAgICAgICAgIG15ICRtZXRob2RFeGNlcHRpb24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6
ICIiKTsKIAotICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24oKTsKIAotICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwotICAgICAg
ICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkbWV0aG9kTmFtZSk7Ci0gICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRtZXRob2RUeXBlKTsKLSAgICAgICAgJG5ld0Rh
dGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmli
dXRlcygkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Ci0KLSAgICAgICAgcHJpbnQgIiAgfCAg
fC0gIE1ldGhvZDsgVFlQRSBcIiRtZXRob2RUeXBlXCIgTkFNRSBcIiRtZXRob2ROYW1lXCIgRVhD
RVBUSU9OPyBcIiRtZXRob2RFeGNlcHRpb25cIiIgLgotICAgICAgICAgIGR1bXBFeHRlbmRlZEF0
dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAiLCAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIgaWYoISRiZVF1aWV0KTsKLQotICAgICAgICAkbWV0
aG9kRXhjZXB0aW9uID1+IHMvXHMrLy9nOwotICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2Vz
RXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwotCi0gICAgICAgIG15
IEBwYXJhbXMgPSBzcGxpdCgvLC8sICRtZXRob2RTaWduYXR1cmUpOwotICAgICAgICBmb3JlYWNo
KEBwYXJhbXMpIHsKLSAgICAgICAgICBteSAkbGluZSA9ICRfOwotCi0gICAgICAgICAgJGxpbmUg
PX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKLSAgICAgICAg
ICBteSAkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIgIik7
IGNob3AoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAgICBteSAkcGFyYW1UeXBl
ID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGlu
ZVxuKSIpKTsKLSAgICAgICAgICBteSAkcGFyYW1OYW1lID0gKGRlZmluZWQoJDMpID8gJDMgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLQotICAgICAgICAgIG15
ICRwYXJhbURhdGFOb2RlID0gbmV3IGRvbVNpZ25hdHVyZSgpOwotICAgICAgICAgICRwYXJhbURh
dGFOb2RlLT5uYW1lKCRwYXJhbU5hbWUpOwotICAgICAgICAgICRwYXJhbURhdGFOb2RlLT50eXBl
KCRwYXJhbVR5cGUpOwotICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Cisg
ICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgp
KTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkbWV0aG9k
TmFtZSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJG1l
dGhvZFR5cGUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJG1ldGhvZEV4dGVuZGVkQXR0
cmlidXRlcykpOwogCi0gICAgICAgICAgbXkgJGFycmF5UmVmID0gJG5ld0RhdGFOb2RlLT5wYXJh
bWV0ZXJzOwotICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJHBhcmFtRGF0YU5vZGUpOworICAg
ICAgICAgICAgICAgIHByaW50ICIgIHwgIHwtICBNZXRob2Q7IFRZUEUgXCIkbWV0aG9kVHlwZVwi
IE5BTUUgXCIkbWV0aG9kTmFtZVwiIEVYQ0VQVElPTj8gXCIkbWV0aG9kRXhjZXB0aW9uXCIiIC4K
KyAgICAgICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAg
ICAgICAgICIsICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4g
IlxuIiB1bmxlc3MgJGJlUXVpZXQ7CiAKLSAgICAgICAgICBwcmludCAiICB8ICAgfD4gIFBhcmFt
OyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIiIC4gCi0gICAgICAgICAg
ICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIGlmKCEkYmVRdWlldCk7ICAgICAgICAg
IAotICAgICAgICB9CisgICAgICAgICAgICAgICAgJG1ldGhvZEV4Y2VwdGlvbiA9fiBzL1xzKy8v
ZzsKKyAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0aW9uc30gPSBz
cGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwogCi0gICAgICAgIG15ICRhcnJheVJlZiA9ICRk
YXRhTm9kZS0+ZnVuY3Rpb25zOwotICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRuZXdEYXRhTm9k
ZSk7Ci0gICAgICB9IGVsc2lmKCRsaW5lID1+IC9eXHMrY29uc3QvKSB7Ci0gICAgICAgICRsaW5l
ID1+IC8kSURMU3RydWN0dXJlOjpjb25zdGFudFNlbGVjdG9yLzsKLSAgICAgICAgbXkgJGNvbnN0
VHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxu
JGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRjb25zdE5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6
IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICBteSAk
Y29uc3RWYWx1ZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291
cmNlOlxuJGxpbmVcbikiKSk7Ci0KLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUNv
bnN0YW50KCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgkY29uc3ROYW1lKTsKLSAgICAg
ICAgJG5ld0RhdGFOb2RlLT50eXBlKCRjb25zdFR5cGUpOwotICAgICAgICAkbmV3RGF0YU5vZGUt
PnZhbHVlKCRjb25zdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBteSBAcGFyYW1zID0gc3BsaXQo
LywvLCAkbWV0aG9kU2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoKEBwYXJhbXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsKIAotICAgICAgICBteSAkYXJy
YXlSZWYgPSAkZGF0YU5vZGUtPmNvbnN0YW50czsKLSAgICAgICAgcHVzaChAJGFycmF5UmVmLCAk
bmV3RGF0YU5vZGUpOworICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVy
ZTo6aW50ZXJmYWNlUGFyYW1ldGVyU2VsZWN0b3IvOworICAgICAgICAgICAgICAgICAgICBteSAk
cGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIgIik7IGNob3Ao
JHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFt
VHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxu
JGxpbmVcbikiKSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAoZGVmaW5l
ZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwog
Ci0gICAgICAgIHByaW50ICIgIHwgICB8PiAgQ29uc3RhbnQ7IFRZUEUgXCIkY29uc3RUeXBlXCIg
TkFNRSBcIiRjb25zdE5hbWVcIiBWQUxVRSBcIiRjb25zdFZhbHVlXCJcbiIgaWYoISRiZVF1aWV0
KTsKLSAgICAgIH0KLSAgICB9CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbURhdGFOb2Rl
ID0gbmV3IGRvbVNpZ25hdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1EYXRhTm9k
ZS0+bmFtZSgkcGFyYW1OYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUt
PnR5cGUoJHBhcmFtVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRB
dHRyaWJ1dGVzKSk7CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJG5ld0Rh
dGFOb2RlLT5wYXJhbWV0ZXJzOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkYXJyYXlSZWYs
ICRwYXJhbURhdGFOb2RlKTsKKworICAgICAgICAgICAgICAgICAgICBwcmludCAiICB8ICAgfD4g
IFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIiIC4gCisgICAg
ICAgICAgICAgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAg
ICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIHVubGVz
cyAkYmVRdWlldDsgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5mdW5jdGlvbnM7CisgICAgICAgICAgICAgICAg
cHVzaChAJGFycmF5UmVmLCAkbmV3RGF0YU5vZGUpOworICAgICAgICAgICAgfSBlbHNpZiAoJGxp
bmUgPX4gL15ccytjb25zdC8pIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVj
dHVyZTo6Y29uc3RhbnRTZWxlY3Rvci87CisgICAgICAgICAgICAgICAgbXkgJGNvbnN0VHlwZSA9
IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVc
bikiKSk7CisgICAgICAgICAgICAgICAgbXkgJGNvbnN0TmFtZSA9IChkZWZpbmVkKCQyKSA/ICQy
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAgICAg
ICAgICAgbXkgJGNvbnN0VmFsdWUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworCisgICAgICAgICAgICAgICAgbXkgJG5ld0Rh
dGFOb2RlID0gbmV3IGRvbUNvbnN0YW50KCk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2Rl
LT5uYW1lKCRjb25zdE5hbWUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgk
Y29uc3RUeXBlKTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnZhbHVlKCRjb25zdFZh
bHVlKTsKIAotICAgIHByaW50ICIgIHwtLS0tPiBJbnRlcmZhY2U7IE5BTUUgXCIkaW50ZXJmYWNl
TmFtZVwiIiAuCi0gICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAg
ICAgICAgICAgICIsICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiB8LVxuIHxc
biIgaWYoISRiZVF1aWV0KTsKLSAgfQorICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRk
YXRhTm9kZS0+Y29uc3RhbnRzOworICAgICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5l
d0RhdGFOb2RlKTsKKworICAgICAgICAgICAgICAgIHByaW50ICIgIHwgICB8PiAgQ29uc3RhbnQ7
IFRZUEUgXCIkY29uc3RUeXBlXCIgTkFNRSBcIiRjb25zdE5hbWVcIiBWQUxVRSBcIiRjb25zdFZh
bHVlXCJcbiIgdW5sZXNzICRiZVF1aWV0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcHJpbnQgIiAgfC0tLS0+IEludGVyZmFjZTsgTkFNRSBcIiRpbnRlcmZhY2VOYW1lXCIi
IC4KKyAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAg
ICAgICAiLCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4gfC1cbiB8XG4iIHVu
bGVzcyAkYmVRdWlldDsKKyAgICB9CiB9CiAKICMgSW50ZXJuYWwgaGVscGVyCiBzdWIgRGV0ZXJt
aW5lUGFyc2VNb2RlCiB7Ci0gIG15ICRvYmplY3QgPSBzaGlmdDsgIAotICBteSAkbGluZSA9IHNo
aWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsgIAorICAgIG15ICRsaW5lID0gc2hpZnQ7CiAK
LSAgbXkgJG1vZGUgPSBNT0RFX1VOREVGOwotICBpZigkXyA9fiAvbW9kdWxlLykgewotICAgICRt
b2RlID0gTU9ERV9NT0RVTEU7Ci0gIH0gZWxzaWYoJF8gPX4gL2ludGVyZmFjZS8pIHsKLSAgICAk
bW9kZSA9IE1PREVfSU5URVJGQUNFOwotICB9IGVsc2lmKCRfID1+IC9leGNlcHRpb24vKSB7Ci0g
ICAgJG1vZGUgPSBNT0RFX0VYQ0VQVElPTjsKLSAgfSBlbHNpZigkXyA9fiAvYWxpYXMvKSB7Ci0g
ICAgJG1vZGUgPSBNT0RFX0FMSUFTOwotICB9CisgICAgbXkgJG1vZGUgPSBNT0RFX1VOREVGOwor
ICAgIGlmICgkXyA9fiAvbW9kdWxlLykgeworICAgICAgICAkbW9kZSA9IE1PREVfTU9EVUxFOwor
ICAgIH0gZWxzaWYgKCRfID1+IC9pbnRlcmZhY2UvKSB7CisgICAgICAgICRtb2RlID0gTU9ERV9J
TlRFUkZBQ0U7CisgICAgfSBlbHNpZiAoJF8gPX4gL2V4Y2VwdGlvbi8pIHsKKyAgICAgICAgJG1v
ZGUgPSBNT0RFX0VYQ0VQVElPTjsKKyAgICB9IGVsc2lmICgkXyA9fiAvYWxpYXMvKSB7CisgICAg
ICAgICRtb2RlID0gTU9ERV9BTElBUzsKKyAgICB9CiAKLSAgcmV0dXJuICRtb2RlOworICAgIHJl
dHVybiAkbW9kZTsKIH0KIAogIyBJbnRlcm5hbCBoZWxwZXIKIHN1YiBQcm9jZXNzU2VjdGlvbgog
ewotICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogICAKLSAg
aWYoJHBhcnNlTW9kZSBlcSBNT0RFX01PRFVMRSkgewotICAgIGRpZSAoIlR3byBtb2R1bGVzIGlu
IG9uZSBmaWxlISBGYXRhbCBlcnJvciFcbiIpIGlmKCRkb2N1bWVudCBuZSAwKTsKLSAgICAkZG9j
dW1lbnQgPSBuZXcgaWRsRG9jdW1lbnQoKTsKLSAgICAkb2JqZWN0LT5QYXJzZU1vZHVsZSgkZG9j
dW1lbnQpOwotICB9IGVsc2lmKCRwYXJzZU1vZGUgZXEgTU9ERV9JTlRFUkZBQ0UpIHsKLSAgICBt
eSAkbm9kZSA9IG5ldyBkb21DbGFzcygpOwotICAgICRvYmplY3QtPlBhcnNlSW50ZXJmYWNlKCRu
b2RlLCAiaW50ZXJmYWNlIik7CisgICAgaWYgKCRwYXJzZU1vZGUgZXEgTU9ERV9NT0RVTEUpIHsK
KyAgICAgICAgZGllICgiVHdvIG1vZHVsZXMgaW4gb25lIGZpbGUhIEZhdGFsIGVycm9yIVxuIikg
aWYgKCRkb2N1bWVudCBuZSAwKTsKKyAgICAgICAgJGRvY3VtZW50ID0gbmV3IGlkbERvY3VtZW50
KCk7CisgICAgICAgICRvYmplY3QtPlBhcnNlTW9kdWxlKCRkb2N1bWVudCk7CisgICAgfSBlbHNp
ZiAoJHBhcnNlTW9kZSBlcSBNT0RFX0lOVEVSRkFDRSkgeworICAgICAgICBteSAkbm9kZSA9IG5l
dyBkb21DbGFzcygpOworICAgICAgICAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkbm9kZSwgImlu
dGVyZmFjZSIpOwogICAgIAotICAgIGRpZSAoIk5vIG1vZHVsZSBzcGVjaWZpZWQhIEZhdGFsIEVy
cm9yIVxuIikgaWYoJGRvY3VtZW50IGVxIDApOwotICAgIG15ICRhcnJheVJlZiA9ICRkb2N1bWVu
dC0+Y2xhc3NlczsKLSAgICBwdXNoKEAkYXJyYXlSZWYsICRub2RlKTsKLSAgfSBlbHNpZigkcGFy
c2VNb2RlIGVxIE1PREVfRVhDRVBUSU9OKSB7Ci0gICAgbXkgJG5vZGUgPSBuZXcgZG9tQ2xhc3Mo
KTsKLSAgICAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkbm9kZSwgImV4Y2VwdGlvbiIpOwotCi0g
ICAgZGllICgiTm8gbW9kdWxlIHNwZWNpZmllZCEgRmF0YWwgRXJyb3IhXG4iKSBpZigkZG9jdW1l
bnQgZXEgMCk7Ci0gICAgbXkgJGFycmF5UmVmID0gJGRvY3VtZW50LT5jbGFzc2VzOwotICAgIHB1
c2goQCRhcnJheVJlZiwgJG5vZGUpOwotICB9IGVsc2lmKCRwYXJzZU1vZGUgZXEgTU9ERV9BTElB
UykgewotICAgIHByaW50ICIgfC0gVHJ5aW5nIHRvIHBhcnNlIGFsaWFzLi4uXG4iIGlmKCEkYmVR
dWlldCk7CisgICAgICAgIGRpZSAoIk5vIG1vZHVsZSBzcGVjaWZpZWQhIEZhdGFsIEVycm9yIVxu
IikgaWYgKCRkb2N1bWVudCBlcSAwKTsKKyAgICAgICAgbXkgJGFycmF5UmVmID0gJGRvY3VtZW50
LT5jbGFzc2VzOworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRub2RlKTsKKyAgICB9IGVsc2lm
KCRwYXJzZU1vZGUgZXEgTU9ERV9FWENFUFRJT04pIHsKKyAgICAgICAgbXkgJG5vZGUgPSBuZXcg
ZG9tQ2xhc3MoKTsKKyAgICAgICAgJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJG5vZGUsICJleGNl
cHRpb24iKTsKKworICAgICAgICBkaWUgKCJObyBtb2R1bGUgc3BlY2lmaWVkISBGYXRhbCBFcnJv
ciFcbiIpIGlmICgkZG9jdW1lbnQgZXEgMCk7CisgICAgICAgIG15ICRhcnJheVJlZiA9ICRkb2N1
bWVudC0+Y2xhc3NlczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbm9kZSk7CisgICAgfSBl
bHNpZigkcGFyc2VNb2RlIGVxIE1PREVfQUxJQVMpIHsKKyAgICAgICAgcHJpbnQgIiB8LSBUcnlp
bmcgdG8gcGFyc2UgYWxpYXMuLi5cbiIgdW5sZXNzICRiZVF1aWV0OwogICAgIAotICAgIG15ICRs
aW5lID0gam9pbigiIiwgQHRlbXBvcmFyeUNvbnRlbnQpOwotICAgICRsaW5lID1+IC8kSURMU3Ry
dWN0dXJlOjphbGlhc1NlbGVjdG9yLzsKKyAgICAgICAgbXkgJGxpbmUgPSBqb2luKCIiLCBAdGVt
cG9yYXJ5Q29udGVudCk7CisgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjphbGlhc1Nl
bGVjdG9yLzsKIAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gKGRlZmluZWQoJDEpID8gJDEgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICBteSAkd3JhcHBl
ck5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpc
biRsaW5lXG4pIikpOworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IChkZWZpbmVkKCQxKSA/
ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAg
IG15ICR3cmFwcGVyTmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAgICAgCi0gICAgcHJpbnQgIiAgfC0tLS0+IEFsaWFz
OyBJTlRFUkZBQ0UgXCIkaW50ZXJmYWNlTmFtZVwiIFdSQVBQRVIgXCIkd3JhcHBlck5hbWVcIlxu
IHwtXG4gfFxuIiBpZighJGJlUXVpZXQpOworICAgICAgICBwcmludCAiICB8LS0tLT4gQWxpYXM7
IElOVEVSRkFDRSBcIiRpbnRlcmZhY2VOYW1lXCIgV1JBUFBFUiBcIiR3cmFwcGVyTmFtZVwiXG4g
fC1cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsKIAotICAgICMgRklYTUU6IENoZWNrIGlmIGFsaWFz
IGlzIGFscmVhZHkgaW4gYWxpYXNlcwotICAgIG15ICRhbGlhc2VzID0gJGRvY3VtZW50LT5hbGlh
c2VzOwotICAgICRhbGlhc2VzLT57JGludGVyZmFjZU5hbWV9ID0gJHdyYXBwZXJOYW1lOwotICB9
CisgICAgICAgICMgRklYTUU6IENoZWNrIGlmIGFsaWFzIGlzIGFscmVhZHkgaW4gYWxpYXNlcwor
ICAgICAgICBteSAkYWxpYXNlcyA9ICRkb2N1bWVudC0+YWxpYXNlczsKKyAgICAgICAgJGFsaWFz
ZXMtPnskaW50ZXJmYWNlTmFtZX0gPSAkd3JhcHBlck5hbWU7CisgICAgfQogCi0gIEB0ZW1wb3Jh
cnlDb250ZW50ID0gIiI7CisgICAgQHRlbXBvcmFyeUNvbnRlbnQgPSAiIjsKIH0KIAogMTsKLQpJ
bmRleDogV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9k
ZS5pZGwJKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCw2ICsxMTAsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBET01Vc2Vy
RGF0YSAgICAgICAgZ2V0VXNlckRhdGEoaW4gRE9NU3RyaW5nIGtleSk7CiAjZW5kaWYgLyogIWRl
ZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICovCiAjZW5kaWYgLyogIWRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgKi8KKworI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCisg
ICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbnMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gICAgICAgICBpc0NvbnRlbnRFZGl0YWJsZTsKKyNlbmRpZiAvKiBkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSAqLwogICAgIH07CiAKIH0KSW5kZXg6IFdlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MTUpCisr
KyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYt
MDktMTcgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBmb3IgaHR0cDovL2J1Z3pp
bGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwMworICAgICAgICBZZXQgQW5v
dGhlciBPYmplY3RpdmUtQyBCaW5kaW5ncyBQYXRjaAorCisgICAgICAgICogTWlncmF0ZUhlYWRl
cnMubWFrZToKKwogMjAwNi0wOS0xNiAgQnJhZHkgRWlkc29uIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dApJbmRleDogV2ViS2l0L01pZ3JhdGVIZWFkZXJz
Lm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pZ3JhdGVIZWFkZXJzLm1ha2UJKHJldmlzaW9u
IDE2NDE1KQorKysgV2ViS2l0L01pZ3JhdGVIZWFkZXJzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAgUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoVEFSR0VUX0JVSUxEX0RJUgog
LlBIT05ZIDogYWxsCiBhbGwgOiBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTS5oIFwK
KyAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NQWJzdHJhY3RWaWV3LmggXAogICAgICQoUFVC
TElDX0hFQURFUlNfRElSKS9ET01BdHRyLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9E
T01DREFUQVNlY3Rpb24uaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUNTUy5oIFwK
QEAgLTY0LDkgKzY1LDExIEBAIGFsbCA6IFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9N
RW50aXR5LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01FbnRpdHlSZWZlcmVuY2Uu
aCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUV2ZW50LmggXAorICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01FdmVudEV4Y2VwdGlvbi5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJT
X0RJUikvRE9NRXZlbnRMaXN0ZW5lci5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9N
RXZlbnRUYXJnZXQuaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUV2ZW50cy5oIFwK
KyAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NRXhjZXB0aW9uLmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01FeHRlbnNpb25zLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElS
KS9ET01IVE1MLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01IVE1MQW5jaG9yRWxl
bWVudC5oIFwKQEAgLTE2MCw2ICsxNjMsNyBAQCBhbGwgOiBcCiAgICAgJChQUklWQVRFX0hFQURF
UlNfRElSKS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25Qcml2YXRlLmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01SR0JDb2xvci5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikv
RE9NUmFuZ2UuaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVJhbmdlRXhjZXB0aW9u
LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01SZWN0LmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01TdHlsZVNoZWV0LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElS
KS9ET01TdHlsZVNoZWV0TGlzdC5oIFwKQEAgLTE3Myw2ICsxNzcsNyBAQCBhbGwgOiBcCiAgICAg
JChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVdoZWVsRXZlbnQuaCBcCiAgICAgJChQUklWQVRFX0hF
QURFUlNfRElSKS9ET01XaGVlbEV2ZW50UHJpdmF0ZS5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJT
X0RJUikvRE9NWFBhdGguaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVhQYXRoRXhj
ZXB0aW9uLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01YUGF0aEV4cHJlc3Npb24u
aCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVhQYXRoTlNSZXNvbHZlci5oIFwKICAg
ICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NWFBhdGhSZXN1bHQuaCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10615</attachid>
            <date>2006-09-17 19:34:18 -0700</date>
            <delta_ts>2006-09-18 12:58:04 -0700</delta_ts>
            <desc>patch with Tim&apos;s comments addressed</desc>
            <filename>YAOCB.diff</filename>
            <type>text/plain</type>
            <size>108058</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMzIEBACisyMDA2LTA5LTE3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5MDMKKyAgICAgICAgWWV0IEFub3RoZXIgT2JqZWN0aXZlLUMgQmluZGluZ3MgUGF0Y2gKKwor
ICAgICAgICAtIFdoaXRlc3BhY2UgY2xlYW51cCBmb3IgSURMUGFyc2VyLnBtCisKKyAgICAgICAg
LSBBZGQgY29uZGl0aW9uYWwgI2lmZGVmcyAoaWUuICNpZmRlZiBTVkdfU1VQUE9SVCkgdG8gYXV0
by1nZW5lcmF0ZWQKKyAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKworICAgICAgICAt
IFNwbGl0IERPTUV4Y2VwdGlvbiwgRE9NUmFuZ2VFeGNlcHRpb24sIERPTVhQYXRoRXhjZXB0aW9u
LCBET01FdmVudHNFeGNlcHRpb24KKyAgICAgICAgICBhbmQgRE9NQWJzdHJhY3RWaWV3IGludG8g
dGhlaXIgb3duIGZpbGVzLgorCisgICAgICAgIC0gUmVtb3ZlIHByaXZhdGUgbWV0aG9kIFtET01S
R0JDb2xvciBfY29sb3JdIGZyb20gRE9NUHJpdmF0ZS5oIGFzCisgICAgICAgICAgaXQgaXMgbm90
IHVzZWQgYW5kIGEgcHVibGljIG1ldGhvZCBpcyBhdmFpbGFibGUgbm93LgorCisgICAgICAgIC0g
UmVtb3ZlIGludGVybmFsIG1ldGhvZCBbRE9NRG9jdW1lbnQgX293bmVyRWxlbWVudF0gZnJvbSBE
T01JbnRlcm5hbC5oCisgICAgICAgICAgYXMgaXQgbm90IHVzZWQuCisKKyAgICAgICAgLSBBdXRv
LWdlbmVyYXRlIG1ldGhvZCBpc0NvbnRlbnRFZGl0YWJsZSBmb3IgRE9NTm9kZS4KKworICAgICAg
ICAtIEdlbmVyYWwgY2xlYW51cCBvZiBiaW5kaW5ncyBjb2RlIGluY2x1ZGluZyByZW1vdmluZyB1
bm5lZWRlZCAjaW1wb3J0cworICAgICAgICAgIGFuZCB3aGl0ZXNwYWNlIGNsZWFudXAKKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKGFkZEVsZW1lbnRDbGFzcyk6CisgICAgICAgIChl
bGVtZW50Q2xhc3MpOgorICAgICAgICAoLVtET01Ob2RlIF9pbml0V2l0aE5vZGU6V2ViQ29yZTo6
XSk6CisgICAgICAgICgrW0RPTU5vZGUgX25vZGVXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAo
LVtET01Ob2RlIFdlYkNvcmU6Ol0pOgorICAgICAgICAoLVtET01Ob2RlIEtKUzo6QmluZGluZ3M6
Ol0pOgorICAgICAgICAoLVtET01Ob2RlIGFkZEV2ZW50TGlzdGVuZXI6OjpdKToKKyAgICAgICAg
KC1bRE9NTm9kZSByZW1vdmVFdmVudExpc3RlbmVyOjo6XSk6CisgICAgICAgICgtW0RPTU5vZGUg
ZGlzcGF0Y2hFdmVudDpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBpbWFnZV0pOgorICAgICAg
ICAoLVtET01FbGVtZW50IF9mb250XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2ltYWdlVElG
RlJlcHJlc2VudGF0aW9uXSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2dldFVSTEF0dHJpYnV0
ZTpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBfTlBPYmplY3RdKToKKyAgICAgICAgKC1bRE9N
RWxlbWVudCBpc0ZvY3VzZWRdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZGVhbGxvY10pOgorICAg
ICAgICAoLVtET01SYW5nZSBmaW5hbGl6ZV0pOgorICAgICAgICAoLVtET01SYW5nZSBkZXNjcmlw
dGlvbl0pOgorICAgICAgICAoLVtET01SYW5nZSBzdGFydENvbnRhaW5lcl0pOgorICAgICAgICAo
LVtET01SYW5nZSBzdGFydE9mZnNldF0pOgorICAgICAgICAoLVtET01SYW5nZSBlbmRDb250YWlu
ZXJdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZW5kT2Zmc2V0XSk6CisgICAgICAgICgtW0RPTVJh
bmdlIGNvbGxhcHNlZF0pOgorICAgICAgICAoLVtET01SYW5nZSBjb21tb25BbmNlc3RvckNvbnRh
aW5lcl0pOgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydDo6XSk6CisgICAgICAgICgtW0RP
TVJhbmdlIHNldEVuZDo6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHNldFN0YXJ0QmVmb3JlOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydEFmdGVyOl0pOgorICAgICAgICAoLVtET01S
YW5nZSBzZXRFbmRCZWZvcmU6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHNldEVuZEFmdGVyOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBjb2xsYXBzZTpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ug
c2VsZWN0Tm9kZTpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ugc2VsZWN0Tm9kZUNvbnRlbnRzOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBjb21wYXJlQm91bmRhcnlQb2ludHM6Ol0pOgorICAgICAg
ICAoLVtET01SYW5nZSBkZWxldGVDb250ZW50c10pOgorICAgICAgICAoLVtET01SYW5nZSBleHRy
YWN0Q29udGVudHNdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgY2xvbmVDb250ZW50c10pOgorICAg
ICAgICAoLVtET01SYW5nZSBpbnNlcnROb2RlOl0pOgorICAgICAgICAoLVtET01SYW5nZSBzdXJy
b3VuZENvbnRlbnRzOl0pOgorICAgICAgICAoLVtET01SYW5nZSBjbG9uZVJhbmdlXSk6CisgICAg
ICAgICgtW0RPTVJhbmdlIHRvU3RyaW5nXSk6CisgICAgICAgICgtW0RPTVJhbmdlIGRldGFjaF0p
OgorICAgICAgICAoLVtET01SYW5nZSBfaW5pdFdpdGhSYW5nZTpXZWJDb3JlOjpdKToKKyAgICAg
ICAgKCtbRE9NUmFuZ2UgX3JhbmdlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9NUmFu
Z2UgV2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgX2luaXRXaXRoTm9kZUZp
bHRlcjpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldp
dGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgV2ViQ29yZTo6XSk6Cisg
ICAgICAgICgtW0RPTU5vZGVGaWx0ZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtET01Ob2RlRmls
dGVyIGZpbmFsaXplXSk6CisgICAgICAgICgtW0RPTU5vZGVJdGVyYXRvciBfaW5pdFdpdGhOb2Rl
SXRlcmF0b3I6V2ViQ29yZTo6ZmlsdGVyOl0pOgorICAgICAgICAoLVtET01Ob2RlSXRlcmF0b3Ig
V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTU5vZGVJdGVyYXRvciBfbm9kZUl0ZXJhdG9yV2l0
aDpXZWJDb3JlOjpmaWx0ZXI6XSk6CisgICAgICAgICgtW0RPTVRyZWVXYWxrZXIgX2luaXRXaXRo
VHJlZVdhbGtlcjpXZWJDb3JlOjpmaWx0ZXI6XSk6CisgICAgICAgICgtW0RPTVRyZWVXYWxrZXIg
V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTVRyZWVXYWxrZXIgX3RyZWVXYWxrZXJXaXRoOldl
YkNvcmU6OmZpbHRlcjpdKToKKyAgICAgICAgKE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2Nl
cHROb2RlKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlTm9kZUl0ZXJhdG9yOjo6Ol0p
OgorICAgICAgICAoLVtET01Eb2N1bWVudCBjcmVhdGVUcmVlV2Fsa2VyOjo6Ol0pOgorICAgICAg
ICAoT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQpOgorICAgICAgICAoT2JqQ0V2ZW50TGlzdGVuZXI6
OmNyZWF0ZSk6CisgICAgICAgIChPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lmg6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9N
QWJzdHJhY3RWaWV3IGRvY3VtZW50XSk6CisgICAgICAgICgtW0RPTUFic3RyYWN0VmlldyBXZWJD
b3JlOjpdKToKKyAgICAgICAgKC1bRE9NQWJzdHJhY3RWaWV3IF9pbml0V2l0aEFic3RyYWN0Vmll
dzpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NQWJzdHJhY3RWaWV3IF9hYnN0cmFjdFZpZXdX
aXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTLm1tOgorICAg
ICAgICAoLVtET01TdHlsZVNoZWV0IF9pbml0V2l0aFN0eWxlU2hlZXQ6V2ViQ29yZTo6XSk6Cisg
ICAgICAgICgrW0RPTVN0eWxlU2hlZXQgX3N0eWxlU2hlZXRXaXRoOldlYkNvcmU6Ol0pOgorICAg
ICAgICAoK1tET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpXZWJDb3JlOjpdKToK
KyAgICAgICAgKC1bRE9NQ1NTUnVsZSBfaW5pdFdpdGhSdWxlOldlYkNvcmU6Ol0pOgorICAgICAg
ICAoK1tET01DU1NSdWxlIF9DU1NSdWxlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9N
Q1NTVmFsdWUgX2luaXRXaXRoVmFsdWU6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUNTU1Zh
bHVlIF9DU1NWYWx1ZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUNTU1ByaW1pdGl2
ZVZhbHVlIF9DU1NQcmltaXRpdmVWYWx1ZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RP
TURvY3VtZW50IGdldENvbXB1dGVkU3R5bGU6Ol0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBn
ZXRNYXRjaGVkQ1NTUnVsZXM6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ29yZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRFeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTUV2ZW50cy5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06Cisg
ICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBfY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJr
dXBTdHJpbmc6YmFzZVVSTFN0cmluZzpdKToKKyAgICAgICAgKHZpZXdGb3JFbGVtZW50KToKKyAg
ICAgICAgKC1bRE9NSFRNTElucHV0RWxlbWVudCBfcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOndp
dGhTdHJpbmc6c2VsZWN0aW5nRnJvbUluZGV4Ol0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRF
bGVtZW50IF9zZWxlY3RlZFJhbmdlXSk6CisgICAgICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQg
X3NldEF1dG9maWxsZWQ6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01Qcml2YXRlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2VFeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NVmlld3MubW06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01YUGF0
aC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NWFBhdGhFeGNlcHRpb24uaDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKiBkb20vTm9kZS5p
ZGw6CisKIDIwMDYtMDktMTcgIEJyYWR5IEVpZHNvbiA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FyZ2UKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTYsNiArNDU2LDEwIEBA
CiAJCTg1MThEQ0VBMEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThEQ0U4MEE5
Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSAqLzsgfTsKIAkJODUxOERE
NzgwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERENzYwQTlDRjMxQjAwOTFCN0E2IC8q
IERPTU5hbWVkTm9kZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07
CiAJCTg1MThERDc5MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTE4REQ3NzBBOUNGMzFC
MDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLm1tICovOyB9OworCQk4NTFFRTgwQzBBQkNBMjhG
MDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTFFRTgwQTBBQkNBMjhGMDBBNkFBMzMgLyogRE9NQWJzdHJh
Y3RWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODUxRUU4MEQwQUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MUVFODBCMEFCQ0EyOEYw
MEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gKi87IH07CisJCTg1MUVFODExMEFCQ0EzOTYw
MEE2QUEzMyAvKiBET01FdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODUxRUU4MTAwQUJDQTM5NjAwQTZBQTMzIC8qIERPTUV2ZW50
RXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODUxRUU4MjEwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTFFRTgyMDBBQkNB
NTgxMDBBNkFBMzMgLyogRE9NUmFuZ2VFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NTIxN0UwMjBBNUVDRDQ3MDBEQjhEMDAgLyog
WFNMSW1wb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTIxN0UwMDBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5jcHAgKi87
IH07CiAJCTg1MjE3RTAzMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTIxN0UwMTBBNUVDRDQ3
MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5oICovOyB9OwogCQk4NTJCOUU4NzBBQTc5QzQ3MDAy
QURBNkUgLyogRE9NSFRNTEFwcGxldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MkI5RTgzMEFBNzlDNDcwMDJBREE2RSAvKiBET01IVE1M
QXBwbGV0RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC01MDEsNiArNTA1LDcgQEAKIAkJODU3RTBCMkMwQUIwNDNGQzAwMzZFNDQ3IC8q
IERPTU1vdXNlRXZlbnRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTdFMEIyQjBBQjA0M0ZDMDAzNkU0NDcgLyogRE9NTW91c2VFdmVudFBy
aXZhdGUuaCAqLzsgfTsKIAkJODU3RTBCMzEwQUIwNDQ3ODAwMzZFNDQ3IC8qIERPTU1vdXNlRXZl
bnQuaCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU3
RTBCMjMwQUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQuaCAqLzsgfTsKIAkJODU3RTBC
MzIwQUIwNDQ3ODAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnRQcml2YXRlLmggaW4gQ29weUZpbGVz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1N0UwQjJCMEFCMDQzRkMwMDM2
RTQ0NyAvKiBET01Nb3VzZUV2ZW50UHJpdmF0ZS5oICovOyB9OworCQk4NTgwMTVDRTBBQkNBNzVE
MDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1ODAxNUNEMEFCQ0E3NUQwMDgwNTg4RCAvKiBET01YUGF0
aEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg1OEMzODFDMEFBOEUyOTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU4QzM4MUEwQUE4RTI5NjAw
QjE4N0E0IC8qIERPTUNTU1ZhbHVlLmggKi87IH07CiAJCTg1OEMzODFEMEFBOEUyOTYwMEIxODdB
NCAvKiBET01DU1NWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1OEMzODFCMEFBOEUyOTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5tbSAqLzsg
fTsKIAkJODU4QzM4MkMwQUE4RTQwNTAwQjE4N0E0IC8qIERPTUNTU1ByaW1pdGl2ZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NThDMzgyQTBB
QThFNDA1MDBCMTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaCAqLzsgfTsKQEAgLTU4OSw2
ICs1OTQsNyBAQAogCQk4NUJBNEQyRTBBQTY4ODlGMDA4ODA1MkQgLyogRE9NSFRNTFVMaXN0RWxl
bWVudC5oIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NUJBNEQwOTBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5oICovOyB9Owog
CQk4NUJDQkMxMzBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3VtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUJDQkMxMTBBQkJBODdEMDAz
ODExNjAgLyogRE9NSFRNTERvY3VtZW50LmggKi87IH07CiAJCTg1QkNCQzE0MEFCQkE4N0QwMDM4
MTE2MCAvKiBET01IVE1MRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUJDQkMxMjBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3Vt
ZW50Lm1tICovOyB9OworCQk4NUM3OEE2ODBBQkRFMUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM3OEE2
NzBBQkRFMUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODVDN0YzRTYwQUFGNUQ1RTAwNDAxNEREIC8q
IERPTUV2ZW50LmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1QUZBODIwMEFBRjUyOEEwMEU4NDMwNSAvKiBET01FdmVudC5oICovOyB9OwogCQk4NUM3
RjQ0NzBBQUY3NkRDMDA0MDE0REQgLyogRE9NRXZlbnRUYXJnZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QzdGNDQ1MEFBRjc2REMwMDQwMTRERCAv
KiBET01FdmVudFRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg1QzdGNDkxMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM3RjQ4RjBBQUY3
OURDMDA0MDE0REQgLyogRE9NVUlFdmVudC5oICovOyB9OwpAQCAtMTk3MCw3ICsxOTc2LDYgQEAK
IAkJQkMxQTM3QkUwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTgwOTdDNzE1RjAwMTlG
M0Q4IC8qIERPTVRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDMUEzN0JGMDk3QzcxNUYwMDE5RjNEOCAvKiBET01VdGlsaXR5Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTkw
OTdDNzE1RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi87IH07CiAJCUJDMUEzN0MwMDk3Qzcx
NUYwMDE5RjNEOCAvKiBET01WaWV3cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkMxQTM3QzEw
OTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QUIwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdz
Lm1tICovOyB9OwogCQlCQzZCN0JBRjA5OTM2MDNDMDA1Mjg2N0IgLyogSW1hZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2QjdCQUUwOTkzNjAz
QzAwNTI4NjdCIC8qIEltYWdlLmNwcCAqLzsgfTsKIAkJQkM2QjdFQ0YwOTk4QUM3RjAwNTI4NjdC
IC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzZCN0VDRTA5OThBQzdGMDA1Mjg2N0IgLyogSW1hZ2VTb3VyY2UuaCAqLzsgfTsK
IAkJQkM2RDZERDIwOUFGOTA2NjAwRjU5NzU5IC8qIEZvbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDZERDAwOUFGOTA2NjAwRjU5NzU5IC8q
IEZvbnQuY3BwICovOyB9OwpAQCAtMjE1MiwyMyArMjE1Nyw2IEBACiAJCUZBRTA0MTkwMDk3NTk2
QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdl
TG9hZGVyLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAotLyogQmVn
aW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCi0JCUJDRkFENDVGMEFCRDNBQkEwMEI3NjYzRCAv
KiBEZXZlbG9wbWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNl
dHRpbmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0g
RGV2ZWxvcG1lbnQ7Ci0JCX07Ci0JCUJDRkFENDYwMEFCRDNBQkEwMEI3NjYzRCAvKiBEZXBsb3lt
ZW50ICovID0gewotCQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7
Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVwbG95bWVu
dDsKLQkJfTsKLS8qIEVuZCBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KLQogLyogQmVnaW4gUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJB
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0
ZW1Qcm94eTsKQEAgLTI4MzUsNiArMjgyMywxMCBAQAogCQk4NTE4RENFODBBOUNDODBEMDA5MUI3
QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NRE9NSW1wbGVtZW50YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5hbWVkTm9kZU1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTE4REQ3NzBBOUNGMzFCMDA5MUI3QTYgLyog
RE9NTmFtZWROb2RlTWFwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTU5hbWVkTm9kZU1hcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUx
RUU4MEEwQUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQWJzdHJhY3RWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1MUVFODBCMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQWJzdHJhY3RW
aWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTFFRTgxMDBBQkNBMzk2MDBB
NkFBMzMgLyogRE9NRXZlbnRFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NRXZlbnRFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUxRUU4MjAwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJhbmdlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg1MjE3RTAwMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRS
dWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xJbXBvcnRS
dWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyMTdFMDEwQTVFQ0Q0NzAw
REI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhTTEltcG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyQjlF
ODMwQUE3OUM0NzAwMkFEQTZFIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MQXBwbGV0RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjg3NSw2ICsyODY3LDcgQEAKIAkJODU3RTBCMjMwQUIwNDM0
NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTU1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU3
RTBCMjQwQUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTW91c2VFdmVudC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODU3RTBCMkIwQUIwNDNGQzAwMzZFNDQ3IC8qIERPTU1vdXNlRXZl
bnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Nb3VzZUV2
ZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTgwMTVDRDBBQkNB
NzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NWFBhdGhFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODU4QzM4MUEwQUE4RTI5NjAwQjE4N0E0IC8qIERPTUNTU1ZhbHVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NThDMzgxQjBBQThFMjk2MDBCMTg3QTQgLyogRE9NQ1NTVmFsdWUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ1NTVmFsdWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1OEMzODJBMEFBOEU0MDUwMEIxODdBNCAv
KiBET01DU1NQcmltaXRpdmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI5NjIsNiArMjk1NSw3IEBACiAJCTg1QzU2Q0E5MEFBODlFNjYwMEQ5NTc1NSAvKiBDU1NJbXBv
cnRSdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTSW1wb3J0UnVsZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1QzU2Q0FDMEFBODlGOEUwMEQ5NTc1NSAvKiBD
U1NDaGFyc2V0UnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0NoYXJzZXRSdWxl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVDNTZDQUQwQUE4OUZFMDAwRDk1
NzU1IC8qIENTU1Vua25vd25SdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVW5r
bm93blJ1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUM3OEE2NzBBQkRF
MUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUM3
RjQ0NTBBQUY3NkRDMDA0MDE0REQgLyogRE9NRXZlbnRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUV2ZW50VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1QzdGNDhGMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01VSUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg1QzdGNDkwMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVVJRXZlbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mzc5LDcgKzQzNzMsNiBAQAogCQlCQzFB
MzdBODA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxQTM3QTkwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVXRpbGl0eS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01WaWV3cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQzFBMzdBQjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmll
d3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVmlld3Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0IzNjQ3MDVDOUQ1RTIwMEU0Mjkw
MiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21pY1N0cmluZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJDNUVDMTc2MEE1MDdFM0Uw
MDYwMDdGNSAvKiB2aWV3LXNvdXJjZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJ2aWV3
LXNvdXJjZS5jc3MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZCN0JBRTA5OTM2
MDNDMDA1Mjg2N0IgLyogSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0MTQsOSAr
NTQwNywyNyBAQAogCQkJbmFtZSA9IFN0eWxlU2hlZXRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJODUxRUU4MDYwQUJDQTI1MjAwQTZBQTMzIC8qIFZpZXdzICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk4NTFFRTgwQTBBQkNBMjhG
MDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3LmggKi8sCisJCQkJODUxRUU4MEIwQUJDQTI4RjAw
QTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gVmlld3M7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk4NTFFRTgyMzBBQkNBNThBMDBB
NkFBMzMgLyogUmFuZ2UgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTg1MUVFODIwMEFCQ0E1ODEwMEE2QUEzMyAvKiBET01SYW5nZUV4Y2VwdGlvbi5oICov
LAorCQkJKTsKKwkJCW5hbWUgPSBSYW5nZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3JlICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NUM3OEE2NzBBQkRFMUI0MDA0NEZDMTYg
LyogRE9NRXhjZXB0aW9uLmggKi8sCiAJCQkJODU2QzhBRTIwQTkxMjY0OTAwNUM2ODdCIC8qIERP
TU9iamVjdC5oICovLAogCQkJCTg1NkM4QUUzMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3Qu
bW0gKi8sCiAJCQkpOwpAQCAtNTQzNSw2ICs1NDQ2LDE0IEBACiAJCQluYW1lID0gVHJhdmVyc2Fs
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODU4MDE1Q0MwQUJDQTc0MTAw
ODA1ODhEIC8qIFhQYXRoICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQk4NTgwMTVDRDBBQkNBNzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCAq
LywKKwkJCSk7CisJCQluYW1lID0gWFBhdGg7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk4NThDMzk1MTBBQTkwMjRDMDBCMTg3QTQgLyogQ1NTICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTU3MjEsNiArNTc0MCw3IEBACiAJCTg1QzdG
NDQzMEFBRjc2ODYwMDQwMTRERCAvKiBFdmVudHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTg1MUVFODEwMEFCQ0EzOTYwMEE2QUEzMyAvKiBET01FdmVu
dEV4Y2VwdGlvbi5oICovLAogCQkJCTg1QzdGNDQ1MEFBRjc2REMwMDQwMTRERCAvKiBET01FdmVu
dFRhcmdldC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBFdmVudHM7CkBAIC02NzI0LDcgKzY3NDQs
MTAgQEAKIAkJCQk4NThDMzk1MTBBQTkwMjRDMDBCMTg3QTQgLyogQ1NTICovLAogCQkJCTg1QzdG
NDQzMEFBRjc2ODYwMDQwMTRERCAvKiBFdmVudHMgKi8sCiAJCQkJODU5OTJGQzIwQUE1REQ0NjAw
QUMwNzg1IC8qIEhUTUwgKi8sCisJCQkJODUxRUU4MjMwQUJDQTU4QTAwQTZBQTMzIC8qIFJhbmdl
ICovLAogCQkJCTg1OUZBNUYyMEFCMEJFRTIwMDRGQUVFOSAvKiBUcmF2ZXJzYWwgKi8sCisJCQkJ
ODUxRUU4MDYwQUJDQTI1MjAwQTZBQTMzIC8qIFZpZXdzICovLAorCQkJCTg1ODAxNUNDMEFCQ0E3
NDEwMDgwNTg4RCAvKiBYUGF0aCAqLywKIAkJCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyog
Q29kZUdlbmVyYXRvck9iakMucG0gKi8sCiAJCQkJMUNEMEI2MjAwQUFCREI1MDAwRDBBM0ZGIC8q
IFB1YmxpY0RPTUludGVyZmFjZXMuaCAqLywKIAkJCQlCQzFBMzc5NzA5N0M3MTVGMDAxOUYzRDgg
LyogRE9NLmggKi8sCkBAIC02NzQ3LDcgKzY3NzAsNiBAQAogCQkJCUJDMUEzN0E4MDk3QzcxNUYw
MDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCAqLywKIAkJCQlCQzFBMzdBOTA5N0M3MTVGMDAxOUYz
RDggLyogRE9NVXRpbGl0eS5tbSAqLywKIAkJCQlCQzFBMzdBQTA5N0M3MTVGMDAxOUYzRDggLyog
RE9NVmlld3MuaCAqLywKLQkJCQlCQzFBMzdBQjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3Mu
bW0gKi8sCiAJCQkJMUExRDEzN0UwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLmggKi8sCiAJ
CQkJMUExRDEzN0YwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLm1tICovLAogCQkJCTFDQUYz
NDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLywKQEAgLTg0MDYsNiAr
ODQyOCwxMSBAQAogCQkJCTg1M0JGNERCMEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTNCRjRFQjBBQkI2RTk3MDA4NjQ3QkIgLyogRE9NTm9kZVByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QkNCQzEzMEFCQkE4N0QwMDM4MTE2MCAvKiBET01I
VE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MUVFODBDMEFCQ0EyOEYwMEE2QUEz
MyAvKiBET01BYnN0cmFjdFZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MUVFODExMEFCQ0Ez
OTYwMEE2QUEzMyAvKiBET01FdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUx
RUU4MjEwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4NTgwMTVDRTBBQkNBNzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTg1Qzc4QTY4MEFCREUxQjQwMDQ0RkMxNiAvKiBET01FeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODQ0MCwxMiArODQ2Nyw2IEBACiAJCTA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2pl
Y3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZD
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87
Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJfTsKLQkJCWJ1aWxkU3R5bGVzID0gKAotCQkJCUJD
RkFENDVGMEFCRDNBQkEwMEI3NjYzRCAvKiBEZXZlbG9wbWVudCAqLywKLQkJCQlCQ0ZBRDQ2MDBB
QkQzQUJBMDBCNzY2M0QgLyogRGVwbG95bWVudCAqLywKLQkJCSk7CiAJCQloYXNTY2FubmVkRm9y
RW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtODc5
NSw3ICs4ODE2LDYgQEAKIAkJCQlCQzFBMzdCNzA5N0M3MTVGMDAxOUYzRDggLyogRE9NSFRNTC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0JBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01JbnRl
cm5hbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0JGMDk3QzcxNUYwMDE5RjNEOCAvKiBE
T01VdGlsaXR5Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMxQTM3QzEwOTdDNzE1RjAwMTlGM0Q4
IC8qIERPTVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ3OEYwOTdDQUFDODAwOTRD
OUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VBNDc5ODA5N0NBQUM4MDA5NEM5RTQgLyogY3NzaGVscGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRUE0NzlBMDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NwYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC05NDk3LDYgKzk1MTcsNyBAQAogCQkJCUIyMDExMTA3MEFCNzc0MDUwMERCMEU2
OCAvKiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1M0JGNERDMEFCQjZC
NTUwMDg2NDdCQiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQ0JDMTQwQUJC
QTg3RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1
MUVFODBEMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMTY0MTUpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4IEBACiAjaW1w
b3J0ICJjc3NoZWxwZXIuaCIKIAogLy8gRnJvbSBvbGQgRE9NQ29yZS5oCi0jaW1wb3J0ICJET01O
b2RlLmgiCiAjaW1wb3J0ICJET01PYmplY3QuaCIKKyNpbXBvcnQgIkRPTUV4Y2VwdGlvbi5oIgog
CiAvLyBHZW5lcmF0ZWQgT2JqZWN0aXZlLUMgQmluZGluZ3MKICNpbXBvcnQgIkRPTUF0dHIuaCIK
QEAgLTc5LDYgKzc5LDcgQEAKICNpbXBvcnQgIkRPTUVudGl0eS5oIgogI2ltcG9ydCAiRE9NRW50
aXR5UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJET01OYW1lZE5vZGVNYXAuaCIKKyNpbXBvcnQgIkRP
TU5vZGUuaCIKICNpbXBvcnQgIkRPTU5vZGVMaXN0LmgiCiAjaW1wb3J0ICJET01Ob3RhdGlvbi5o
IgogI2ltcG9ydCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCkBAIC04Niw3ICs4Nyw2IEBA
CiAKIC8vIEZyb20gb2xkIERPTUhUTUwuaAogI2ltcG9ydCAiRE9NSFRNTEFwcGxldEVsZW1lbnQu
aCIKLSNpbXBvcnQgIkRPTUhUTUxEb2N1bWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTE9wdGlvbkVs
ZW1lbnQuaCIKIAogLy8gR2VuZXJhdGVkIE9iamVjdGl2ZS1DIEJpbmRpbmdzCkBAIC0xMDEsNiAr
MTAxLDcgQEAKICNpbXBvcnQgIkRPTUhUTUxETGlzdEVsZW1lbnQuaCIKICNpbXBvcnQgIkRPTUhU
TUxEaXJlY3RvcnlFbGVtZW50LmgiCiAjaW1wb3J0ICJET01IVE1MRGl2RWxlbWVudC5oIgorI2lt
cG9ydCAiRE9NSFRNTERvY3VtZW50LmgiCiAjaW1wb3J0ICJET01IVE1MRWxlbWVudC5oIgogI2lt
cG9ydCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTEZvbnRFbGVt
ZW50LmgiCkBAIC0xNDYsNTEgKzE0NywyNCBAQAogCiAjaW1wb3J0IDxvYmpjL29iamMtY2xhc3Mu
aD4KIAotdXNpbmcgV2ViQ29yZTo6QXRvbWljU3RyaW5nOwotdXNpbmcgV2ViQ29yZTo6QXRvbWlj
U3RyaW5nSW1wbDsKLXVzaW5nIFdlYkNvcmU6OkF0dHI7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVu
dDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJDb3JlOjpET01J
bXBsZW1lbnRhdGlvbkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNv
cmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7Ci11c2luZyBXZWJD
b3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNpbmcgV2ViQ29y
ZTo6S1VSTDsKLXVzaW5nIFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDsKLXVzaW5nIFdlYkNvcmU6Ok5v
ZGU7Ci11c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRl
ckNvbmRpdGlvbjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjsKLXVzaW5nIFdlYkNvcmU6
Ok5vZGVMaXN0OwotdXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6
OlJhbmdlOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q7Ci11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUcmVlV2Fs
a2VyOwotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogCi1jbGFzcyBPYmpD
RXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKK2NsYXNzIE9iakNFdmVudExp
c3RlbmVyIDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotICAg
IHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqY3JlYXRlKGlkIDxET01FdmVudExpc3RlbmVyPik7
CisgICAgc3RhdGljIE9iakNFdmVudExpc3RlbmVyKiBmaW5kKGlkIDxET01FdmVudExpc3RlbmVy
Pik7CisgICAgc3RhdGljIE9iakNFdmVudExpc3RlbmVyKiBjcmVhdGUoaWQgPERPTUV2ZW50TGlz
dGVuZXI+KTsKIAogcHJpdmF0ZToKICAgICBPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRM
aXN0ZW5lcj4pOwogICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVyKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQgKiwgYm9vbCBpc1dpbmRvd0V2ZW50KTsKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqLCBib29sIGlzV2luZG93RXZl
bnQpOwogCiAgICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7CiB9OwogCiB0eXBl
ZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJNYXA7Ci10eXBlZGVm
IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7Cit0eXBlZGVm
IEhhc2hNYXA8V2ViQ29yZTo6QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7
CiAKIHN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKIHN0YXRpYyBMaXN0ZW5l
ck1hcCogbGlzdGVuZXJNYXA7CkBAIC0xOTksNyArMTczLDcgQEAgc3RhdGljIExpc3RlbmVyTWFw
KiBsaXN0ZW5lck1hcDsKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBE
T01Ob2RlCiAKLXN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWcsIENsYXNzIG9iakNDbGFzcykKK3N0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25z
dCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykKIHsKICAgICBl
bGVtZW50Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwog
fQpAQCAtMjc1LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUhUTUxFbGVtZW50Q2xhc3NN
YXAoKQogICAgIC8vIEZJWE1FOiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0aGUgQVBJIGhhcyBiZWVu
IGRldGVybWluZWQuCiB9CiAKLXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdOYW1lKQorc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBXZWJDb3Jl
OjpBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgaWYgKCFlbGVtZW50Q2xhc3NNYXApCiAg
ICAgICAgIGNyZWF0ZUhUTUxFbGVtZW50Q2xhc3NNYXAoKTsKQEAgLTMwMSwxOCArMjc1LDE4IEBA
IHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXA+IiwgW1tzZWxmIGNsYXNzXSBk
ZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsXTsKIH0KIAotLSAoaWQpX2lu
aXRXaXRoTm9kZTooTm9kZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aE5vZGU6KFdlYkNvcmU6Ok5v
ZGUgKilpbXBsCiB7CiAgICAgQVNTRVJUKGltcGwpOwogCiAgICAgW3N1cGVyIF9pbml0XTsKLSAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKKyAgICBf
aW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwogICAgIGltcGwt
PnJlZigpOwogICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7CiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKLSsgKERPTU5vZGUgKilfbm9kZVdpdGg6KE5vZGUgKilpbXBsCisrIChET01Ob2RlICop
X25vZGVXaXRoOihXZWJDb3JlOjpOb2RlICopaW1wbAogewogICAgIGlmICghaW1wbCkKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTMyNCw0OSArMjk4LDQ5IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50
Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICAKICAgICBDbGFzcyB3cmFwcGVyQ2xhc3MgPSBuaWw7
CiAgICAgc3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgTm9kZTo6RUxF
TUVOVF9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkVMRU1FTlRfTk9ERToKICAg
ICAgICAgICAgIGlmIChpbXBsLT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gZWxlbWVudENsYXNzKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCkt
PmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBlbGVtZW50Q2xh
c3Moc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihpbXBsKS0+bG9jYWxOYW1lKCkp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01F
bGVtZW50IGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkFU
VFJJQlVURV9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkFUVFJJQlVURV9OT0RF
OgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUF0dHIgY2xhc3NdOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgorICAgICAgICBjYXNlIFdl
YkNvcmU6Ok5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01U
ZXh0IGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNEQVRB
X1NFQ1RJT05fTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpDREFUQV9TRUNUSU9O
X05PREU6CiAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NQ0RBVEFTZWN0aW9uIGNsYXNz
XTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVO
Q0VfTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05P
REU6CiAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRW50aXR5UmVmZXJlbmNlIGNsYXNz
XTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgor
ICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTUVudGl0eSBjbGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAgIGNhc2Ug
V2ViQ29yZTo6Tm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAg
d3JhcHBlckNsYXNzID0gW0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CisgICAgICAgIGNh
c2UgV2ViQ29yZTo6Tm9kZTo6Q09NTUVOVF9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUNvbW1lbnQgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGltcGwpLT5pc0hUTUxEb2N1bWVudCgpKQorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6
OkRPQ1VNRU5UX05PREU6CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9j
dW1lbnQqPihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICB3cmFwcGVy
Q2xhc3MgPSBbRE9NSFRNTERvY3VtZW50IGNsYXNzXTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnQgY2xhc3NdOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgICAgIHdy
YXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTURvY3VtZW50RnJhZ21lbnQgY2xhc3NdOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKKyAgICAgICAgY2FzZSBXZWJD
b3JlOjpOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RP
TU5vdGF0aW9uIGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6
OlhQQVRIX05BTUVTUEFDRV9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OlhQQVRI
X05BTUVTUEFDRV9OT0RFOgogICAgICAgICAgICAgLy8gRklYTUU6IENyZWF0ZSBhbiBYUGF0aCBv
YmplY3RpdmUgQyB3cmFwcGVyCiAgICAgICAgICAgICAvLyBTZWUgaHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1CiAgICAgICAgICAgICByZXR1cm4gbmls
OwpAQCAtMzc0LDE1ICszNDgsMTUgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBB
dG9taWNTdAogICAgIHJldHVybiBbW1t3cmFwcGVyQ2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6
aW1wbF0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChOb2RlICopX25vZGUKKy0gKFdlYkNvcmU6Ok5v
ZGUgKilfbm9kZQogewotICAgIHJldHVybiBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCk7Cisg
ICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpOwogfQogCiAtIChj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4ZWN1dGlvbkNvbnRleHQKIHsKLSAg
ICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkgewotICAgICAgICBpZiAoRnJhbWVNYWMgKmYg
PSBNYWMobi0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCisgICAgaWYgKFdlYkNvcmU6Ok5vZGUgKm4g
PSBbc2VsZiBfbm9kZV0pIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZyYW1lTWFjICpmID0gTWFj
KG4tPmRvY3VtZW50KCktPmZyYW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIGYtPmV4ZWN1dGlv
bkNvbnRleHRGb3JET00oKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0zOTAsMTcgKzM2NCw5
IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi1A
aW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViUHJpdmF0ZSkKLQotLSAoQk9PTClpc0NvbnRlbnRF
ZGl0YWJsZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzQ29udGVudEVkaXRhYmxlKCk7
Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTU5vZGVFeHRlbnNpb25z
KQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVu
dGF0aW9uCiAtIChOU1JlY3QpYm91bmRpbmdCb3gKIHsKICAgICBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOwpAQCAtNDA5LDYgKzM3NSw3
IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4g
TlNaZXJvUmVjdDsKIH0KIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbgogLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cwogewogICAgIFdl
YkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7
CkBAIC00MzQsNyArNDAxLDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9t
aWNTdAogICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQogICAgICAg
ICByYWlzZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgIAotICAgIEV2
ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVy
KTsKKyAgICBXZWJDb3JlOjpFdmVudExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVu
ZXI6OmNyZWF0ZShsaXN0ZW5lcik7CiAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9k
ZV0pLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1cmUpOwogICAgIHdy
YXBwZXItPmRlcmVmKCk7CiB9CkBAIC00NDQsNyArNDExLDcgQEAgc3RhdGljIENsYXNzIGVsZW1l
bnRDbGFzcyhjb25zdCBBdG9taWNTdAogICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFy
Z2V0Tm9kZSgpKQogICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9F
UlIpOwogCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5l
cjo6ZmluZChsaXN0ZW5lcikpCisgICAgaWYgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgKndyYXBw
ZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6ZmluZChsaXN0ZW5lcikpCiAgICAgICAgIEV2ZW50VGFy
Z2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFw
cGVyLCB1c2VDYXB0dXJlKTsKIH0KIApAQCAtNDUzLDcgKzQyMCw3IEBAIHN0YXRpYyBDbGFzcyBl
bGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVu
dFRhcmdldE5vZGUoKSkKICAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JU
RURfRVJSKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIEJPT0wgcmVzdWx0ID0gRXZlbnRUYXJnZXROb2RlQ2FzdChb
c2VsZiBfbm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtldmVudCBfZXZlbnRdLCBlYyk7CiAgICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDYxLDMxICs0MjgsMTgg
QEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50Ci0KLUBp
bXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsRXh0ZW5zaW9uKQotCi0t
IChET01FbGVtZW50ICopX293bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVudCBf
ZWxlbWVudFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+b3duZXJFbGVtZW50KCldOwotfQotCi1AZW5k
Ci0KLQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUVsZW1lbnQK
IAogLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGF1dG8tZ2VuZW5lcmF0ZSBpbiBET01FbGVtZW50
Lm1tCiBAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudEFwcEtpdEV4dGVuc2lv
bnMpCiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgaW1wbGVt
ZW50YXRpb24KIC0gKE5TSW1hZ2UqKWltYWdlCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5k
ZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcg
PSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKKyAgICAgICAgV2ViQ29yZTo6
UmVuZGVySW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlckltYWdlKj4ocmVu
ZGVyZXIpOwogICAgICAgICBpZiAoaW1nLT5jYWNoZWRJbWFnZSgpICYmICFpbWctPmNhY2hlZElt
YWdlKCktPmlzRXJyb3JJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltZy0+Y2FjaGVkSW1h
Z2UoKS0+aW1hZ2UoKS0+Z2V0TlNJbWFnZSgpOwogICAgIH0KQEAgLTQ5Niw0NSArNDUwLDQ5IEBA
IHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGltcGxlbWVudGF0
aW9uIERPTUVsZW1lbnQgKFdlYlByaXZhdGUpCiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBp
bXBsZW1lbnRlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24KIC0gKE5TRm9udCAqKV9mb250CiB7Ci0g
ICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsK
KyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5y
ZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5z
dHlsZSgpLT5mb250KCkucHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250KCk7CiAgICAgcmV0dXJuIG5p
bDsKIH0KIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbgogLSAoTlNEYXRhKilfaW1hZ2VUSUZGUmVwcmVzZW50YXRpb24KIHsKLSAgICBS
ZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOworICAg
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0tPnJlbmRl
cmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkpIHsKLSAgICAg
ICAgUmVuZGVySW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVyZXIp
OworICAgICAgICBXZWJDb3JlOjpSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7CiAgICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdl
KCkgJiYgIWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gKE5TRGF0YSopKGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJl
c2VudGF0aW9uKCkpOwogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQogCisvLyBGSVhNRTogdGhp
cyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtIChOU1VSTCAq
KV9nZXRVUkxBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQogewogICAgIEFTU0VSVChuYW1lKTsK
LSAgICBFbGVtZW50ICplID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICBy
ZXR1cm4gS1VSTChlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRy
aWJ1dGUobmFtZSkpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7CisgICAgV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKKyAgICBBU1NFUlQoZWxlbWVu
dCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OktVUkwoZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwocGFyc2VVUkwoZWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWUpKS5kZXByZWNhdGVkU3Ry
aW5nKCkpKS5nZXROU1VSTCgpOwogfQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVt
ZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtICh2b2lkICopX05QT2JqZWN0CiB7Ci0gICAg
RWxlbWVudCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKKyAgICBXZWJDb3JlOjpFbGVtZW50
KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRdOwogICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1l
KGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC0+
aGFzVGFnTmFtZShvYmplY3RUYWcpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKLSAgICBlbHNl
Ci0gICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAwOwogfQogCisvLyBGSVhNRTogdGhpcyBz
aG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtIChCT09MKWlzRm9j
dXNlZAogewotICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07CisgICAgV2ViQ29y
ZTo6RWxlbWVudCogaW1wbCA9IFtzZWxmIF9lbGVtZW50XTsKICAgICBpZiAoaW1wbC0+ZG9jdW1l
bnQoKS0+Zm9jdXNOb2RlKCkgPT0gaW1wbCkKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICByZXR1
cm4gTk87CkBAIC01NTAsMTcgKzUwOCwxNSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNv
bnN0IEF0b21pY1N0CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChfaW50ZXJuYWwpIHsK
LSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Cisg
ICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6UmFuZ2UqPihfaW50
ZXJuYWwpLT5kZXJlZigpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5h
bGl6ZQogewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAg
RE9NX2Nhc3Q8V2ViQ29yZTo6UmFuZ2UqPihfaW50ZXJuYWwpLT5kZXJlZigpOwogICAgIFtzdXBl
ciBmaW5hbGl6ZV07CiB9CiAKQEAgLTU2OSwxMyArNTI1LDEyIEBAIHN0YXRpYyBDbGFzcyBlbGVt
ZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICBpZiAoIV9pbnRlcm5hbCkKICAgICAgICAgcmV0
dXJuIEAiPERPTVJhbmdlOiBudWxsPiI7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPERPTVJhbmdlOiAlQCAlZCAlQCAlZD4iLAotICAgICAgICBbc2VsZiBzdGFydENv
bnRhaW5lcl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwKLSAgICAgICAgW3NlbGYgZW5kQ29udGFpbmVy
XSwgW3NlbGYgZW5kT2Zmc2V0XV07CisgICAgICAgICAgICAgICBbc2VsZiBzdGFydENvbnRhaW5l
cl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwgW3NlbGYgZW5kQ29udGFpbmVyXSwgW3NlbGYgZW5kT2Zm
c2V0XV07CiB9CiAKIC0gKERPTU5vZGUgKilzdGFydENvbnRhaW5lcgogewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERP
TU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5zdGFydENv
bnRhaW5lcihlYyldOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTU4Myw3ICs1MzgsNyBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0
b21pY1N0CiAKIC0gKGludClzdGFydE9mZnNldAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCByZXN1bHQgPSBb
c2VsZiBfcmFuZ2VdLT5zdGFydE9mZnNldChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTkxLDcgKzU0Niw3IEBAIHN0YXRpYyBDbGFzcyBlbGVt
ZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoRE9NTm9kZSAqKWVuZENvbnRhaW5lcgogewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFu
Z2VdLT5lbmRDb250YWluZXIoZWMpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC01OTksNyArNTU0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFz
cyhjb25zdCBBdG9taWNTdAogCiAtIChpbnQpZW5kT2Zmc2V0CiB7Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IHJl
c3VsdCA9IFtzZWxmIF9yYW5nZV0tPmVuZE9mZnNldChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjA3LDcgKzU2Miw3IEBAIHN0YXRpYyBDbGFz
cyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoQk9PTCljb2xsYXBzZWQKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7CiAgICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjE1LDcgKzU3MCw3
IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoRE9NTm9k
ZSAqKWNvbW1vbkFuY2VzdG9yQ29udGFpbmVyCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRE9NTm9kZSAqcmVzdWx0
ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9yYW5nZV0tPmNvbW1vbkFuY2VzdG9yQ29udGFp
bmVyKGVjKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtNjIzLDg1ICs1NzgsODUgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9t
aWNTdAogCiAtICh2b2lkKXNldFN0YXJ0OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQK
IHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFydChbcmVmTm9kZSBfbm9kZV0sIG9m
ZnNldCwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZvaWQpc2V0RW5k
OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFu
Z2VdLT5zZXRFbmQoW3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsKICAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNldFN0YXJ0QmVmb3JlOihET01Ob2RlICopcmVmTm9k
ZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QmVmb3JlKFtyZWZOb2RlIF9u
b2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZvaWQpc2V0U3Rh
cnRBZnRlcjooRE9NTm9kZSAqKXJlZk5vZGUKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5z
ZXRTdGFydEFmdGVyKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7CiB9CiAKIC0gKHZvaWQpc2V0RW5kQmVmb3JlOihET01Ob2RlICopcmVmTm9kZQogewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFtzZWxmIF9yYW5nZV0tPnNldEVuZEJlZm9yZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsK
ICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNldEVuZEFmdGVyOihET01O
b2RlICopcmVmTm9kZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPnNldEVuZEFmdGVyKFty
ZWZOb2RlIF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZv
aWQpY29sbGFwc2U6KEJPT0wpdG9TdGFydAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPmNv
bGxhcHNlKHRvU3RhcnQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2
b2lkKXNlbGVjdE5vZGU6KERPTU5vZGUgKilyZWZOb2RlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3Jh
bmdlXS0+c2VsZWN0Tm9kZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKICAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwogfQogCiAtICh2b2lkKXNlbGVjdE5vZGVDb250ZW50czooRE9NTm9kZSAqKXJlZk5v
ZGUKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZWxlY3ROb2RlQ29udGVudHMoW3JlZk5v
ZGUgX25vZGVdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAoc2hvcnQp
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzOih1bnNpZ25lZCBzaG9ydClob3cgOihET01SYW5nZSAqKXNv
dXJjZVJhbmdlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2hvcnQgcmVzdWx0
ID0gW3NlbGYgX3JhbmdlXS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXRpY19jYXN0PFJhbmdl
OjpDb21wYXJlSG93Pihob3cpLCBbc291cmNlUmFuZ2UgX3JhbmdlXSwgZWMpOworICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHNob3J0IHJlc3VsdCA9IFtzZWxmIF9yYW5n
ZV0tPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzdGF0aWNfY2FzdDxXZWJDb3JlOjpSYW5nZTo6Q29t
cGFyZUhvdz4oaG93KSwgW3NvdXJjZVJhbmdlIF9yYW5nZV0sIGVjKTsKICAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC0gKHZvaWQpZGVsZXRlQ29udGVu
dHMKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5kZWxldGVDb250ZW50cyhlYyk7CiAgICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWV4dHJh
Y3RDb250ZW50cwogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtE
T01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5l
eHRyYWN0Q29udGVudHMoZWMpLmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC03MDksNyArNjY0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRD
bGFzcyhjb25zdCBBdG9taWNTdAogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY2xvbmVDb250
ZW50cwogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1
bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNv
bnRlbnRzKGVjKS5nZXQoKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNzE3LDIxICs2NzIsMjEgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhj
b25zdCBBdG9taWNTdAogCiAtICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCiB7
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBfbm9kZV0sIGVj
KTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXN1cnJvdW5kQ29udGVu
dHM6KERPTU5vZGUgKiluZXdQYXJlbnQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zdXJy
b3VuZENvbnRlbnRzKFtuZXdQYXJlbnQgX25vZGVdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKIH0KIAogLSAoRE9NUmFuZ2UgKiljbG9uZVJhbmdlCiB7Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRE9NUmFu
Z2UgKnJlc3VsdCA9IFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFu
Z2UoZWMpLmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1
bHQ7CkBAIC03MzksNyArNjk0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBB
dG9taWNTdAogCiAtIChOU1N0cmluZyAqKXRvU3RyaW5nCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgTlNTdHJpbmcg
KnJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPnRvU3RyaW5nKGVjKTsKICAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC03NTIsNyArNzA3LDcgQEAgc3RhdGljIENs
YXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiAtICh2b2lkKWRldGFjaAogewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFtzZWxmIF9yYW5nZV0tPmRldGFjaChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKIH0KQEAgLTc2MSwxOCArNzE2LDE4IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29u
c3QgQXRvbWljU3QKIAogQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwp
CiAKLS0gKGlkKV9pbml0V2l0aFJhbmdlOihSYW5nZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aFJh
bmdlOihXZWJDb3JlOjpSYW5nZSAqKWltcGwKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAKICAgICBb
c3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFs
ICo+KGltcGwpOworICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
aW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7CiAgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAotKyAoRE9NUmFuZ2UgKilfcmFuZ2VXaXRoOihSYW5nZSAq
KWltcGwKKysgKERPTVJhbmdlICopX3JhbmdlV2l0aDooV2ViQ29yZTo6UmFuZ2UgKilpbXBsCiB7
CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzg1LDkgKzc0MCw5IEBA
IHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4gW1tb
c2VsZiBhbGxvY10gX2luaXRXaXRoUmFuZ2U6aW1wbF0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChS
YW5nZSAqKV9yYW5nZQorLSAoV2ViQ29yZTo6UmFuZ2UgKilfcmFuZ2UKIHsKLSAgICByZXR1cm4g
RE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKTsKKyAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29y
ZTo6UmFuZ2UqPihfaW50ZXJuYWwpOwogfQogCiBAZW5kCkBAIC04MDcsMTggKzc2MiwxOCBAQCBz
dGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBpbXBsZW1lbnRhdGlv
biBET01Ob2RlRmlsdGVyCiAKLS0gKGlkKV9pbml0V2l0aE5vZGVGaWx0ZXI6KE5vZGVGaWx0ZXIg
KilpbXBsCistIChpZClfaW5pdFdpdGhOb2RlRmlsdGVyOihXZWJDb3JlOjpOb2RlRmlsdGVyICop
aW1wbAogewogICAgIEFTU0VSVChpbXBsKTsKIAogICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2lu
dGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgX2ludGVy
bmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYo
KTsKICAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwogICAgIHJldHVybiBzZWxmOwogfQog
Ci0rIChET01Ob2RlRmlsdGVyICopX25vZGVGaWx0ZXJXaXRoOihOb2RlRmlsdGVyICopaW1wbAor
KyAoRE9NTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyV2l0aDooV2ViQ29yZTo6Tm9kZUZpbHRlciAq
KWltcGwKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04MzEsMjIg
Kzc4NiwyMiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAg
cmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVGaWx0ZXI6aW1wbF0gYXV0b3JlbGVh
c2VdOwogfQogCi0tIChOb2RlRmlsdGVyICopX25vZGVGaWx0ZXIKKy0gKFdlYkNvcmU6Ok5vZGVG
aWx0ZXIgKilfbm9kZUZpbHRlcgogewotICAgIHJldHVybiBET01fY2FzdDxOb2RlRmlsdGVyICo+
KF9pbnRlcm5hbCk7CisgICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGVGaWx0ZXIqPihf
aW50ZXJuYWwpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBpZiAoX2ludGVybmFsKQot
ICAgICAgICBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CisgICAg
ICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGVGaWx0ZXIqPihfaW50ZXJuYWwpLT5kZXJlZigpOwog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewogICAgIGlmIChf
aW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKS0+ZGVy
ZWYoKTsKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZUZpbHRlcio+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7CiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIApAQCAtODYzLDI0ICs4MTgsMjQg
QEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAaW1wbGVtZW50
YXRpb24gRE9NTm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRo
Tm9kZUl0ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0
ZXI+KWZpbHRlcgorLSAoaWQpX2luaXRXaXRoTm9kZUl0ZXJhdG9yOihXZWJDb3JlOjpOb2RlSXRl
cmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgogewogICAgIEFT
U0VSVChpbXBsKTsKIAogICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYoKTsKICAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwogICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRhaW5dOwogICAg
IHJldHVybiBzZWxmOwogfQogCi0tIChOb2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJhdG9yCistIChX
ZWJDb3JlOjpOb2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJhdG9yCiB7Ci0gICAgcmV0dXJuIERPTV9j
YXN0PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiBET01fY2FzdDxXZWJD
b3JlOjpOb2RlSXRlcmF0b3IqPihfaW50ZXJuYWwpOwogfQogCi0rIChET01Ob2RlSXRlcmF0b3Ig
Kilfbm9kZUl0ZXJhdG9yV2l0aDooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01O
b2RlRmlsdGVyPilmaWx0ZXIKKysgKERPTU5vZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0b3JXaXRo
OihXZWJDb3JlOjpOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+
KWZpbHRlcgogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTkwMSwy
NCArODU2LDI0IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAog
QGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQp
X2luaXRXaXRoVHJlZVdhbGtlcjooVHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9k
ZUZpbHRlcj4pZmlsdGVyCistIChpZClfaW5pdFdpdGhUcmVlV2Fsa2VyOihXZWJDb3JlOjpUcmVl
V2Fsa2VyICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKIHsKICAgICBB
U1NFUlQoaW1wbCk7CiAKICAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9j
YXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0
PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7CiAgICAgYWRkRE9N
V3JhcHBlcihzZWxmLCBpbXBsKTsKICAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKICAg
ICByZXR1cm4gc2VsZjsKIH0KIAotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCistIChXZWJD
b3JlOjpUcmVlV2Fsa2VyICopX3RyZWVXYWxrZXIKIHsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8VHJl
ZVdhbGtlciAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpUcmVl
V2Fsa2VyICo+KF9pbnRlcm5hbCk7CiB9CiAKLSsgKERPTVRyZWVXYWxrZXIgKilfdHJlZVdhbGtl
cldpdGg6KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRl
cgorKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooV2ViQ29yZTo6VHJlZVdhbGtl
ciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCiB7CiAgICAgaWYgKCFp
bXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTM3LDE2ICs4OTIsMTUgQEAgc3RhdGljIENs
YXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC8vIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uCiAKLWNsYXNzIE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJDb25kaXRpb24KLXsKK2NsYXNzIE9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uIDogcHVibGljIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRp
b24gewogcHVibGljOgogICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmls
dGVyPik7CiAgICAgdmlydHVhbCB+T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKTsKLSAgICB2aXJ0
dWFsIHNob3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OworICAgIHZpcnR1YWwgc2hvcnQgYWNj
ZXB0Tm9kZShXZWJDb3JlOjpOb2RlKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0gICAgT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbiAmKTsKKyAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbiYpOworICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICZvcGVyYXRvcj0oY29u
c3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24mKTsKIAogICAgIGlkIDxET01Ob2RlRmlsdGVyPiBt
X2ZpbHRlcjsKIH07CkBAIC05NjMsMTAgKzkxNywxMCBAQCBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bjo6fk9iakNOb2RlRmlsdGVyCiAgICAgQ0ZSZWxlYXNlKG1fZmlsdGVyKTsKIH0KIAotc2hvcnQg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoTm9kZSogbm9kZSkgY29uc3QKK3No
b3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKFdlYkNvcmU6Ok5vZGUqIG5v
ZGUpIGNvbnN0CiB7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6
RklMVEVSX1JFSkVDVDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5vZGVGaWx0ZXI6OkZJTFRF
Ul9SRUpFQ1Q7CiAgICAgcmV0dXJuIFttX2ZpbHRlciBhY2NlcHROb2RlOltET01Ob2RlIF9ub2Rl
V2l0aDpub2RlXV07CiB9CiAKQEAgLTk3OSwyMiArOTMzLDIyIEBAIHNob3J0IE9iakNOb2RlRmls
dGVyQ29uZGl0aW9uOjphY2NlcHROb2QKIAogLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9k
ZUl0ZXJhdG9yOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9N
Tm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCiB7Ci0gICAg
UmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUZp
bHRlcj4gY3BwRmlsdGVyOwogICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGNwcEZpbHRlciA9IG5l
dyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlTm9kZUl0ZXJhdG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hv
dywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7CisgICAgICAgIGNwcEZp
bHRlciA9IG5ldyBXZWJDb3JlOjpOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bihmaWx0ZXIpKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRl
Tm9kZUl0ZXJhdG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRF
bnRpdHlSZWZlcmVuY2VzLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1
cm4gW0RPTU5vZGVJdGVyYXRvciBfbm9kZUl0ZXJhdG9yV2l0aDppbXBsLmdldCgpIGZpbHRlcjpm
aWx0ZXJdOwogfQogCiAtIChET01UcmVlV2Fsa2VyICopY3JlYXRlVHJlZVdhbGtlcjooRE9NTm9k
ZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRl
ciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwogewotICAgIFJlZlB0cjxOb2RlRmlsdGVy
PiBjcHBGaWx0ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsK
ICAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgUmVmUHRyPFRyZWVXYWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVh
dGVUcmVlV2Fsa2VyKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRF
bnRpdHlSZWZlcmVuY2VzLCBlYyk7CisgICAgICAgIGNwcEZpbHRlciA9IG5ldyBXZWJDb3JlOjpO
b2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VHJlZVdhbGtl
cj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRyZWVXYWxrZXIoW3Jvb3QgX25vZGVd
LCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVjKTsKICAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiBbRE9NVHJlZVdhbGtlciBfdHJlZVdh
bGtlcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKIH0KQEAgLTEwMDksMTIgKzk2Mywx
MiBAQCBPYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpCiB7CiAgICAgaWYg
KExpc3RlbmVyTWFwKiBtYXAgPSBsaXN0ZW5lck1hcCkKICAgICAgICAgcmV0dXJuIG1hcC0+Z2V0
KGxpc3RlbmVyKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKIH0KIAogT2JqQ0V2
ZW50TGlzdGVuZXIgKk9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUoaWQgPERPTUV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyKQogewotICAgIE9iakNFdmVudExpc3RlbmVyICp3cmFwcGVyID0gZmluZChs
aXN0ZW5lcik7CisgICAgT2JqQ0V2ZW50TGlzdGVuZXIqIHdyYXBwZXIgPSBmaW5kKGxpc3RlbmVy
KTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHdyYXBwZXIgPSBuZXcgT2JqQ0V2ZW50TGlz
dGVuZXIobGlzdGVuZXIpOwogICAgIHdyYXBwZXItPnJlZigpOwpAQCAtMTAzOCw3ICs5OTIsNyBA
QCBPYmpDRXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVudExpc3RlbmVyKCkKICAgICBbbV9saXN0ZW5l
ciByZWxlYXNlXTsKIH0KIAotdm9pZCBPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoRXZl
bnQgKmV2ZW50LCBib29sKQordm9pZCBPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoV2Vi
Q29yZTo6RXZlbnQqIGV2ZW50LCBib29sKQogewogICAgIFttX2xpc3RlbmVyIGhhbmRsZUV2ZW50
OltET01FdmVudCBfZXZlbnRXaXRoOmV2ZW50XV07CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQWJzdHJhY3RWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUFic3RyYWN0Vmlldy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUFic3RyYWN0Vmlldy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVj
dC5oPgorCitAY2xhc3MgRE9NRG9jdW1lbnQ7CisKK0BpbnRlcmZhY2UgRE9NQWJzdHJhY3RWaWV3
IDogRE9NT2JqZWN0CistIChET01Eb2N1bWVudCAqKWRvY3VtZW50OworQGVuZApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkRPTUFic3RyYWN0Vmlldy5oIgorCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisKKyNpbXBvcnQgIkRPTURvY3VtZW50LmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2lt
cG9ydCAiRE9NV2luZG93LmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OworfQorCitBTExPV19E
T01fQ0FTVChET01XaW5kb3cpCisKK0BpbXBsZW1lbnRhdGlvbiBET01BYnN0cmFjdFZpZXcKKwor
I2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NV2luZG93Kj4oX2ludGVy
bmFsKQorCistIChET01Eb2N1bWVudCAqKWRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtET01Eb2N1
bWVudCBfZG9jdW1lbnRXaXRoOldURjo6Z2V0UHRyKElNUEwtPmRvY3VtZW50KCkpXTsKK30KKwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NQWJzdHJhY3RWaWV3IChXZWJDb3JlSW50ZXJuYWwp
CisKKy0gKFdlYkNvcmU6OkFic3RyYWN0VmlldyAqKV9hYnN0cmFjdFZpZXcKK3sKKyAgICByZXR1
cm4gSU1QTDsKK30KKworLSAoaWQpX2luaXRXaXRoQWJzdHJhY3RWaWV3OihXZWJDb3JlOjpBYnN0
cmFjdFZpZXcgKilpbXBsCit7CisgICAgQVNTRVJUKGltcGwpOworCisgICAgW3N1cGVyIF9pbml0
XTsKKyAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsK
KyAgICBpbXBsLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOworICAgIHJl
dHVybiBzZWxmOworfQorCisrIChET01BYnN0cmFjdFZpZXcgKilfYWJzdHJhY3RWaWV3V2l0aDoo
V2ViQ29yZTo6QWJzdHJhY3RWaWV3ICopaW1wbAoreworICAgIGlmICghaW1wbCkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZCBjYWNoZWRJbnN0YW5jZTsKKyAgICBjYWNoZWRJbnN0
YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7CisgICAgaWYgKGNhY2hlZEluc3RhbmNlKQorICAg
ICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAK
KyAgICByZXR1cm4gW1tbRE9NQWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdFdpdGhBYnN0cmFjdFZp
ZXc6aW1wbF0gYXV0b3JlbGVhc2VdOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQ1NTLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01D
U1MubW0JKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsNDUgKzI4LDM3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIkRPTUNTUy5oIgogCi0jaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJD
U1NDaGFyc2V0UnVsZS5oIgogI2ltcG9ydCAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW1wb3J0ICJD
U1NJbXBvcnRSdWxlLmgiCiAjaW1wb3J0ICJDU1NNZWRpYVJ1bGUuaCIKICNpbXBvcnQgIkNTU1Bh
Z2VSdWxlLmgiCisjaW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2ltcG9ydCAiQ1NTUnVs
ZS5oIgogI2ltcG9ydCAiQ1NTUnVsZUxpc3QuaCIKKyNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRp
b24uaCIKICNpbXBvcnQgIkNTU1N0eWxlUnVsZS5oIgogI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5o
IgogI2ltcG9ydCAiQ1NTVmFsdWVMaXN0LmgiCi0jaW1wb3J0ICJDb3VudGVyLmgiCiAjaW1wb3J0
ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgogI2ltcG9ydCAiRE9NV2lu
ZG93LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5o
IgotI2ltcG9ydCAiSFRNTExpbmtFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MU3R5bGVFbGVtZW50
LmgiCi0jaW1wb3J0ICJNZWRpYUxpc3QuaCIKLSNpbXBvcnQgIlByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oIgotI2ltcG9ydCAiUmVjdEltcGwuaCIKICNpbXBvcnQgIlN0eWxlU2hlZXQuaCIKLSNpbXBv
cnQgIlN0eWxlU2hlZXRMaXN0LmgiCiAKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KICNpbXBvcnQg
PG9iamMvb2JqYy1jbGFzcy5oPgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OwogfQogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC8vIERPTVN0eWxlU2hlZXQKIAogQGltcGxlbWVudGF0aW9uIERPTVN0eWxlU2hlZXQgKFdl
YkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRoU3R5bGVTaGVldDooU3R5bGVTaGVldCAq
KWltcGwKKy0gKGlkKV9pbml0V2l0aFN0eWxlU2hlZXQ6KFdlYkNvcmU6OlN0eWxlU2hlZXQgKilp
bXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01P
YmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtNzUsNyArNjcsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotKyAoRE9NU3R5bGVTaGVldCAqKV9zdHls
ZVNoZWV0V2l0aDooU3R5bGVTaGVldCAqKWltcGwKKysgKERPTVN0eWxlU2hlZXQgKilfc3R5bGVT
aGVldFdpdGg6KFdlYkNvcmU6OlN0eWxlU2hlZXQgKilpbXBsCiB7CiAgICAgaWYgKCFpbXBsKQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTAxLDcgKzkzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBET01DU1NTdHlsZVNoZWV0IChXZWJDb3JlSW50ZXJu
YWwpCiAKLSsgKERPTUNTU1N0eWxlU2hlZXQgKilfQ1NTU3R5bGVTaGVldFdpdGg6KENTU1N0eWxl
U2hlZXQgKilpbXBsCisrIChET01DU1NTdHlsZVNoZWV0ICopX0NTU1N0eWxlU2hlZXRXaXRoOihX
ZWJDb3JlOjpDU1NTdHlsZVNoZWV0ICopaW1wbAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
T01DU1NTdHlsZVNoZWV0Kj4oW0RPTVN0eWxlU2hlZXQgX3N0eWxlU2hlZXRXaXRoOmltcGxdKTsK
IH0KQEAgLTExNCw3ICsxMDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxl
bWVudGF0aW9uIERPTUNTU1J1bGUgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRo
UnVsZTooQ1NTUnVsZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aFJ1bGU6KFdlYkNvcmU6OkNTU1J1
bGUgKilpbXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJuYWwgPSBET01fY2Fz
dDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtMTIzLDcgKzExNSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0rIChET01DU1NSdWxlICop
X0NTU1J1bGVXaXRoOihDU1NSdWxlICopaW1wbAorKyAoRE9NQ1NTUnVsZSAqKV9DU1NSdWxlV2l0
aDooV2ViQ29yZTo6Q1NTUnVsZSAqKWltcGwKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC0xNjgsNyArMTYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IEBpbXBsZW1lbnRhdGlvbiBET01DU1NWYWx1ZSAoV2ViQ29yZUludGVybmFsKQogCi0tIChpZClf
aW5pdFdpdGhWYWx1ZTooQ1NTVmFsdWUgKilpbXBsCistIChpZClfaW5pdFdpdGhWYWx1ZTooV2Vi
Q29yZTo6Q1NTVmFsdWUgKilpbXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJu
YWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtMTc3LDcgKzE2OSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0rIChE
T01DU1NWYWx1ZSAqKV9DU1NWYWx1ZVdpdGg6KENTU1ZhbHVlICopaW1wbAorKyAoRE9NQ1NTVmFs
dWUgKilfQ1NTVmFsdWVXaXRoOihXZWJDb3JlOjpDU1NWYWx1ZSAqKWltcGwKIHsKICAgICBpZiAo
IWltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMTgsNyArMjEwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NWYWx1ZSo+KF9pbnRlcm5h
bCkpOwogfQogCi0rIChET01DU1NQcmltaXRpdmVWYWx1ZSAqKV9DU1NQcmltaXRpdmVWYWx1ZVdp
dGg6KENTU1ZhbHVlICopaW1wbAorKyAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilfQ1NTUHJpbWl0
aXZlVmFsdWVXaXRoOihXZWJDb3JlOjpDU1NWYWx1ZSAqKWltcGwKIHsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NQ1NTUHJpbWl0aXZlVmFsdWUqPihbRE9NQ1NTVmFsdWUgX0NTU1ZhbHVlV2l0
aDppbXBsXSk7CiB9CkBAIC0yMjcsMTkgKzIxOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01SR0JDb2xv
cgotCi1AaW1wbGVtZW50YXRpb24gRE9NUkdCQ29sb3IgKFdlYlByaXZhdGUpCi0KLS0gKE5TQ29s
b3IgKilfY29sb3IKLXsKLSAgICByZXR1cm4gW3NlbGYgY29sb3JdOwotfQotCi1AZW5kCi0KLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQGltcGxlbWVudGF0aW9uIERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKERPTUNTUzJQcm9wZXJ0aWVzKQogCkBAIC0xNDgzLDcgKzE0
NjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBz
ZXVkb0VsdAogewotICAgIEFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9jdW1lbnRdLT5kZWZh
dWx0VmlldygpOworICAgIFdlYkNvcmU6OkFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9jdW1l
bnRdLT5kZWZhdWx0VmlldygpOwogCiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJuIG5pbDsK
QEAgLTE0OTcsNyArMTQ3Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtIChET01D
U1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3Ry
aW5nICopcHNldWRvRWx0CiB7Ci0gICAgQWJzdHJhY3RWaWV3KiBkdiA9IFtzZWxmIF9kb2N1bWVu
dF0tPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6QWJzdHJhY3RWaWV3KiBkdiA9IFtzZWxm
IF9kb2N1bWVudF0tPmRlZmF1bHRWaWV3KCk7CiAKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1
cm4gbmlsOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCShyZXZpc2lvbiAxNjQxNSkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEz
ICsyOCwxNCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01DREFUQVNlY3Rpb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01Db21tZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTURvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50RnJhZ21l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnRUeXBlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RPTUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRW50aXR5Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RPTUVudGl0eVJlZmVyZW5jZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9ET01ET01J
bXBsZW1lbnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FeGNlcHRpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvRE9NTmFtZWROb2RlTWFwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZUxpc3QuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01FdmVudEV4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01FdmVudEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUV2ZW50RXhjZXB0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0
IERPTUV2ZW50RXhjZXB0aW9uOworCitlbnVtIERPTUV2ZW50RXhjZXB0aW9uQ29kZSB7CisgICAg
RE9NX1VOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSID0gMAorfTsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01FdmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NRXZlbnRzLmgJKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUV2ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTVZpZXdzLmg+CiAKICNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRE9NRXZlbnRFeGNlcHRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRXZl
bnRMaXN0ZW5lci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVudFRhcmdldC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01LZXlib2FyZEV2ZW50Lmg+CkBAIC0zOSwxMiArNDAsNiBAQAogI2ltcG9y
dCA8V2ViQ29yZS9ET01VSUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVdoZWVsRXZlbnQu
aD4KIAotZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXZlbnRFeGNlcHRpb247Ci0KLWVudW0g
RE9NRXZlbnRFeGNlcHRpb25Db2RlIHsKLSAgICBET01fVU5TUEVDSUZJRURfRVZFTlRfVFlQRV9F
UlIgPSAwCi19OwotCiBAaW50ZXJmYWNlIERPTUtleWJvYXJkRXZlbnQgKE5vblN0YW5kYXJkQWRk
aXRpb25zKQogLSAoQk9PTClnZXRNb2RpZmllclN0YXRlOihOU1N0cmluZyAqKWtleUlkZW50aWZp
ZXJBcmc7CiBAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW0JKHJldmlzaW9u
IDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzgsOCArMzgsNiBAQAogI2ltcG9ydCAiT3ZlcmZsb3dFdmVudC5oIgogI2ltcG9y
dCAiVUlFdmVudC5oIgogCi1BTExPV19ET01fQ0FTVChFdmVudCkKLQogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUV2ZW50CiAKQEAgLTk4LDYgKzk2LDcgQEAgQUxM
T1dfRE9NX0NBU1QoRXZlbnQpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01LZXlib2FyZEV2ZW50IChO
b25TdGFuZGFyZEFkZGl0aW9ucykKIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVu
dGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbgogLSAoQk9PTClnZXRNb2RpZmllclN0YXRlOihOU1N0
cmluZyAqKWtleUlkZW50aWZpZXJBcmcKIHsKICAgICBpZiAoW2tleUlkZW50aWZpZXJBcmcgaXNF
cXVhbFRvU3RyaW5nOkAiQ29udHJvbCJdICYmIFtzZWxmIGN0cmxLZXldKQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUhUTUwubW0JKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUhUTUwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDI4ICszNCwxNCBAQAogI2ltcG9y
dCAiRm91bmRhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJI
VE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxGb3JtRWxlbWVudC5oIgotI2ltcG9ydCAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgotI2ltcG9ydCAi
SFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2ltcG9ydCAiSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmgiCi0jaW1wb3J0ICJIVE1MU2VsZWN0RWxlbWVudC5oIgotI2lt
cG9ydCAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxUYWJsZUNlbGxF
bGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFibGVFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5oIgogI2ltcG9ydCAiS1VSTC5oIgotI2ltcG9ydCAiTmFtZU5vZGVM
aXN0LmgiCiAjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVuZGVyVGV4dENvbnRyb2wuaCIK
ICNpbXBvcnQgImNzc2hlbHBlci5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotCiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NSFRNTERvY3VtZW50CiAKQEAgLTc4LDcg
KzY0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKV9jcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcg
KiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nCiB7
Ci0gICAgTlNVUkwgKmJhc2VVUkwgPSBLVVJMKFtzZWxmIF9kb2N1bWVudF0tPmNvbXBsZXRlVVJM
KHBhcnNlVVJMKGJhc2VVUkxTdHJpbmcpKS5kZXByZWNhdGVkU3RyaW5nKCkpLmdldE5TVVJMKCk7
CisgICAgTlNVUkwgKmJhc2VVUkwgPSBXZWJDb3JlOjpLVVJMKFtzZWxmIF9kb2N1bWVudF0tPmNv
bXBsZXRlVVJMKFdlYkNvcmU6OnBhcnNlVVJMKGJhc2VVUkxTdHJpbmcpKS5kZXByZWNhdGVkU3Ry
aW5nKCkpLmdldE5TVVJMKCk7CiAgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50RnJhZ21l
bnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZyBiYXNlVVJMOmJhc2VVUkxdOwogfQogCkBA
IC0xMjIsMTkgKzEwOCwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAjcHJhZ21h
IG1hcmsgRE9NIEVYVEVOU0lPTlMKIAotLy8gVGhlc2UgI2ltcG9ydHMgYW5kICJ1c2luZ3MiIGFy
ZSB1c2VkIG9ubHkgYnkgdmlld0ZvckVsZW1lbnQgYW5kIHNob3VsZCBiZSBkZWxldGVkIAorLy8g
VGhpcyAjaW1wb3J0IGlzIHVzZWQgb25seSBieSB2aWV3Rm9yRWxlbWVudCBhbmQgc2hvdWxkIGJl
IGRlbGV0ZWQgCiAvLyB3aGVuIHRoYXQgZnVuY3Rpb24gZ29lcyBhd2F5LgogI2ltcG9ydCAiUmVu
ZGVyV2lkZ2V0LmgiCi11c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7Ci11c2luZyBXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQ7CiAKIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvbmx5IGJ5IHRoZSB0
d28gRm9ybUF1dG9GaWxsVHJhbnNpdGlvbiBjYXRlZ29yaWVzLCBhbmQgd2lsbCBnbyBhd2F5CiAv
LyBhcyBzb29uIGFzIHBvc3NpYmxlLgogc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9N
RWxlbWVudCAqZWxlbWVudCkKIHsKLSAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW2VsZW1l
bnQgX2VsZW1lbnRdLT5yZW5kZXJlcigpOworICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVu
ZGVyZXIgPSBbZWxlbWVudCBfZWxlbWVudF0tPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc1dpZGdldCgpKSB7Ci0gICAgICAgIFdpZGdldCAqd2lkZ2V0ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgUmVuZGVyV2lkZ2V0Kj4ocmVuZGVyZXIpLT53aWRnZXQoKTsKKyAgICAg
ICAgV2ViQ29yZTo6V2lkZ2V0ICp3aWRnZXQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQqPihyZW5kZXJlciktPndpZGdldCgpOwogICAgICAgICBpZiAod2lkZ2V0KSB7
CiAgICAgICAgICAgICB3aWRnZXQtPnBvcHVsYXRlKCk7CiAgICAgICAgICAgICByZXR1cm4gd2lk
Z2V0LT5nZXRWaWV3KCk7CkBAIC0xODgsOSArMTcyLDkgQEAgc3RhdGljIE5TVmlldyAqdmlld0Zv
ckVsZW1lbnQoRE9NRWxlbWVudAogCiAtICh2b2lkKV9yZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6
KE5TUmFuZ2UpdGFyZ2V0UmFuZ2Ugd2l0aFN0cmluZzooTlNTdHJpbmcgKilyZXBsYWNlbWVudFN0
cmluZyBzZWxlY3RpbmdGcm9tSW5kZXg6KGludClpbmRleAogewotICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsKKyAgICBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBbc2VsZiBfSFRNTElucHV0RWxlbWVu
dF07CiAgICAgaWYgKGlucHV0RWxlbWVudCkgewotICAgICAgICBTdHJpbmcgbmV3VmFsdWUgPSBp
bnB1dEVsZW1lbnQtPnZhbHVlKCkucmVwbGFjZSh0YXJnZXRSYW5nZS5sb2NhdGlvbiwgdGFyZ2V0
UmFuZ2UubGVuZ3RoLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgICAgIFdlYkNvcmU6OlN0cmlu
ZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC0+dmFsdWUoKS5yZXBsYWNlKHRhcmdldFJhbmdlLmxv
Y2F0aW9uLCB0YXJnZXRSYW5nZS5sZW5ndGgsIHJlcGxhY2VtZW50U3RyaW5nKTsKICAgICAgICAg
aW5wdXRFbGVtZW50LT5zZXRWYWx1ZShuZXdWYWx1ZSk7CiAgICAgICAgIGlucHV0RWxlbWVudC0+
c2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxlbmd0aCgpKTsKICAgICB9CkBAIC0x
OTgsNyArMTgyLDcgQEAgc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9NRWxlbWVudAog
CiAtIChOU1JhbmdlKV9zZWxlY3RlZFJhbmdlCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5w
dXRFbGVtZW50ID0gW3NlbGYgX0hUTUxJbnB1dEVsZW1lbnRdOworICAgIFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsKICAg
ICBpZiAoaW5wdXRFbGVtZW50KSB7CiAgICAgICAgIGludCBzdGFydCA9IGlucHV0RWxlbWVudC0+
c2VsZWN0aW9uU3RhcnQoKTsKICAgICAgICAgaW50IGVuZCA9IGlucHV0RWxlbWVudC0+c2VsZWN0
aW9uRW5kKCk7CkBAIC0yMTIsNyArMTk2LDcgQEAgc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1l
bnQoRE9NRWxlbWVudAogICAgIC8vIFRoaXMgbm90aWZpZXMgdGhlIGlucHV0IGVsZW1lbnQgdGhh
dCB0aGUgY29udGVudCBoYXMgYmVlbiBhdXRvZmlsbGVkCiAgICAgLy8gVGhpcyBhbGxvd3MgV2Vi
S2l0IHRvIG9iZXkgdGhlIC13ZWJraXQtYXV0b2ZpbGwgcHNldWRvIHN0eWxlLCB3aGljaAogICAg
IC8vIGNoYW5nZXMgdGhlIGJhY2tncm91bmQgY29sb3IuCi0gICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gW3NlbGYgX0hUTUxJbnB1dEVsZW1lbnRdOworICAgIFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsK
ICAgICBpZiAoaW5wdXRFbGVtZW50KQogICAgICAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxs
ZWQoZmlsbGVkKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCShyZXZp
c2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgQXR0cjsKICAgICBjbGFzcyBDREFUQVNlY3Rpb247CisgICAgY2xhc3MgQ1NTUHJpbWl0aXZl
VmFsdWU7CiAgICAgY2xhc3MgQ1NTUnVsZTsKICAgICBjbGFzcyBDU1NSdWxlTGlzdDsKICAgICBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpAQCAtMjAxLDEwICsyMDIsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAtIChXZWJDb3JlOjpEb2N1bWVudCAqKV9kb2N1bWVudDsKIEBlbmQKIAotQGlu
dGVyZmFjZSBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsRXh0ZW5zaW9uKQotLSAoRE9NRWxl
bWVudCAqKV9vd25lckVsZW1lbnQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFn
bWVudCAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVu
dEZyYWdtZW50V2l0aDooV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCAqKWltcGw7CiAtIChXZWJD
b3JlOjpEb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnQ7CkBAIC0yOTMsNiArMjkw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQGVuZAogCiBAaW50ZXJmYWNlIERPTUNTU1ByaW1p
dGl2ZVZhbHVlIChXZWJDb3JlSW50ZXJuYWwpCistIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZSAqKV9DU1NQcmltaXRpdmVWYWx1ZTsKICsgKERPTUNTU1ByaW1pdGl2ZVZhbHVlICopX0NTU1By
aW1pdGl2ZVZhbHVlV2l0aDooV2ViQ29yZTo6Q1NTVmFsdWUgKilpbXBsOwogQGVuZAogCkBAIC00
MjMsMTkgKzQyMSwyMCBAQCBpbmxpbmUgdm9pZCByYWlzZU9uRE9NRXJyb3IoV2ViQ29yZTo6RXhj
CiAgICAgICAgIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2xhc3MgV2ViQ29yZTo6dHlwZSo+
KHApOyB9CiAKIC8vIE5vIGNsYXNzIHNob3VsZCBhcHBlYXIgaW4gdGhpcyBsaXN0IGlmIGl0cyBi
YXNlIGNsYXNzIGlzIGFscmVhZHkgaGVyZS4KLUFMTE9XX0RPTV9DQVNUKENvdW50ZXIpCiBBTExP
V19ET01fQ0FTVChDU1NSdWxlKQogQUxMT1dfRE9NX0NBU1QoQ1NTUnVsZUxpc3QpCiBBTExPV19E
T01fQ0FTVChDU1NTdHlsZURlY2xhcmF0aW9uKQogQUxMT1dfRE9NX0NBU1QoQ1NTU3R5bGVTaGVl
dCkKIEFMTE9XX0RPTV9DQVNUKENTU1ZhbHVlKQorQUxMT1dfRE9NX0NBU1QoQ291bnRlcikKIEFM
TE9XX0RPTV9DQVNUKERPTUltcGxlbWVudGF0aW9uRnJvbnQpCitBTExPV19ET01fQ0FTVChFdmVu
dCkKIEFMTE9XX0RPTV9DQVNUKEhUTUxDb2xsZWN0aW9uKQogQUxMT1dfRE9NX0NBU1QoSFRNTE9w
dGlvbnNDb2xsZWN0aW9uKQogQUxMT1dfRE9NX0NBU1QoTWVkaWFMaXN0KQogQUxMT1dfRE9NX0NB
U1QoTmFtZWROb2RlTWFwKQotQUxMT1dfRE9NX0NBU1QoTm9kZUZpbHRlcikKIEFMTE9XX0RPTV9D
QVNUKE5vZGUpCitBTExPV19ET01fQ0FTVChOb2RlRmlsdGVyKQogQUxMT1dfRE9NX0NBU1QoTm9k
ZUl0ZXJhdG9yKQogQUxMT1dfRE9NX0NBU1QoTm9kZUxpc3QpCiBBTExPV19ET01fQ0FTVChSYW5n
ZSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0LmgJKHJldmlzaW9uIDE2NDE1KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwy
OCArMzAsNiBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBET01UaW1lU3RhbXA7CiAK
LWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV4Y2VwdGlvbjsKLQotLy8gRE9NIGV4Y2VwdGlv
biBjb2RlcwotZW51bSB7Ci0gICAgRE9NX0lOREVYX1NJWkVfRVJSICAgICAgICAgICAgICAgID0g
MSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICAgICAgPSAyLAotICAgIERPTV9I
SUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCi0gICAgRE9NX1dST05HX0RPQ1VNRU5U
X0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAg
ICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJSICAgICAgICAgICA9IDYsCi0gICAg
RE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0gNywKLSAgICBET01fTk9UX0ZPVU5E
X0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9OT1RfU1VQUE9SVEVEX0VSUiAgICAg
ICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgICAgID0gMTAs
Ci0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgID0gMTEsCi0gICAgRE9NX1NZ
TlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCi0gICAgRE9NX0lOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05BTUVTUEFDRV9FUlIgICAgICAgICAgICAg
ICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUKLX07
Ci0KLQogdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7
CiAKIEBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgJKHJldmlzaW9uIDE2NDE1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MU3R5bGVFbGVtZW50UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MVGV4dEFyZWFFbGVtZW50UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01LZXlib2FyZEV2ZW50UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01Nb3VzZUV2ZW50UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlSXRlcmF0b3JQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGVQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRE9NVUlFdmVudFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NV2hlZWxFdmVudFBy
aXZhdGUuaD4KQEAgLTYyLDE1ICs2NCw2IEBACiAtIChOU1N0cmluZyAqKV90ZXh0OwogQGVuZAog
Ci1AaW50ZXJmYWNlIERPTVJHQkNvbG9yIChXZWJQcml2YXRlKQotLy8gZmFzdCBhbmQgZWFzeSB3
YXkgb2YgZ2V0dGluZyBhbiBOU0NvbG9yIGZvciBhIERPTVJHQkNvbG9yCi0tIChOU0NvbG9yICop
X2NvbG9yOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vZGUgKFdlYlByaXZhdGUpCi0tIChCT09M
KWlzQ29udGVudEVkaXRhYmxlOwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUVsZW1lbnQgKFdlYlBy
aXZhdGUpCiAtIChOU0ZvbnQgKilfZm9udDsKIC0gKE5TRGF0YSAqKV9pbWFnZVRJRkZSZXByZXNl
bnRhdGlvbjsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCShyZXZpc2lvbiAxNjQxNSkK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyMCArMjgsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKLWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTVJhbmdl
RXhjZXB0aW9uOworI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZUV4Y2VwdGlvbi5oPgogCisvLyBE
T00gUmFuZ2UgY29tcGFyaXNvbiBjb2RlcwogZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gcmFu
Z2UgZXhjZXB0aW9uIGNvZGVzCi0gICAgLy8KLSAgICBET01fQkFEX0JPVU5EQVJZUE9JTlRTX0VS
UiAgICAgICAgPSAxLAotICAgIERPTV9JTlZBTElEX05PREVfVFlQRV9FUlIgICAgICAgICA9IDIK
LX07Ci0KLWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIFJhbmdlIGNvbXBhcmlzb24gY29kZXMK
LSAgICAvLwogICAgIERPTV9TVEFSVF9UT19TVEFSVCAgICAgICAgICAgICAgICA9IDAsCiAgICAg
RE9NX1NUQVJUX1RPX0VORCAgICAgICAgICAgICAgICAgID0gMSwKICAgICBET01fRU5EX1RPX0VO
RCAgICAgICAgICAgICAgICAgICAgPSAyLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVJhbmdlRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVJhbmdlRXhjZXB0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NUmFuZ2VFeGNlcHRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NUmFuZ2VF
eGNlcHRpb247CisKK2VudW0gRE9NUmFuZ2VFeGNlcHRpb25Db2RlIHsKKyAgICBET01fQkFEX0JP
VU5EQVJZUE9JTlRTX0VSUiAgICAgICAgPSAxLAorICAgIERPTV9JTlZBTElEX05PREVfVFlQRV9F
UlIgICAgICAgICA9IDIKK307CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkocmV2aXNp
b24gMTY0MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAotQGludGVyZmFjZSBET01BYnN0cmFjdFZp
ZXcgOiBET01PYmplY3QKLS0gKERPTURvY3VtZW50ICopZG9jdW1lbnQ7Ci1AZW5kCisjaW1wb3J0
IDxXZWJDb3JlL0RPTUFic3RyYWN0Vmlldy5oPgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3
cy5tbQkocmV2aXNpb24gMTY0MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET01WaWV3cy5oIgotCi0jaW1wb3J0ICJET01J
bnRlcm5hbC5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRPTVdpbmRvdy5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3
OwotfQotCi1BTExPV19ET01fQ0FTVChET01XaW5kb3cpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01B
YnN0cmFjdFZpZXcKLQotLSAoRE9NRG9jdW1lbnQgKilkb2N1bWVudAotewotICAgIHJldHVybiBb
RE9NRG9jdW1lbnQgX2RvY3VtZW50V2l0aDpbc2VsZiBfYWJzdHJhY3RWaWV3XS0+ZG9jdW1lbnQo
KV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUFic3RyYWN0VmlldyAoV2ViQ29y
ZUludGVybmFsKQotCi0tIChXZWJDb3JlOjpBYnN0cmFjdFZpZXcgKilfYWJzdHJhY3RWaWV3Ci17
Ci0gICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6OkFic3RyYWN0VmlldyAqPihfaW50ZXJuYWwp
OwotfQotCi0tIChpZClfaW5pdFdpdGhBYnN0cmFjdFZpZXc6KFdlYkNvcmU6OkFic3RyYWN0Vmll
dyAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGlt
cGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLSsgKERPTUFic3RyYWN0VmlldyAqKV9hYnN0cmFjdFZpZXdXaXRoOihXZWJDb3Jl
OjpBYnN0cmFjdFZpZXcgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0g
Z2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJl
dHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJl
dHVybiBbW1tET01BYnN0cmFjdFZpZXcgYWxsb2NdIF9pbml0V2l0aEFic3RyYWN0VmlldzppbXBs
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01YUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5o
CShyZXZpc2lvbiAxNjQxNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAorI2ltcG9ydCA8V2ViQ29y
ZS9ET01YUGF0aEV4Y2VwdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01YUGF0aEV4cHJlc3Np
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTVhQYXRoUmVzdWx0Lmg+Ci0KLWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTVhQ
YXRoRXhjZXB0aW9uOwotCi1lbnVtIERPTVhQYXRoRXhjZXB0aW9uQ29kZSB7Ci0gICAgRE9NX0lO
VkFMSURfRVhQUkVTU0lPTl9FUlIgPSA1MSwKLSAgICBET01fVFlQRV9FUlIgPSA1MgotfTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4Y2VwdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhjZXB0aW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2V4dGVy
biBOU1N0cmluZyAqIGNvbnN0IERPTVhQYXRoRXhjZXB0aW9uOworCitlbnVtIERPTVhQYXRoRXhj
ZXB0aW9uQ29kZSB7CisgICAgRE9NX0lOVkFMSURfRVhQUkVTU0lPTl9FUlIgICAgICA9IDUxLAor
ICAgIERPTV9UWVBFX0VSUiAgICAgICAgICAgICAgICAgICAgPSA1MgorfTsKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDE2
NDE1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC02NDYsNiArNjQ2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZU5h
bWUpOwogICAgIG15ICRwYXJlbnRJbXBsQ2xhc3NOYW1lID0gR2V0UGFyZW50SW1wbENsYXNzTmFt
ZSgkZGF0YU5vZGUpOwogICAgIG15ICRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSA9ICJXZWJD
b3JlOjoiIC4gJGltcGxDbGFzc05hbWU7CisgICAgbXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKIAogICAgIG15ICRudW1BdHRy
aWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OwogICAgIG15ICRudW1GdW5jdGlvbnMg
PSBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfTsKQEAgLTY1Niw2ICs2NTcsOCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICMgLSBJTkNMVURFUyAtCiAgICAgcHVzaChAaW1wbENvbnRl
bnRIZWFkZXIsICJcbiNpbXBvcnQgXCJjb25maWcuaFwiXG4iKTsKIAorICAgIHB1c2goQGltcGxD
b250ZW50SGVhZGVyLCAiXG4jaWZkZWYgJHtjb25kaXRpb25hbH1fU1VQUE9SVFxuXG4iKSBpZiAk
Y29uZGl0aW9uYWw7CisKICAgICBteSAkY2xhc3NIZWFkZXJOYW1lID0gR2V0Q2xhc3NIZWFkZXJO
YW1lKCRjbGFzc05hbWUpOwogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBc
IiRjbGFzc0hlYWRlck5hbWUuaFwiXG5cbiIpOwogCkBAIC0xMDgwLDYgKzEwODMsOCBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAjIEVORCBXZWJDb3JlSW50ZXJuYWwgY2F0
ZWdvcnkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcQGVuZFxuIik7CiAgICAgfQorICAg
IAorICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbH1fU1VQ
UE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOwogfQogCiAjIEludGVybmFsIGhlbHBlcgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAxNjQxNSkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDM2NSArNDQsMzYzIEBAIG15ICRkb2N1bWVudCA9IDA7ICMgV2lsbCBob2xkIHRoZSByZXN1bHQK
ICMgRGVmYXVsdCBDb25zdHJ1Y3Rvcgogc3ViIG5ldwogewotICBteSAkb2JqZWN0ID0gc2hpZnQ7
Ci0gIG15ICRyZWZlcmVuY2UgPSB7IH07CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15
ICRyZWZlcmVuY2UgPSB7IH07CiAKLSAgJGRvY3VtZW50ID0gMDsKLSAgJGJlUXVpZXQgPSBzaGlm
dDsKKyAgICAkZG9jdW1lbnQgPSAwOworICAgICRiZVF1aWV0ID0gc2hpZnQ7CiAKLSAgYmxlc3Mo
JHJlZmVyZW5jZSwgJG9iamVjdCk7Ci0gIHJldHVybiAkcmVmZXJlbmNlOworICAgIGJsZXNzKCRy
ZWZlcmVuY2UsICRvYmplY3QpOworICAgIHJldHVybiAkcmVmZXJlbmNlOwogfQogCiAjIFJldHVy
bnMgdGhlIHBhcnNlZCAnaWRsRG9jdW1lbnQnCiBzdWIgUGFyc2UKIHsKLSAgbXkgJG9iamVjdCA9
IHNoaWZ0OwotICBteSAkZmlsZU5hbWUgPSBzaGlmdDsKLSAgbXkgJGRlZmluZXMgPSBzaGlmdDsK
LSAgCi0gIHByaW50ICIgfCAqKiogU3RhcnRpbmcgdG8gcGFyc2UgJGZpbGVOYW1lLi4uXG4gfFxu
IiBpZighJGJlUXVpZXQpOworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZmlsZU5h
bWUgPSBzaGlmdDsKKyAgICBteSAkZGVmaW5lcyA9IHNoaWZ0OworCisgICAgcHJpbnQgIiB8ICoq
KiBTdGFydGluZyB0byBwYXJzZSAkZmlsZU5hbWUuLi5cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsK
KworICAgIG9wZW4gRklMRSwgIi18IiwgIi91c3IvYmluL2djYyIsICItRSIsICItUCIsICIteCIs
ICJjKysiLCAKKyAgICAgICAgKG1hcCB7ICItRCRfIiB9IHNwbGl0KC8gLywgJGRlZmluZXMpKSwg
JGZpbGVOYW1lIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJGZpbGVOYW1lIjsKKyAgICBteSBAZG9j
dW1lbnRDb250ZW50ID0gPEZJTEU+OworICAgIGNsb3NlIEZJTEU7CisKKyAgICBteSAkZGF0YUF2
YWlsYWJsZSA9IDA7CisKKyAgICAjIFNpbXBsZSBJREwgUGFyc2VyICh0bSkKKyAgICBmb3JlYWNo
IChAZG9jdW1lbnRDb250ZW50KSB7CisgICAgICAgIG15ICRuZXdQYXJzZU1vZGUgPSAkb2JqZWN0
LT5EZXRlcm1pbmVQYXJzZU1vZGUoJF8pOworCisgICAgICAgIGlmICgkbmV3UGFyc2VNb2RlIG5l
IE1PREVfVU5ERUYpIHsKKyAgICAgICAgICAgIGlmICgkZGF0YUF2YWlsYWJsZSBlcSAwKSB7Cisg
ICAgICAgICAgICAgICAgJGRhdGFBdmFpbGFibGUgPSAxOyAjIFN0YXJ0IG5vZGUgYnVpbGRpbmcu
Li4KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJG9iamVjdC0+UHJvY2Vz
c1NlY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gIG9wZW4gRklMRSwgIi18
IiwgIi91c3IvYmluL2djYyIsICItRSIsICItUCIsICIteCIsICJjKysiLCAKLSAgICAgIChtYXAg
eyAiLUQkXyIgfSBzcGxpdCgvIC8sICRkZWZpbmVzKSksICRmaWxlTmFtZSBvciBkaWUgIkNvdWxk
IG5vdCBvcGVuICRmaWxlTmFtZSI7Ci0gIG15IEBkb2N1bWVudENvbnRlbnQgPSA8RklMRT47Ci0g
IGNsb3NlIEZJTEU7Ci0KLSAgbXkgJGRhdGFBdmFpbGFibGUgPSAwOwotCi0gICMgU2ltcGxlIElE
TCBQYXJzZXIgKHRtKQotICBmb3JlYWNoKEBkb2N1bWVudENvbnRlbnQpIHsKLSAgICBteSAkbmV3
UGFyc2VNb2RlID0gJG9iamVjdC0+RGV0ZXJtaW5lUGFyc2VNb2RlKCRfKTsKLQotICAgIGlmKCRu
ZXdQYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgewotICAgICAgaWYoJGRhdGFBdmFpbGFibGUgZXEg
MCkgewotICAgICAgICAkZGF0YUF2YWlsYWJsZSA9IDE7ICMgU3RhcnQgbm9kZSBidWlsZGluZy4u
LgotICAgICAgfSBlbHNlIHsKLSAgICAgICAgJG9iamVjdC0+UHJvY2Vzc1NlY3Rpb24oKTsKLSAg
ICAgIH0KLSAgICB9CisgICAgICAgICMgVXBkYXRlIGRldGVjdGVkIGRhdGEgc3RyZWFtIG1vZGUu
Li4KKyAgICAgICAgaWYgKCRuZXdQYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgeworICAgICAgICAg
ICAgJHBhcnNlTW9kZSA9ICRuZXdQYXJzZU1vZGU7CisgICAgICAgIH0KIAotICAgICMgVXBkYXRl
IGRldGVjdGVkIGRhdGEgc3RyZWFtIG1vZGUuLi4KLSAgICBpZigkbmV3UGFyc2VNb2RlIG5lIE1P
REVfVU5ERUYpIHsKLSAgICAgICRwYXJzZU1vZGUgPSAkbmV3UGFyc2VNb2RlOworICAgICAgICBw
dXNoKEB0ZW1wb3JhcnlDb250ZW50LCAkXyk7CiAgICAgfQogCi0gICAgcHVzaChAdGVtcG9yYXJ5
Q29udGVudCwgJF8pOwotICB9CisgICAgIyBDaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyByZW1h
aW5pbmcgdG8gcGFyc2UuLi4KKyAgICBpZiAoKCRwYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgYW5k
ICgkI3RlbXBvcmFyeUNvbnRlbnQgPiAwKSkgeworICAgICAgICAkb2JqZWN0LT5Qcm9jZXNzU2Vj
dGlvbigpOworICAgIH0KIAotICAjIENoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHJlbWFpbmlu
ZyB0byBwYXJzZS4uLgotICBpZigoJHBhcnNlTW9kZSBuZSBNT0RFX1VOREVGKSBhbmQgKCQjdGVt
cG9yYXJ5Q29udGVudCA+IDApKSB7Ci0gICAgJG9iamVjdC0+UHJvY2Vzc1NlY3Rpb24oKTsKLSAg
fQorICAgIHByaW50ICIgfCAqKiogRmluaXNoZWQgcGFyc2luZyFcbiIgdW5sZXNzICRiZVF1aWV0
OworIAorICAgICRkb2N1bWVudC0+ZmlsZU5hbWUoJGZpbGVOYW1lKTsKIAotICBwcmludCAiIHwg
KioqIEZpbmlzaGVkIHBhcnNpbmchXG4iIGlmKCEkYmVRdWlldCk7Ci0gIAotICAkZG9jdW1lbnQt
PmZpbGVOYW1lKCRmaWxlTmFtZSk7Ci0gIAotICByZXR1cm4gJGRvY3VtZW50OworICAgIHJldHVy
biAkZG9jdW1lbnQ7CiB9CiAKIHN1YiBQYXJzZU1vZHVsZQogewotICBteSAkb2JqZWN0ID0gc2hp
ZnQ7Ci0gIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKIAotICBwcmludCAiIHwtIFRyeWluZyB0byBwYXJzZSBt
b2R1bGUuLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICBwcmludCAiIHwtIFRyeWluZyB0byBwYXJz
ZSBtb2R1bGUuLi5cbiIgdW5sZXNzICRiZVF1aWV0OwogCi0gIG15ICRkYXRhID0gam9pbigiIiwg
QHRlbXBvcmFyeUNvbnRlbnQpOwotICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6bW9kdWxlU2Vs
ZWN0b3IvOworICAgIG15ICRkYXRhID0gam9pbigiIiwgQHRlbXBvcmFyeUNvbnRlbnQpOworICAg
ICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjptb2R1bGVTZWxlY3Rvci87CiAKLSAgbXkgJG1vZHVs
ZU5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpc
biRkYXRhXG4pIikpOwotICAkZGF0YU5vZGUtPm1vZHVsZSgkbW9kdWxlTmFtZSk7CisgICAgbXkg
JG1vZHVsZU5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNv
dXJjZTpcbiRkYXRhXG4pIikpOworICAgICRkYXRhTm9kZS0+bW9kdWxlKCRtb2R1bGVOYW1lKTsK
IAotICBwcmludCAiICB8LS0tLT4gTW9kdWxlOyBOQU1FIFwiJG1vZHVsZU5hbWVcIlxuIHwtXG4g
fFxuIiBpZighJGJlUXVpZXQpOworICAgIHByaW50ICIgIHwtLS0tPiBNb2R1bGU7IE5BTUUgXCIk
bW9kdWxlTmFtZVwiXG4gfC1cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsKIH0KIAogc3ViIGR1bXBF
eHRlbmRlZEF0dHJpYnV0ZXMKIHsKLSAgbXkgJHBhZFN0ciA9IHNoaWZ0OwotICBteSAkYXR0cnMg
PSBzaGlmdDsKKyAgICBteSAkcGFkU3RyID0gc2hpZnQ7CisgICAgbXkgJGF0dHJzID0gc2hpZnQ7
CiAKLSAgaWYgKCEleyRhdHRyc30pIHsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLQotICBteSBAdGVt
cDsKLSAgd2hpbGUgKCgkbmFtZSwgJHZhbHVlKSA9IGVhY2goJXskYXR0cnN9KSkgewotICAgIHB1
c2goQHRlbXAsICIkbmFtZT0kdmFsdWUiKTsKLSAgfQotICAKLSAgcmV0dXJuICRwYWRTdHIgLiAi
WyIgLiBqb2luKCIsICIsIEB0ZW1wKSAuICJdIjsKKyAgICBpZiAoISV7JGF0dHJzfSkgeworICAg
ICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgbXkgQHRlbXA7CisgICAgd2hpbGUgKCgkbmFt
ZSwgJHZhbHVlKSA9IGVhY2goJXskYXR0cnN9KSkgeworICAgICAgICBwdXNoKEB0ZW1wLCAiJG5h
bWU9JHZhbHVlIik7CisgICAgfQorCisgICAgcmV0dXJuICRwYWRTdHIgLiAiWyIgLiBqb2luKCIs
ICIsIEB0ZW1wKSAuICJdIjsKIH0KIAogc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzCiB7Ci0g
IG15ICRzdHIgPSBzaGlmdDsKLSAgJHN0ciA9fiBzL1xbXHMqKC4qKVxdLyQxL2c7Ci0gIAotICBt
eSAlYXR0cnMgPSAoKTsKLSAgCi0gIGZvcmVhY2ggbXkgJHZhbHVlIChzcGxpdCgvXHMqLFxzKi8s
ICRzdHIpKSB7Ci0gICAgKCRuYW1lLCR2YWx1ZSkgPSBzcGxpdCgvXHMqPVxzKi8sJHZhbHVlLDIp
OworICAgIG15ICRzdHIgPSBzaGlmdDsKKyAgICAkc3RyID1+IHMvXFtccyooLiopXF0vJDEvZzsK
IAotICAgICMgQXR0cmlidXRlcyB3aXRoIG5vIHZhbHVlIGFyZSBzZXQgdG8gYmUgdHJ1ZQotICAg
ICR2YWx1ZSA9IDEgdW5sZXNzIGRlZmluZWQgJHZhbHVlOwotICAgICRhdHRyc3skbmFtZX0gPSAk
dmFsdWU7Ci0gIH0KLSAgCi0gIHJldHVybiBcJWF0dHJzOworICAgIG15ICVhdHRycyA9ICgpOwor
CisgICAgZm9yZWFjaCBteSAkdmFsdWUgKHNwbGl0KC9ccyosXHMqLywgJHN0cikpIHsKKyAgICAg
ICAgKCRuYW1lLCR2YWx1ZSkgPSBzcGxpdCgvXHMqPVxzKi8sICR2YWx1ZSwgMik7CisKKyAgICAg
ICAgIyBBdHRyaWJ1dGVzIHdpdGggbm8gdmFsdWUgYXJlIHNldCB0byBiZSB0cnVlCisgICAgICAg
ICR2YWx1ZSA9IDEgdW5sZXNzIGRlZmluZWQgJHZhbHVlOworICAgICAgICAkYXR0cnN7JG5hbWV9
ID0gJHZhbHVlOworICAgIH0KKworICAgIHJldHVybiBcJWF0dHJzOwogfQogCiBzdWIgUGFyc2VJ
bnRlcmZhY2UKIHsKLSAgbXkgJG9iamVjdCA9IHNoaWZ0OwotICBteSAkZGF0YU5vZGUgPSBzaGlm
dDsKLSAgbXkgJHNlY3Rpb25OYW1lID0gc2hpZnQ7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0Owor
ICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRzZWN0aW9uTmFtZSA9IHNoaWZ0Owor
CisgICAgbXkgJGRhdGEgPSBqb2luKCIiLCBAdGVtcG9yYXJ5Q29udGVudCk7CisKKyAgICAjIExv
b2sgZm9yIGVuZC1vZi1pbnRlcmZhY2UgbWFyaworICAgICRkYXRhID1+IC99Oy9nOworICAgICRk
YXRhID0gc3Vic3RyKCRkYXRhLCBpbmRleCgkZGF0YSwgJHNlY3Rpb25OYW1lKSwgcG9zKCRkYXRh
KSAtIGxlbmd0aCgkZGF0YSkpOworCisgICAgJGRhdGEgPX4gcy9bXG5ccl0vL2c7CisKKyAgICAj
IEJlZ2lubmluZyBvZiB0aGUgcmVnZXhwIHBhcnNpbmcgbWFnaWMKKyAgICBpZiAoJHNlY3Rpb25O
YW1lIGVxICJleGNlcHRpb24iKSB7CisgICAgICAgIHByaW50ICIgfC0gVHJ5aW5nIHRvIHBhcnNl
IGV4Y2VwdGlvbi4uLlxuIiB1bmxlc3MgJGJlUXVpZXQ7CisKKyAgICAgICAgbXkgJGV4Y2VwdGlv
bk5hbWUgPSAiIjsKKyAgICAgICAgbXkgJGV4Y2VwdGlvbkRhdGEgPSAiIjsKKyAgICAgICAgbXkg
JGV4Y2VwdGlvbkRhdGFOYW1lID0gIiI7CisgICAgICAgIG15ICRleGNlcHRpb25EYXRhVHlwZSA9
ICIiOworCisgICAgICAgICMgTWF0Y2ggaWRlbnRpZmllciBvZiB0aGUgZXhjZXB0aW9uLCBhbmQg
ZW5jbG9zZWQgZGF0YS4uLgorICAgICAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0
aW9uU2VsZWN0b3IvOworICAgICAgICAkZXhjZXB0aW9uTmFtZSA9IChkZWZpbmVkKCQxKSA/ICQx
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7CisgICAgICAgICRl
eGNlcHRpb25EYXRhID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5T
b3VyY2U6XG4kZGF0YVxuKSIpKTsKIAotICBteSAkZGF0YSA9IGpvaW4oIiIsIEB0ZW1wb3JhcnlD
b250ZW50KTsKKyAgICAgICAgKCcnID1+IC9eLyk7ICMgUmVzZXQgdmFyaWFibGVzIG5lZWRlZCBm
b3IgcmVnZXhwIG1hdGNoaW5nCiAKLSAgIyBMb29rIGZvciBlbmQtb2YtaW50ZXJmYWNlIG1hcmsK
LSAgJGRhdGEgPX4gL307L2c7Ci0gICRkYXRhID0gc3Vic3RyKCRkYXRhLCBpbmRleCgkZGF0YSwg
JHNlY3Rpb25OYW1lKSwgcG9zKCRkYXRhKSAtIGxlbmd0aCgkZGF0YSkpOworICAgICAgICAjIC4u
LiBwYXJzZSBlbmNsb3NlZCBkYXRhIChnZXQuIG5hbWUgJiB0eXBlKQorICAgICAgICAkZXhjZXB0
aW9uRGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU3ViU2VsZWN0b3IvOworICAgICAg
ICAkZXhjZXB0aW9uRGF0YVR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAgICAkZXhjZXB0aW9uRGF0YU5hbWUg
PSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRh
XG4pIikpOwogCi0gICRkYXRhID1+IHMvW1xuXHJdLy9nOworICAgICAgICAjIEZpbGwgaW4gZG9t
Q2xhc3MgZGF0YXN0cnVjdHVyZQorICAgICAgICAkZGF0YU5vZGUtPm5hbWUoJGV4Y2VwdGlvbk5h
bWUpOwogCi0gICMgQmVnaW5uaW5nIG9mIHRoZSByZWdleHAgcGFyc2luZyBtYWdpYwotICBpZigk
c2VjdGlvbk5hbWUgZXEgImV4Y2VwdGlvbiIpIHsKLSAgICBwcmludCAiIHwtIFRyeWluZyB0byBw
YXJzZSBleGNlcHRpb24uLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAgbXkgJG5ld0RhdGFO
b2RlID0gbmV3IGRvbUF0dHJpYnV0ZSgpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnR5cGUoInJl
YWRvbmx5IGF0dHJpYnV0ZSIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcg
ZG9tU2lnbmF0dXJlKCkpOworCisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1l
KCRleGNlcHRpb25EYXRhTmFtZSk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50
eXBlKCRleGNlcHRpb25EYXRhVHlwZSk7CiAKLSAgICBteSAkZXhjZXB0aW9uTmFtZSA9ICIiOyBt
eSAkZXhjZXB0aW9uRGF0YSA9ICIiOwotICAgIG15ICRleGNlcHRpb25EYXRhTmFtZSA9ICIiOyBt
eSAkZXhjZXB0aW9uRGF0YVR5cGUgPSAiIjsKKyAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFO
b2RlLT5hdHRyaWJ1dGVzOworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRuZXdEYXRhTm9kZSk7
CisKKyAgICAgICAgcHJpbnQgIiAgfC0tLS0+IEV4Y2VwdGlvbjsgTkFNRSBcIiRleGNlcHRpb25O
YW1lXCIgREFUQSBUWVBFIFwiJGV4Y2VwdGlvbkRhdGFUeXBlXCIgREFUQSBOQU1FIFwiJGV4Y2Vw
dGlvbkRhdGFOYW1lXCJcbiB8LVxuIHxcbiIgdW5sZXNzICRiZVF1aWV0OworICAgIH0gZWxzaWYg
KCRzZWN0aW9uTmFtZSBlcSAiaW50ZXJmYWNlIikgeworICAgICAgICBwcmludCAiIHwtIFRyeWlu
ZyB0byBwYXJzZSBpbnRlcmZhY2UuLi5cbiIgdW5sZXNzICRiZVF1aWV0OworCisgICAgICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gIiI7CisgICAgICAgIG15ICRpbnRlcmZhY2VEYXRhID0gIiI7CisK
KyAgICAgICAgIyBNYXRjaCBpZGVudGlmaWVyIG9mIHRoZSBpbnRlcmZhY2UsIGFuZCBlbmNsb3Nl
ZCBkYXRhLi4uCisgICAgICAgICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VTZWxl
Y3Rvci87CisKKyAgICAgICAgJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVk
KCQxKSA/ICQxIDogIiAiKTsgY2hvcCgkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAg
ICAgICAgJGludGVyZmFjZU5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAgICAkaW50ZXJmYWNlQmFzZSA9IChk
ZWZpbmVkKCQzKSA/ICQzIDogIiIpOworICAgICAgICAkaW50ZXJmYWNlRGF0YSA9IChkZWZpbmVk
KCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7CisK
KyAgICAgICAgIyBGaWxsIGluIGtub3duIHBhcnRzIG9mIHRoZSBkb21DbGFzcyBkYXRhc3RydWN0
dXJlIG5vdy4uLgorICAgICAgICAkZGF0YU5vZGUtPm5hbWUoJGludGVyZmFjZU5hbWUpOworICAg
ICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmlidXRl
cygkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CisKKyAgICAgICAgIyBJbmhlcml0YW5j
ZSBkZXRlY3Rpb24KKyAgICAgICAgbXkgQGludGVyZmFjZVBhcmVudHMgPSBzcGxpdCgvLC8sICRp
bnRlcmZhY2VCYXNlKTsKKyAgICAgICAgZm9yZWFjaChAaW50ZXJmYWNlUGFyZW50cykgeworICAg
ICAgICAgICAgbXkgJGxpbmUgPSAkXzsKKyAgICAgICAgICAgICRsaW5lID1+IHMvXHMqLy9nOwor
CisgICAgICAgICAgICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPnBhcmVudHM7CisgICAgICAg
ICAgICBwdXNoKEAkYXJyYXlSZWYsICRsaW5lKTsKKyAgICAgICAgfQorCisgICAgICAgICRpbnRl
cmZhY2VEYXRhID1+IHMvW1xuXHJdLy9nOworICAgICAgICBteSBAaW50ZXJmYWNlTWV0aG9kcyA9
IHNwbGl0KC87LywgJGludGVyZmFjZURhdGEpOworCisgICAgICAgIGZvcmVhY2ggbXkgJGxpbmUg
KEBpbnRlcmZhY2VNZXRob2RzKSB7CisgICAgICAgICAgICBpZiAoJGxpbmUgPX4gL2F0dHJpYnV0
ZS8pIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNl
QXR0cmlidXRlU2VsZWN0b3IvOworCisgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUg
PSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOworICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVFeHRlbmRlZEF0dHJpYnV0ZXMg
PSAoZGVmaW5lZCgkMikgPyAkMiA6ICIgIik7IGNob3AoJGF0dHJpYnV0ZUV4dGVuZGVkQXR0cmli
dXRlcyk7CisKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlRGF0YVR5cGUgPSAoZGVmaW5l
ZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwor
ICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVEYXRhTmFtZSA9IChkZWZpbmVkKCQ0KSA/ICQ0
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAgIAotICAgICMg
TWF0Y2ggaWRlbnRpZmllciBvZiB0aGUgZXhjZXB0aW9uLCBhbmQgZW5jbG9zZWQgZGF0YS4uLgot
ICAgICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjpleGNlcHRpb25TZWxlY3Rvci87Ci0gICAgJGV4
Y2VwdGlvbk5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNv
dXJjZTpcbiRkYXRhXG4pIikpOwotICAgICRleGNlcHRpb25EYXRhID0gKGRlZmluZWQoJDIpID8g
JDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKLQotICAgICgn
JyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBtYXRjaGluZwot
Ci0gICAgIyAuLi4gcGFyc2UgZW5jbG9zZWQgZGF0YSAoZ2V0LiBuYW1lICYgdHlwZSkKLSAgICAk
ZXhjZXB0aW9uRGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU3ViU2VsZWN0b3IvOwot
ICAgICRleGNlcHRpb25EYXRhVHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5n
IGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7Ci0gICAgJGV4Y2VwdGlvbkRhdGFOYW1lID0g
KGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxu
KSIpKTsKLQotICAgICMgRmlsbCBpbiBkb21DbGFzcyBkYXRhc3RydWN0dXJlCi0gICAgJGRhdGFO
b2RlLT5uYW1lKCRleGNlcHRpb25OYW1lKTsKLQotICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBk
b21BdHRyaWJ1dGUoKTsKLSAgICAkbmV3RGF0YU5vZGUtPnR5cGUoInJlYWRvbmx5IGF0dHJpYnV0
ZSIpOwotICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7Ci0K
LSAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkZXhjZXB0aW9uRGF0YU5hbWUpOwot
ICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRleGNlcHRpb25EYXRhVHlwZSk7Ci0g
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmhhc1B0ckZsYWcoMCk7Ci0KLSAgICBteSAkYXJy
YXlSZWYgPSAkZGF0YU5vZGUtPmF0dHJpYnV0ZXM7Ci0gICAgcHVzaChAJGFycmF5UmVmLCAkbmV3
RGF0YU5vZGUpOwotCi0gICAgcHJpbnQgIiAgfC0tLS0+IEV4Y2VwdGlvbjsgTkFNRSBcIiRleGNl
cHRpb25OYW1lXCIgREFUQSBUWVBFIFwiJGV4Y2VwdGlvbkRhdGFUeXBlXCIgREFUQSBOQU1FIFwi
JGV4Y2VwdGlvbkRhdGFOYW1lXCJcbiB8LVxuIHxcbiIgaWYoISRiZVF1aWV0KTsKLSAgfSBlbHNp
Zigkc2VjdGlvbk5hbWUgZXEgImludGVyZmFjZSIpIHsKLSAgICBwcmludCAiIHwtIFRyeWluZyB0
byBwYXJzZSBpbnRlcmZhY2UuLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAgICAgICAgICAo
JycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hpbmcK
IAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gIiI7Ci0gICAgbXkgJGludGVyZmFjZURhdGEgPSAi
IjsKLSAgICAKLSAgICAjIE1hdGNoIGlkZW50aWZpZXIgb2YgdGhlIGludGVyZmFjZSwgYW5kIGVu
Y2xvc2VkIGRhdGEuLi4KLSAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlU2Vs
ZWN0b3IvOwotICAgIAotICAgICRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5l
ZCgkMSkgPyAkMSA6ICIgIik7IGNob3AoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyk7Ci0g
ICAgJGludGVyZmFjZU5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJv
ciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotICAgICRpbnRlcmZhY2VCYXNlID0gKGRlZmluZWQo
JDMpID8gJDMgOiAiIik7Ci0gICAgJGludGVyZmFjZURhdGEgPSAoZGVmaW5lZCgkNCkgPyAkNCA6
IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotCi0gICAgIyBGaWxs
IGluIGtub3duIHBhcnRzIG9mIHRoZSBkb21DbGFzcyBkYXRhc3RydWN0dXJlIG5vdy4uLgotICAg
ICRkYXRhTm9kZS0+bmFtZSgkaW50ZXJmYWNlTmFtZSk7Ci0gICAgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4dGVuZGVkQXR0
cmlidXRlcykpOwotCi0gICAgIyBJbmhlcml0YW5jZSBkZXRlY3Rpb24KLSAgICBteSBAaW50ZXJm
YWNlUGFyZW50cyA9IHNwbGl0KC8sLywgJGludGVyZmFjZUJhc2UpOwotICAgIGZvcmVhY2goQGlu
dGVyZmFjZVBhcmVudHMpIHsKLSAgICAgIG15ICRsaW5lID0gJF87Ci0gICAgICAkbGluZSA9fiBz
L1xzKi8vZzsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6Z2V0dGVy
UmFpc2VzU2VsZWN0b3IvOworICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJFeGNlcHRpb24gPSAo
ZGVmaW5lZCgkMSkgPyAkMSA6ICIiKTsKIAotICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2Rl
LT5wYXJlbnRzOwotICAgICAgcHVzaChAJGFycmF5UmVmLCAkbGluZSk7Ci0gICAgfQorICAgICAg
ICAgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpzZXR0ZXJSYWlzZXNTZWxlY3Rvci87
CisgICAgICAgICAgICAgICAgbXkgJHNldHRlckV4Y2VwdGlvbiA9IChkZWZpbmVkKCQxKSA/ICQx
IDogIiIpOwogCi0gICAgJGludGVyZmFjZURhdGEgPX4gcy9bXG5ccl0vL2c7Ci0gICAgbXkgQGlu
dGVyZmFjZU1ldGhvZHMgPSBzcGxpdCgvOy8sICRpbnRlcmZhY2VEYXRhKTsKKyAgICAgICAgICAg
ICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tQXR0cmlidXRlKCk7CisgICAgICAgICAgICAg
ICAgJG5ld0RhdGFOb2RlLT50eXBlKCRhdHRyaWJ1dGVUeXBlKTsKKyAgICAgICAgICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwogCi0gICAgZm9yZWFj
aChAaW50ZXJmYWNlTWV0aG9kcykgewotICAgICAgbXkgJGxpbmUgPSAkXzsKKyAgICAgICAgICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkYXR0cmlidXRlRGF0YU5hbWUpOwor
ICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRhdHRyaWJ1dGVE
YXRhVHlwZSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmlidXRlcygkYXR0cmlidXRlRXh0ZW5kZWRB
dHRyaWJ1dGVzKSk7CiAKLSAgICAgIGlmKCRsaW5lID1+IC9hdHRyaWJ1dGUvKSB7Ci0gICAgICAg
ICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VBdHRyaWJ1dGVTZWxlY3Rvci87Cisg
ICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5hdHRyaWJ1dGVzOworICAg
ICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKIAotICAgICAgICBt
eSAkYXR0cmlidXRlVHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRhdHRyaWJ1dGVFeHRlbmRlZEF0
dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMikgPyAkMiA6ICIgIik7IGNob3AoJGF0dHJpYnV0ZUV4dGVu
ZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIAotICAgICAgICBteSAkYXR0cmlidXRlRGF0YVR5cGUg
PSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOwotICAgICAgICBteSAkYXR0cmlidXRlRGF0YU5hbWUgPSAoZGVmaW5lZCgkNCkgPyAk
NCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICAg
IAotICAgICAgICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdl
eHAgbWF0Y2hpbmcKLSAgICAgICAgCi0gICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpn
ZXR0ZXJSYWlzZXNTZWxlY3Rvci87Ci0gICAgICAgIG15ICRnZXR0ZXJFeGNlcHRpb24gPSAoZGVm
aW5lZCgkMSkgPyAkMSA6ICIiKTsKLSAgICAgIAotICAgICAgICAkbGluZSA9fiAvJElETFN0cnVj
dHVyZTo6c2V0dGVyUmFpc2VzU2VsZWN0b3IvOwotICAgICAgICBteSAkc2V0dGVyRXhjZXB0aW9u
ID0gKGRlZmluZWQoJDEpID8gJDEgOiAiIik7Ci0gICAgICAKLSAgICAgICAgbXkgJG5ld0RhdGFO
b2RlID0gbmV3IGRvbUF0dHJpYnV0ZSgpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnR5cGUoJGF0
dHJpYnV0ZVR5cGUpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2ln
bmF0dXJlKCkpOworICAgICAgICAgICAgICAgIHByaW50ICIgIHwgIHw+ICBBdHRyaWJ1dGU7IFRZ
UEUgXCIkYXR0cmlidXRlVHlwZVwiIERBVEEgTkFNRSBcIiRhdHRyaWJ1dGVEYXRhTmFtZVwiIERB
VEEgVFlQRSBcIiRhdHRyaWJ1dGVEYXRhVHlwZVwiIEdFVCBFWENFUFRJT04/IFwiJGdldHRlckV4
Y2VwdGlvblwiIFNFVCBFWENFUFRJT04/IFwiJHNldHRlckV4Y2VwdGlvblwiIiAuCisgICAgICAg
ICAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAg
ICAiLCAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIg
dW5sZXNzICRiZVF1aWV0OwogCi0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1l
KCRhdHRyaWJ1dGVEYXRhTmFtZSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50
eXBlKCRhdHRyaWJ1dGVEYXRhVHlwZSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGF0dHJpYnV0ZUV4
dGVuZGVkQXR0cmlidXRlcykpOworICAgICAgICAgICAgICAgICRnZXR0ZXJFeGNlcHRpb24gPX4g
cy9ccysvL2c7CisgICAgICAgICAgICAgICAgJHNldHRlckV4Y2VwdGlvbiA9fiBzL1xzKy8vZzsK
KyAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+Z2V0dGVyRXhjZXB0aW9uc30gPSBzcGxp
dCgvLC8sICRnZXR0ZXJFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIEB7JG5ld0RhdGFOb2Rl
LT5zZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywgJHNldHRlckV4Y2VwdGlvbik7CisgICAg
ICAgICAgICB9IGVsc2lmICgoJGxpbmUgIX4gcy9eXHMqJC8vZykgYW5kICgkbGluZSAhfiAvXlxz
K2NvbnN0LykpIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50
ZXJmYWNlTWV0aG9kU2VsZWN0b3IvIG9yIGRpZSAiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRs
aW5lXG4pIjsKIAotICAgICAgICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPmF0dHJpYnV0ZXM7
Ci0gICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKKyAgICAgICAgICAgICAg
ICBteSAkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8gJDEgOiAiICIp
OyBjaG9wKCRtZXRob2RFeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAgICAgICAgIG15ICRt
ZXRob2RUeXBlID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kbGluZVxuKSIpKTsKKyAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFtZSA9IChkZWZp
bmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7
CisgICAgICAgICAgICAgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IChkZWZpbmVkKCQ0KSA/ICQ0
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAKLSAgICAgICAg
cHJpbnQgIiAgfCAgfD4gIEF0dHJpYnV0ZTsgVFlQRSBcIiRhdHRyaWJ1dGVUeXBlXCIgREFUQSBO
QU1FIFwiJGF0dHJpYnV0ZURhdGFOYW1lXCIgREFUQSBUWVBFIFwiJGF0dHJpYnV0ZURhdGFUeXBl
XCIgR0VUIEVYQ0VQVElPTj8gXCIkZ2V0dGVyRXhjZXB0aW9uXCIgU0VUIEVYQ0VQVElPTj8gXCIk
c2V0dGVyRXhjZXB0aW9uXCIiIC4KLSAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRl
cygiXG4gIHwgICAgICAgICAgICAgICAgICIsICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiBpZighJGJlUXVpZXQpOworICAgICAgICAgICAgICAgICgn
JyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBtYXRjaGluZwog
Ci0gICAgICAgICRnZXR0ZXJFeGNlcHRpb24gPX4gcy9ccysvL2c7Ci0gICAgICAgICRzZXR0ZXJF
eGNlcHRpb24gPX4gcy9ccysvL2c7Ci0gICAgICAgIEB7JG5ld0RhdGFOb2RlLT5nZXR0ZXJFeGNl
cHRpb25zfSA9IHNwbGl0KC8sLywgJGdldHRlckV4Y2VwdGlvbik7Ci0gICAgICAgIEB7JG5ld0Rh
dGFOb2RlLT5zZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywgJHNldHRlckV4Y2VwdGlvbik7
Ci0gICAgICB9IGVsc2lmKCgkbGluZSAhfiBzL15ccyokLy9nKSBhbmQgKCRsaW5lICF+IC9eXHMr
Y29uc3QvKSkgewotICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlTWV0
aG9kU2VsZWN0b3IvIG9yIGRpZSAiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIjsK
LQotICAgICAgICBteSAkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8g
JDEgOiAiICIpOyBjaG9wKCRtZXRob2RFeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAgICBteSAk
bWV0aG9kVHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291
cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRtZXRob2ROYW1lID0gKGRlZmluZWQoJDMp
ID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAg
ICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5n
IGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIAotICAgICAgICAoJycgPX4g
L14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hpbmcKLSAgICAg
ICAgCi0gICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpyYWlzZXNTZWxlY3Rvci87Ci0g
ICAgICAgIG15ICRtZXRob2RFeGNlcHRpb24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIiKTsKKyAg
ICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6cmFpc2VzU2VsZWN0b3IvOwor
ICAgICAgICAgICAgICAgIG15ICRtZXRob2RFeGNlcHRpb24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6
ICIiKTsKIAotICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24oKTsKIAotICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwotICAgICAg
ICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkbWV0aG9kTmFtZSk7Ci0gICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRtZXRob2RUeXBlKTsKLSAgICAgICAgJG5ld0Rh
dGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmli
dXRlcygkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Ci0KLSAgICAgICAgcHJpbnQgIiAgfCAg
fC0gIE1ldGhvZDsgVFlQRSBcIiRtZXRob2RUeXBlXCIgTkFNRSBcIiRtZXRob2ROYW1lXCIgRVhD
RVBUSU9OPyBcIiRtZXRob2RFeGNlcHRpb25cIiIgLgotICAgICAgICAgIGR1bXBFeHRlbmRlZEF0
dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAiLCAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIgaWYoISRiZVF1aWV0KTsKLQotICAgICAgICAkbWV0
aG9kRXhjZXB0aW9uID1+IHMvXHMrLy9nOwotICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2Vz
RXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwotCi0gICAgICAgIG15
IEBwYXJhbXMgPSBzcGxpdCgvLC8sICRtZXRob2RTaWduYXR1cmUpOwotICAgICAgICBmb3JlYWNo
KEBwYXJhbXMpIHsKLSAgICAgICAgICBteSAkbGluZSA9ICRfOwotCi0gICAgICAgICAgJGxpbmUg
PX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKLSAgICAgICAg
ICBteSAkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIgIik7
IGNob3AoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAgICBteSAkcGFyYW1UeXBl
ID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGlu
ZVxuKSIpKTsKLSAgICAgICAgICBteSAkcGFyYW1OYW1lID0gKGRlZmluZWQoJDMpID8gJDMgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLQotICAgICAgICAgIG15
ICRwYXJhbURhdGFOb2RlID0gbmV3IGRvbVNpZ25hdHVyZSgpOwotICAgICAgICAgICRwYXJhbURh
dGFOb2RlLT5uYW1lKCRwYXJhbU5hbWUpOwotICAgICAgICAgICRwYXJhbURhdGFOb2RlLT50eXBl
KCRwYXJhbVR5cGUpOwotICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Cisg
ICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgp
KTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkbWV0aG9k
TmFtZSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJG1l
dGhvZFR5cGUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJG1ldGhvZEV4dGVuZGVkQXR0
cmlidXRlcykpOwogCi0gICAgICAgICAgbXkgJGFycmF5UmVmID0gJG5ld0RhdGFOb2RlLT5wYXJh
bWV0ZXJzOwotICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJHBhcmFtRGF0YU5vZGUpOworICAg
ICAgICAgICAgICAgIHByaW50ICIgIHwgIHwtICBNZXRob2Q7IFRZUEUgXCIkbWV0aG9kVHlwZVwi
IE5BTUUgXCIkbWV0aG9kTmFtZVwiIEVYQ0VQVElPTj8gXCIkbWV0aG9kRXhjZXB0aW9uXCIiIC4K
KyAgICAgICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAg
ICAgICAgICIsICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4g
IlxuIiB1bmxlc3MgJGJlUXVpZXQ7CiAKLSAgICAgICAgICBwcmludCAiICB8ICAgfD4gIFBhcmFt
OyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIiIC4gCi0gICAgICAgICAg
ICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIGlmKCEkYmVRdWlldCk7ICAgICAgICAg
IAotICAgICAgICB9CisgICAgICAgICAgICAgICAgJG1ldGhvZEV4Y2VwdGlvbiA9fiBzL1xzKy8v
ZzsKKyAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0aW9uc30gPSBz
cGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwogCi0gICAgICAgIG15ICRhcnJheVJlZiA9ICRk
YXRhTm9kZS0+ZnVuY3Rpb25zOwotICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRuZXdEYXRhTm9k
ZSk7Ci0gICAgICB9IGVsc2lmKCRsaW5lID1+IC9eXHMrY29uc3QvKSB7Ci0gICAgICAgICRsaW5l
ID1+IC8kSURMU3RydWN0dXJlOjpjb25zdGFudFNlbGVjdG9yLzsKLSAgICAgICAgbXkgJGNvbnN0
VHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxu
JGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRjb25zdE5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6
IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICBteSAk
Y29uc3RWYWx1ZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291
cmNlOlxuJGxpbmVcbikiKSk7Ci0KLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUNv
bnN0YW50KCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgkY29uc3ROYW1lKTsKLSAgICAg
ICAgJG5ld0RhdGFOb2RlLT50eXBlKCRjb25zdFR5cGUpOwotICAgICAgICAkbmV3RGF0YU5vZGUt
PnZhbHVlKCRjb25zdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBteSBAcGFyYW1zID0gc3BsaXQo
LywvLCAkbWV0aG9kU2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoKEBwYXJhbXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsKIAotICAgICAgICBteSAkYXJy
YXlSZWYgPSAkZGF0YU5vZGUtPmNvbnN0YW50czsKLSAgICAgICAgcHVzaChAJGFycmF5UmVmLCAk
bmV3RGF0YU5vZGUpOworICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVy
ZTo6aW50ZXJmYWNlUGFyYW1ldGVyU2VsZWN0b3IvOworICAgICAgICAgICAgICAgICAgICBteSAk
cGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIgIik7IGNob3Ao
JHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFt
VHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxu
JGxpbmVcbikiKSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAoZGVmaW5l
ZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwog
Ci0gICAgICAgIHByaW50ICIgIHwgICB8PiAgQ29uc3RhbnQ7IFRZUEUgXCIkY29uc3RUeXBlXCIg
TkFNRSBcIiRjb25zdE5hbWVcIiBWQUxVRSBcIiRjb25zdFZhbHVlXCJcbiIgaWYoISRiZVF1aWV0
KTsKLSAgICAgIH0KLSAgICB9CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbURhdGFOb2Rl
ID0gbmV3IGRvbVNpZ25hdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1EYXRhTm9k
ZS0+bmFtZSgkcGFyYW1OYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUt
PnR5cGUoJHBhcmFtVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRB
dHRyaWJ1dGVzKSk7CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJG5ld0Rh
dGFOb2RlLT5wYXJhbWV0ZXJzOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkYXJyYXlSZWYs
ICRwYXJhbURhdGFOb2RlKTsKKworICAgICAgICAgICAgICAgICAgICBwcmludCAiICB8ICAgfD4g
IFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIiIC4gCisgICAg
ICAgICAgICAgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAg
ICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIHVubGVz
cyAkYmVRdWlldDsgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5mdW5jdGlvbnM7CisgICAgICAgICAgICAgICAg
cHVzaChAJGFycmF5UmVmLCAkbmV3RGF0YU5vZGUpOworICAgICAgICAgICAgfSBlbHNpZiAoJGxp
bmUgPX4gL15ccytjb25zdC8pIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVj
dHVyZTo6Y29uc3RhbnRTZWxlY3Rvci87CisgICAgICAgICAgICAgICAgbXkgJGNvbnN0VHlwZSA9
IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVc
bikiKSk7CisgICAgICAgICAgICAgICAgbXkgJGNvbnN0TmFtZSA9IChkZWZpbmVkKCQyKSA/ICQy
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAgICAg
ICAgICAgbXkgJGNvbnN0VmFsdWUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworCisgICAgICAgICAgICAgICAgbXkgJG5ld0Rh
dGFOb2RlID0gbmV3IGRvbUNvbnN0YW50KCk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2Rl
LT5uYW1lKCRjb25zdE5hbWUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgk
Y29uc3RUeXBlKTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnZhbHVlKCRjb25zdFZh
bHVlKTsKIAotICAgIHByaW50ICIgIHwtLS0tPiBJbnRlcmZhY2U7IE5BTUUgXCIkaW50ZXJmYWNl
TmFtZVwiIiAuCi0gICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAg
ICAgICAgICAgICIsICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiB8LVxuIHxc
biIgaWYoISRiZVF1aWV0KTsKLSAgfQorICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRk
YXRhTm9kZS0+Y29uc3RhbnRzOworICAgICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5l
d0RhdGFOb2RlKTsKKworICAgICAgICAgICAgICAgIHByaW50ICIgIHwgICB8PiAgQ29uc3RhbnQ7
IFRZUEUgXCIkY29uc3RUeXBlXCIgTkFNRSBcIiRjb25zdE5hbWVcIiBWQUxVRSBcIiRjb25zdFZh
bHVlXCJcbiIgdW5sZXNzICRiZVF1aWV0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcHJpbnQgIiAgfC0tLS0+IEludGVyZmFjZTsgTkFNRSBcIiRpbnRlcmZhY2VOYW1lXCIi
IC4KKyAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAg
ICAgICAiLCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4gfC1cbiB8XG4iIHVu
bGVzcyAkYmVRdWlldDsKKyAgICB9CiB9CiAKICMgSW50ZXJuYWwgaGVscGVyCiBzdWIgRGV0ZXJt
aW5lUGFyc2VNb2RlCiB7Ci0gIG15ICRvYmplY3QgPSBzaGlmdDsgIAotICBteSAkbGluZSA9IHNo
aWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsgIAorICAgIG15ICRsaW5lID0gc2hpZnQ7CiAK
LSAgbXkgJG1vZGUgPSBNT0RFX1VOREVGOwotICBpZigkXyA9fiAvbW9kdWxlLykgewotICAgICRt
b2RlID0gTU9ERV9NT0RVTEU7Ci0gIH0gZWxzaWYoJF8gPX4gL2ludGVyZmFjZS8pIHsKLSAgICAk
bW9kZSA9IE1PREVfSU5URVJGQUNFOwotICB9IGVsc2lmKCRfID1+IC9leGNlcHRpb24vKSB7Ci0g
ICAgJG1vZGUgPSBNT0RFX0VYQ0VQVElPTjsKLSAgfSBlbHNpZigkXyA9fiAvYWxpYXMvKSB7Ci0g
ICAgJG1vZGUgPSBNT0RFX0FMSUFTOwotICB9CisgICAgbXkgJG1vZGUgPSBNT0RFX1VOREVGOwor
ICAgIGlmICgkXyA9fiAvbW9kdWxlLykgeworICAgICAgICAkbW9kZSA9IE1PREVfTU9EVUxFOwor
ICAgIH0gZWxzaWYgKCRfID1+IC9pbnRlcmZhY2UvKSB7CisgICAgICAgICRtb2RlID0gTU9ERV9J
TlRFUkZBQ0U7CisgICAgfSBlbHNpZiAoJF8gPX4gL2V4Y2VwdGlvbi8pIHsKKyAgICAgICAgJG1v
ZGUgPSBNT0RFX0VYQ0VQVElPTjsKKyAgICB9IGVsc2lmICgkXyA9fiAvYWxpYXMvKSB7CisgICAg
ICAgICRtb2RlID0gTU9ERV9BTElBUzsKKyAgICB9CiAKLSAgcmV0dXJuICRtb2RlOworICAgIHJl
dHVybiAkbW9kZTsKIH0KIAogIyBJbnRlcm5hbCBoZWxwZXIKIHN1YiBQcm9jZXNzU2VjdGlvbgog
ewotICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogICAKLSAg
aWYoJHBhcnNlTW9kZSBlcSBNT0RFX01PRFVMRSkgewotICAgIGRpZSAoIlR3byBtb2R1bGVzIGlu
IG9uZSBmaWxlISBGYXRhbCBlcnJvciFcbiIpIGlmKCRkb2N1bWVudCBuZSAwKTsKLSAgICAkZG9j
dW1lbnQgPSBuZXcgaWRsRG9jdW1lbnQoKTsKLSAgICAkb2JqZWN0LT5QYXJzZU1vZHVsZSgkZG9j
dW1lbnQpOwotICB9IGVsc2lmKCRwYXJzZU1vZGUgZXEgTU9ERV9JTlRFUkZBQ0UpIHsKLSAgICBt
eSAkbm9kZSA9IG5ldyBkb21DbGFzcygpOwotICAgICRvYmplY3QtPlBhcnNlSW50ZXJmYWNlKCRu
b2RlLCAiaW50ZXJmYWNlIik7CisgICAgaWYgKCRwYXJzZU1vZGUgZXEgTU9ERV9NT0RVTEUpIHsK
KyAgICAgICAgZGllICgiVHdvIG1vZHVsZXMgaW4gb25lIGZpbGUhIEZhdGFsIGVycm9yIVxuIikg
aWYgKCRkb2N1bWVudCBuZSAwKTsKKyAgICAgICAgJGRvY3VtZW50ID0gbmV3IGlkbERvY3VtZW50
KCk7CisgICAgICAgICRvYmplY3QtPlBhcnNlTW9kdWxlKCRkb2N1bWVudCk7CisgICAgfSBlbHNp
ZiAoJHBhcnNlTW9kZSBlcSBNT0RFX0lOVEVSRkFDRSkgeworICAgICAgICBteSAkbm9kZSA9IG5l
dyBkb21DbGFzcygpOworICAgICAgICAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkbm9kZSwgImlu
dGVyZmFjZSIpOwogICAgIAotICAgIGRpZSAoIk5vIG1vZHVsZSBzcGVjaWZpZWQhIEZhdGFsIEVy
cm9yIVxuIikgaWYoJGRvY3VtZW50IGVxIDApOwotICAgIG15ICRhcnJheVJlZiA9ICRkb2N1bWVu
dC0+Y2xhc3NlczsKLSAgICBwdXNoKEAkYXJyYXlSZWYsICRub2RlKTsKLSAgfSBlbHNpZigkcGFy
c2VNb2RlIGVxIE1PREVfRVhDRVBUSU9OKSB7Ci0gICAgbXkgJG5vZGUgPSBuZXcgZG9tQ2xhc3Mo
KTsKLSAgICAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkbm9kZSwgImV4Y2VwdGlvbiIpOwotCi0g
ICAgZGllICgiTm8gbW9kdWxlIHNwZWNpZmllZCEgRmF0YWwgRXJyb3IhXG4iKSBpZigkZG9jdW1l
bnQgZXEgMCk7Ci0gICAgbXkgJGFycmF5UmVmID0gJGRvY3VtZW50LT5jbGFzc2VzOwotICAgIHB1
c2goQCRhcnJheVJlZiwgJG5vZGUpOwotICB9IGVsc2lmKCRwYXJzZU1vZGUgZXEgTU9ERV9BTElB
UykgewotICAgIHByaW50ICIgfC0gVHJ5aW5nIHRvIHBhcnNlIGFsaWFzLi4uXG4iIGlmKCEkYmVR
dWlldCk7CisgICAgICAgIGRpZSAoIk5vIG1vZHVsZSBzcGVjaWZpZWQhIEZhdGFsIEVycm9yIVxu
IikgaWYgKCRkb2N1bWVudCBlcSAwKTsKKyAgICAgICAgbXkgJGFycmF5UmVmID0gJGRvY3VtZW50
LT5jbGFzc2VzOworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRub2RlKTsKKyAgICB9IGVsc2lm
KCRwYXJzZU1vZGUgZXEgTU9ERV9FWENFUFRJT04pIHsKKyAgICAgICAgbXkgJG5vZGUgPSBuZXcg
ZG9tQ2xhc3MoKTsKKyAgICAgICAgJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJG5vZGUsICJleGNl
cHRpb24iKTsKKworICAgICAgICBkaWUgKCJObyBtb2R1bGUgc3BlY2lmaWVkISBGYXRhbCBFcnJv
ciFcbiIpIGlmICgkZG9jdW1lbnQgZXEgMCk7CisgICAgICAgIG15ICRhcnJheVJlZiA9ICRkb2N1
bWVudC0+Y2xhc3NlczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbm9kZSk7CisgICAgfSBl
bHNpZigkcGFyc2VNb2RlIGVxIE1PREVfQUxJQVMpIHsKKyAgICAgICAgcHJpbnQgIiB8LSBUcnlp
bmcgdG8gcGFyc2UgYWxpYXMuLi5cbiIgdW5sZXNzICRiZVF1aWV0OwogICAgIAotICAgIG15ICRs
aW5lID0gam9pbigiIiwgQHRlbXBvcmFyeUNvbnRlbnQpOwotICAgICRsaW5lID1+IC8kSURMU3Ry
dWN0dXJlOjphbGlhc1NlbGVjdG9yLzsKKyAgICAgICAgbXkgJGxpbmUgPSBqb2luKCIiLCBAdGVt
cG9yYXJ5Q29udGVudCk7CisgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjphbGlhc1Nl
bGVjdG9yLzsKIAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gKGRlZmluZWQoJDEpID8gJDEgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICBteSAkd3JhcHBl
ck5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpc
biRsaW5lXG4pIikpOworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IChkZWZpbmVkKCQxKSA/
ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAg
IG15ICR3cmFwcGVyTmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAgICAgCi0gICAgcHJpbnQgIiAgfC0tLS0+IEFsaWFz
OyBJTlRFUkZBQ0UgXCIkaW50ZXJmYWNlTmFtZVwiIFdSQVBQRVIgXCIkd3JhcHBlck5hbWVcIlxu
IHwtXG4gfFxuIiBpZighJGJlUXVpZXQpOworICAgICAgICBwcmludCAiICB8LS0tLT4gQWxpYXM7
IElOVEVSRkFDRSBcIiRpbnRlcmZhY2VOYW1lXCIgV1JBUFBFUiBcIiR3cmFwcGVyTmFtZVwiXG4g
fC1cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsKIAotICAgICMgRklYTUU6IENoZWNrIGlmIGFsaWFz
IGlzIGFscmVhZHkgaW4gYWxpYXNlcwotICAgIG15ICRhbGlhc2VzID0gJGRvY3VtZW50LT5hbGlh
c2VzOwotICAgICRhbGlhc2VzLT57JGludGVyZmFjZU5hbWV9ID0gJHdyYXBwZXJOYW1lOwotICB9
CisgICAgICAgICMgRklYTUU6IENoZWNrIGlmIGFsaWFzIGlzIGFscmVhZHkgaW4gYWxpYXNlcwor
ICAgICAgICBteSAkYWxpYXNlcyA9ICRkb2N1bWVudC0+YWxpYXNlczsKKyAgICAgICAgJGFsaWFz
ZXMtPnskaW50ZXJmYWNlTmFtZX0gPSAkd3JhcHBlck5hbWU7CisgICAgfQogCi0gIEB0ZW1wb3Jh
cnlDb250ZW50ID0gIiI7CisgICAgQHRlbXBvcmFyeUNvbnRlbnQgPSAiIjsKIH0KIAogMTsKLQpJ
bmRleDogV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9k
ZS5pZGwJKHJldmlzaW9uIDE2NDE1KQorKysgV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCw2ICsxMTAsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBET01Vc2Vy
RGF0YSAgICAgICAgZ2V0VXNlckRhdGEoaW4gRE9NU3RyaW5nIGtleSk7CiAjZW5kaWYgLyogIWRl
ZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICovCiAjZW5kaWYgLyogIWRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgKi8KKworI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCisg
ICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbnMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gICAgICAgICBpc0NvbnRlbnRFZGl0YWJsZTsKKyNlbmRpZiAvKiBkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSAqLwogICAgIH07CiAKIH0KSW5kZXg6IFdlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MTUpCisr
KyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYt
MDktMTcgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBmb3IgaHR0cDovL2J1Z3pp
bGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwMworICAgICAgICBZZXQgQW5v
dGhlciBPYmplY3RpdmUtQyBCaW5kaW5ncyBQYXRjaAorCisgICAgICAgICogTWlncmF0ZUhlYWRl
cnMubWFrZToKKwogMjAwNi0wOS0xNiAgQnJhZHkgRWlkc29uIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dApJbmRleDogV2ViS2l0L01pZ3JhdGVIZWFkZXJz
Lm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pZ3JhdGVIZWFkZXJzLm1ha2UJKHJldmlzaW9u
IDE2NDE1KQorKysgV2ViS2l0L01pZ3JhdGVIZWFkZXJzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAgUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoVEFSR0VUX0JVSUxEX0RJUgog
LlBIT05ZIDogYWxsCiBhbGwgOiBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTS5oIFwK
KyAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NQWJzdHJhY3RWaWV3LmggXAogICAgICQoUFVC
TElDX0hFQURFUlNfRElSKS9ET01BdHRyLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9E
T01DREFUQVNlY3Rpb24uaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUNTUy5oIFwK
QEAgLTY0LDkgKzY1LDExIEBAIGFsbCA6IFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9N
RW50aXR5LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01FbnRpdHlSZWZlcmVuY2Uu
aCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUV2ZW50LmggXAorICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01FdmVudEV4Y2VwdGlvbi5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJT
X0RJUikvRE9NRXZlbnRMaXN0ZW5lci5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9N
RXZlbnRUYXJnZXQuaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUV2ZW50cy5oIFwK
KyAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NRXhjZXB0aW9uLmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01FeHRlbnNpb25zLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElS
KS9ET01IVE1MLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01IVE1MQW5jaG9yRWxl
bWVudC5oIFwKQEAgLTE2MCw2ICsxNjMsNyBAQCBhbGwgOiBcCiAgICAgJChQUklWQVRFX0hFQURF
UlNfRElSKS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25Qcml2YXRlLmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01SR0JDb2xvci5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikv
RE9NUmFuZ2UuaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVJhbmdlRXhjZXB0aW9u
LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01SZWN0LmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01TdHlsZVNoZWV0LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElS
KS9ET01TdHlsZVNoZWV0TGlzdC5oIFwKQEAgLTE3Myw2ICsxNzcsNyBAQCBhbGwgOiBcCiAgICAg
JChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVdoZWVsRXZlbnQuaCBcCiAgICAgJChQUklWQVRFX0hF
QURFUlNfRElSKS9ET01XaGVlbEV2ZW50UHJpdmF0ZS5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJT
X0RJUikvRE9NWFBhdGguaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVhQYXRoRXhj
ZXB0aW9uLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01YUGF0aEV4cHJlc3Npb24u
aCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVhQYXRoTlNSZXNvbHZlci5oIFwKICAg
ICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NWFBhdGhSZXN1bHQuaCBcCg==
</data>
<flag name="review"
          id="3462"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10633</attachid>
            <date>2006-09-18 12:58:04 -0700</date>
            <delta_ts>2006-09-18 14:17:37 -0700</delta_ts>
            <desc>patch with all of Tim&apos;s comments addressed</desc>
            <filename>YAOCB3.diff</filename>
            <type>text/plain</type>
            <size>108970</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjQzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMwIEBACisyMDA2LTA5LTE4ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5MDMKKyAgICAgICAgWWV0IEFub3RoZXIgT2JqZWN0aXZlLUMgQmluZGluZ3MgUGF0Y2gKKwor
ICAgICAgICAtIFdoaXRlc3BhY2UgY2xlYW51cCBmb3IgSURMUGFyc2VyLnBtCisKKyAgICAgICAg
LSBTcGxpdCBET01FeGNlcHRpb24sIERPTVJhbmdlRXhjZXB0aW9uLCBET01YUGF0aEV4Y2VwdGlv
biwgRE9NRXZlbnRzRXhjZXB0aW9uCisgICAgICAgICAgYW5kIERPTUFic3RyYWN0VmlldyBpbnRv
IHRoZWlyIG93biBmaWxlcy4KKworICAgICAgICAtIFJlbW92ZSBwcml2YXRlIG1ldGhvZCBbRE9N
UkdCQ29sb3IgX2NvbG9yXSBmcm9tIERPTVByaXZhdGUuaCBhcworICAgICAgICAgIGl0IGlzIG5v
dCB1c2VkIGFuZCBhIHB1YmxpYyBtZXRob2QgaXMgYXZhaWxhYmxlIG5vdy4KKworICAgICAgICAt
IFJlbW92ZSBpbnRlcm5hbCBtZXRob2QgW0RPTURvY3VtZW50IF9vd25lckVsZW1lbnRdIGZyb20g
RE9NSW50ZXJuYWwuaAorICAgICAgICAgIGFzIGl0IG5vdCB1c2VkLgorCisgICAgICAgIC0gQXV0
by1nZW5lcmF0ZSBtZXRob2QgaXNDb250ZW50RWRpdGFibGUgZm9yIERPTU5vZGUuCisKKyAgICAg
ICAgLSBHZW5lcmFsIGNsZWFudXAgb2YgYmluZGluZ3MgY29kZSBpbmNsdWRpbmcgcmVtb3Zpbmcg
dW5uZWVkZWQgI2ltcG9ydHMKKyAgICAgICAgICBhbmQgd2hpdGVzcGFjZSBjbGVhbnVwCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChhZGRFbGVtZW50Q2xhc3MpOgorICAgICAgICAo
ZWxlbWVudENsYXNzKToKKyAgICAgICAgKC1bRE9NTm9kZSBfaW5pdFdpdGhOb2RlOldlYkNvcmU6
Ol0pOgorICAgICAgICAoK1tET01Ob2RlIF9ub2RlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAg
KC1bRE9NTm9kZSBXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBLSlM6OkJpbmRpbmdz
OjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBhZGRFdmVudExpc3RlbmVyOjo6XSk6CisgICAgICAg
ICgtW0RPTU5vZGUgcmVtb3ZlRXZlbnRMaXN0ZW5lcjo6Ol0pOgorICAgICAgICAoLVtET01Ob2Rl
IGRpc3BhdGNoRXZlbnQ6XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgaW1hZ2VdKToKKyAgICAg
ICAgKC1bRE9NRWxlbWVudCBfZm9udF0pOgorICAgICAgICAoLVtET01FbGVtZW50IF9pbWFnZVRJ
RkZSZXByZXNlbnRhdGlvbl0pOgorICAgICAgICAoLVtET01FbGVtZW50IF9nZXRVUkxBdHRyaWJ1
dGU6XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX05QT2JqZWN0XSk6CisgICAgICAgICgtW0RP
TUVsZW1lbnQgaXNGb2N1c2VkXSk6CisgICAgICAgICgtW0RPTVJhbmdlIGRlYWxsb2NdKToKKyAg
ICAgICAgKC1bRE9NUmFuZ2UgZmluYWxpemVdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZGVzY3Jp
cHRpb25dKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ugc3RhcnRDb250YWluZXJdKToKKyAgICAgICAg
KC1bRE9NUmFuZ2Ugc3RhcnRPZmZzZXRdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZW5kQ29udGFp
bmVyXSk6CisgICAgICAgICgtW0RPTVJhbmdlIGVuZE9mZnNldF0pOgorICAgICAgICAoLVtET01S
YW5nZSBjb2xsYXBzZWRdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgY29tbW9uQW5jZXN0b3JDb250
YWluZXJdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ugc2V0U3RhcnQ6Ol0pOgorICAgICAgICAoLVtE
T01SYW5nZSBzZXRFbmQ6Ol0pOgorICAgICAgICAoLVtET01SYW5nZSBzZXRTdGFydEJlZm9yZTpd
KToKKyAgICAgICAgKC1bRE9NUmFuZ2Ugc2V0U3RhcnRBZnRlcjpdKToKKyAgICAgICAgKC1bRE9N
UmFuZ2Ugc2V0RW5kQmVmb3JlOl0pOgorICAgICAgICAoLVtET01SYW5nZSBzZXRFbmRBZnRlcjpd
KToKKyAgICAgICAgKC1bRE9NUmFuZ2UgY29sbGFwc2U6XSk6CisgICAgICAgICgtW0RPTVJhbmdl
IHNlbGVjdE5vZGU6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHNlbGVjdE5vZGVDb250ZW50czpd
KToKKyAgICAgICAgKC1bRE9NUmFuZ2UgY29tcGFyZUJvdW5kYXJ5UG9pbnRzOjpdKToKKyAgICAg
ICAgKC1bRE9NUmFuZ2UgZGVsZXRlQ29udGVudHNdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZXh0
cmFjdENvbnRlbnRzXSk6CisgICAgICAgICgtW0RPTVJhbmdlIGNsb25lQ29udGVudHNdKToKKyAg
ICAgICAgKC1bRE9NUmFuZ2UgaW5zZXJ0Tm9kZTpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ugc3Vy
cm91bmRDb250ZW50czpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgY2xvbmVSYW5nZV0pOgorICAg
ICAgICAoLVtET01SYW5nZSB0b1N0cmluZ10pOgorICAgICAgICAoLVtET01SYW5nZSBkZXRhY2hd
KToKKyAgICAgICAgKC1bRE9NUmFuZ2UgX2luaXRXaXRoUmFuZ2U6V2ViQ29yZTo6XSk6CisgICAg
ICAgICgrW0RPTVJhbmdlIF9yYW5nZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTVJh
bmdlIFdlYkNvcmU6Ol0pOgorICAgICAgICAoLVtET01Ob2RlRmlsdGVyIF9pbml0V2l0aE5vZGVG
aWx0ZXI6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTU5vZGVGaWx0ZXIgX25vZGVGaWx0ZXJX
aXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtET01Ob2RlRmlsdGVyIFdlYkNvcmU6Ol0pOgor
ICAgICAgICAoLVtET01Ob2RlRmlsdGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bRE9NTm9kZUZp
bHRlciBmaW5hbGl6ZV0pOgorICAgICAgICAoLVtET01Ob2RlSXRlcmF0b3IgX2luaXRXaXRoTm9k
ZUl0ZXJhdG9yOldlYkNvcmU6OmZpbHRlcjpdKToKKyAgICAgICAgKC1bRE9NTm9kZUl0ZXJhdG9y
IFdlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01Ob2RlSXRlcmF0b3IgX25vZGVJdGVyYXRvcldp
dGg6V2ViQ29yZTo6ZmlsdGVyOl0pOgorICAgICAgICAoLVtET01UcmVlV2Fsa2VyIF9pbml0V2l0
aFRyZWVXYWxrZXI6V2ViQ29yZTo6ZmlsdGVyOl0pOgorICAgICAgICAoLVtET01UcmVlV2Fsa2Vy
IFdlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01UcmVlV2Fsa2VyIF90cmVlV2Fsa2VyV2l0aDpX
ZWJDb3JlOjpmaWx0ZXI6XSk6CisgICAgICAgIChPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNj
ZXB0Tm9kZSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGNyZWF0ZU5vZGVJdGVyYXRvcjo6Ojpd
KToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlVHJlZVdhbGtlcjo6OjpdKToKKyAgICAg
ICAgKE9iakNFdmVudExpc3RlbmVyOjpmaW5kKToKKyAgICAgICAgKE9iakNFdmVudExpc3RlbmVy
OjpjcmVhdGUpOgorICAgICAgICAoT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5oOiBBZGRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbTogQWRkZWQuCisgICAgICAgICgtW0RP
TUFic3RyYWN0VmlldyBkb2N1bWVudF0pOgorICAgICAgICAoLVtET01BYnN0cmFjdFZpZXcgV2Vi
Q29yZTo6XSk6CisgICAgICAgICgtW0RPTUFic3RyYWN0VmlldyBfaW5pdFdpdGhBYnN0cmFjdFZp
ZXc6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUFic3RyYWN0VmlldyBfYWJzdHJhY3RWaWV3
V2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNTUy5tbToKKyAg
ICAgICAgKC1bRE9NU3R5bGVTaGVldCBfaW5pdFdpdGhTdHlsZVNoZWV0OldlYkNvcmU6Ol0pOgor
ICAgICAgICAoK1tET01TdHlsZVNoZWV0IF9zdHlsZVNoZWV0V2l0aDpXZWJDb3JlOjpdKToKKyAg
ICAgICAgKCtbRE9NQ1NTU3R5bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6V2ViQ29yZTo6XSk6
CisgICAgICAgICgtW0RPTUNTU1J1bGUgX2luaXRXaXRoUnVsZTpXZWJDb3JlOjpdKToKKyAgICAg
ICAgKCtbRE9NQ1NTUnVsZSBfQ1NTUnVsZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RP
TUNTU1ZhbHVlIF9pbml0V2l0aFZhbHVlOldlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01DU1NW
YWx1ZSBfQ1NTVmFsdWVXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01DU1NQcmltaXRp
dmVWYWx1ZSBfQ1NTUHJpbWl0aXZlVmFsdWVXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtE
T01Eb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQg
Z2V0TWF0Y2hlZENTU1J1bGVzOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNvcmUu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50RXhjZXB0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRzLmg6CisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9ET01FdmVudHMubW06CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FeGNlcHRpb24u
aDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tOgorICAgICAgICAo
LVtET01IVE1MRG9jdW1lbnQgX2NyZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5n
OmJhc2VVUkxTdHJpbmc6XSk6CisgICAgICAgICh2aWV3Rm9yRWxlbWVudCk6CisgICAgICAgICgt
W0RPTUhUTUxJbnB1dEVsZW1lbnQgX3JlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTp3aXRoU3RyaW5n
OnNlbGVjdGluZ0Zyb21JbmRleDpdKToKKyAgICAgICAgKC1bRE9NSFRNTElucHV0RWxlbWVudCBf
c2VsZWN0ZWRSYW5nZV0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRFbGVtZW50IF9zZXRBdXRv
ZmlsbGVkOl0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMv
RE9NUHJpdmF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2UuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9vYmpjL0RPTVJhbmdlRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NVmlld3MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVZp
ZXdzLm1tOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NWFBhdGguaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAqIGRvbS9Ob2RlLmlk
bDoKKwogMjAwNi0wOS0xOCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IGZvciBidWcgMzk2OSwgaHIgd2lkdGggZG9lc24ndCB1cGRhdGUgd2hlbiBpdCBjbGVh
cnMgYSBmbG9hdC4gIFRoaXMKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNjQzNCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTYsNiArNDU2LDEwIEBACiAJCTg1
MThEQ0VBMEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThEQ0U4MEE5Q0M4MEQw
MDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSAqLzsgfTsKIAkJODUxOERENzgwQTlD
RjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERENzYwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5h
bWVkTm9kZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTg1
MThERDc5MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTE4REQ3NzBBOUNGMzFCMDA5MUI3
QTYgLyogRE9NTmFtZWROb2RlTWFwLm1tICovOyB9OworCQk4NTFFRTgwQzBBQkNBMjhGMDBBNkFB
MzMgLyogRE9NQWJzdHJhY3RWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTFFRTgwQTBBQkNBMjhGMDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUx
RUU4MEQwQUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MUVFODBCMEFCQ0EyOEYwMEE2QUEz
MyAvKiBET01BYnN0cmFjdFZpZXcubW0gKi87IH07CisJCTg1MUVFODExMEFCQ0EzOTYwMEE2QUEz
MyAvKiBET01FdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODUxRUU4MTAwQUJDQTM5NjAwQTZBQTMzIC8qIERPTUV2ZW50RXhjZXB0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODUxRUU4MjEwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTFFRTgyMDBBQkNBNTgxMDBB
NkFBMzMgLyogRE9NUmFuZ2VFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NTIxN0UwMjBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1w
b3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NTIxN0UwMDBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5jcHAgKi87IH07CiAJ
CTg1MjE3RTAzMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTIxN0UwMTBBNUVDRDQ3MDBEQjhE
MDAgLyogWFNMSW1wb3J0UnVsZS5oICovOyB9OwogCQk4NTJCOUU4NzBBQTc5QzQ3MDAyQURBNkUg
LyogRE9NSFRNTEFwcGxldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1MkI5RTgzMEFBNzlDNDcwMDJBREE2RSAvKiBET01IVE1MQXBwbGV0
RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC01MDEsNiArNTA1LDcgQEAKIAkJODU3RTBCMkMwQUIwNDNGQzAwMzZFNDQ3IC8qIERPTU1v
dXNlRXZlbnRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTdFMEIyQjBBQjA0M0ZDMDAzNkU0NDcgLyogRE9NTW91c2VFdmVudFByaXZhdGUu
aCAqLzsgfTsKIAkJODU3RTBCMzEwQUIwNDQ3ODAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQuaCBp
biBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU3RTBCMjMw
QUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQuaCAqLzsgfTsKIAkJODU3RTBCMzIwQUIw
NDQ3ODAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnRQcml2YXRlLmggaW4gQ29weUZpbGVzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1N0UwQjJCMEFCMDQzRkMwMDM2RTQ0NyAv
KiBET01Nb3VzZUV2ZW50UHJpdmF0ZS5oICovOyB9OworCQk4NTgwMTVDRTBBQkNBNzVEMDA4MDU4
OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1ODAxNUNEMEFCQ0E3NUQwMDgwNTg4RCAvKiBET01YUGF0aEV4Y2Vw
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg1OEMzODFDMEFBOEUyOTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU4QzM4MUEwQUE4RTI5NjAwQjE4N0E0
IC8qIERPTUNTU1ZhbHVlLmggKi87IH07CiAJCTg1OEMzODFEMEFBOEUyOTYwMEIxODdBNCAvKiBE
T01DU1NWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1OEMzODFCMEFBOEUyOTYwMEIxODdBNCAvKiBET01DU1NWYWx1ZS5tbSAqLzsgfTsKIAkJ
ODU4QzM4MkMwQUE4RTQwNTAwQjE4N0E0IC8qIERPTUNTU1ByaW1pdGl2ZVZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NThDMzgyQTBBQThFNDA1
MDBCMTg3QTQgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaCAqLzsgfTsKQEAgLTU4OSw2ICs1OTQs
NyBAQAogCQk4NUJBNEQyRTBBQTY4ODlGMDA4ODA1MkQgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5o
IGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUJBNEQw
OTBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5oICovOyB9OwogCQk4NUJD
QkMxMzBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUJDQkMxMTBBQkJBODdEMDAzODExNjAg
LyogRE9NSFRNTERvY3VtZW50LmggKi87IH07CiAJCTg1QkNCQzE0MEFCQkE4N0QwMDM4MTE2MCAv
KiBET01IVE1MRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUJDQkMxMjBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3VtZW50Lm1t
ICovOyB9OworCQk4NUM3OEE2ODBBQkRFMUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM3OEE2NzBBQkRF
MUI0MDA0NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODVDN0YzRTYwQUFGNUQ1RTAwNDAxNEREIC8qIERPTUV2
ZW50LmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
QUZBODIwMEFBRjUyOEEwMEU4NDMwNSAvKiBET01FdmVudC5oICovOyB9OwogCQk4NUM3RjQ0NzBB
QUY3NkRDMDA0MDE0REQgLyogRE9NRXZlbnRUYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QzdGNDQ1MEFBRjc2REMwMDQwMTRERCAvKiBET01F
dmVudFRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg1QzdGNDkxMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM3RjQ4RjBBQUY3OURDMDA0
MDE0REQgLyogRE9NVUlFdmVudC5oICovOyB9OwpAQCAtMTk3MCw3ICsxOTc2LDYgQEAKIAkJQkMx
QTM3QkUwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTgwOTdDNzE1RjAwMTlGM0Q4IC8q
IERPTVRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDMUEzN0JGMDk3QzcxNUYwMDE5RjNEOCAvKiBET01VdGlsaXR5Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTkwOTdDNzE1
RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi87IH07CiAJCUJDMUEzN0MwMDk3QzcxNUYwMDE5
RjNEOCAvKiBET01WaWV3cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkMxQTM3QzEwOTdDNzE1
RjAwMTlGM0Q4IC8qIERPTVZpZXdzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxQTM3QUIwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLm1tICov
OyB9OwogCQlCQzZCN0JBRjA5OTM2MDNDMDA1Mjg2N0IgLyogSW1hZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2QjdCQUUwOTkzNjAzQzAwNTI4
NjdCIC8qIEltYWdlLmNwcCAqLzsgfTsKIAkJQkM2QjdFQ0YwOTk4QUM3RjAwNTI4NjdCIC8qIElt
YWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzZCN0VDRTA5OThBQzdGMDA1Mjg2N0IgLyogSW1hZ2VTb3VyY2UuaCAqLzsgfTsKIAkJQkM2
RDZERDIwOUFGOTA2NjAwRjU5NzU5IC8qIEZvbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDZERDAwOUFGOTA2NjAwRjU5NzU5IC8qIEZvbnQu
Y3BwICovOyB9OwpAQCAtMjE1MiwyMyArMjE1Nyw2IEBACiAJCUZBRTA0MTkwMDk3NTk2QzkwMDA1
NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9hZGVy
LmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAotLyogQmVnaW4gUEJY
QnVpbGRTdHlsZSBzZWN0aW9uICovCi0JCUJDRkFENDVGMEFCRDNBQkEwMEI3NjYzRCAvKiBEZXZl
bG9wbWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRpbmdz
ID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gRGV2ZWxv
cG1lbnQ7Ci0JCX07Ci0JCUJDRkFENDYwMEFCRDNBQkEwMEI3NjYzRCAvKiBEZXBsb3ltZW50ICov
ID0gewotCQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJ
Q09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVwbG95bWVudDsKLQkJ
fTsKLS8qIEVuZCBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KLQogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJBIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKQEAgLTI4MzUsNiArMjgyMywxMCBAQAogCQk4NTE4RENFODBBOUNDODBEMDA5MUI3QTYgLyog
RE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NRE9NSW1wbGVtZW50YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5hbWVkTm9kZU1hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NTE4REQ3NzBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFt
ZWROb2RlTWFwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TU5hbWVkTm9kZU1hcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUxRUU4MEEw
QUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NQWJzdHJhY3RWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1MUVFODBCMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQWJzdHJhY3RWaWV3Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTFFRTgxMDBBQkNBMzk2MDBBNkFBMzMg
LyogRE9NRXZlbnRFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRXZlbnRFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUxRUU4
MjAwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJhbmdlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg1MjE3RTAwMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xJbXBvcnRSdWxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyMTdFMDEwQTVFQ0Q0NzAwREI4RDAw
IC8qIFhTTEltcG9ydFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhT
TEltcG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyQjlFODMwQUE3
OUM0NzAwMkFEQTZFIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MQXBwbGV0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjg3NSw2ICsyODY3LDcgQEAKIAkJODU3RTBCMjMwQUIwNDM0NjAwMzZF
NDQ3IC8qIERPTU1vdXNlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTU1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU3RTBCMjQw
QUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTW91c2VFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODU3RTBCMkIwQUIwNDNGQzAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnRQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Nb3VzZUV2ZW50UHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTgwMTVDRDBBQkNBNzVEMDA4
MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NWFBhdGhFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODU4QzM4MUEwQUE4RTI5NjAwQjE4N0E0IC8qIERPTUNTU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NThDMzgxQjBBQThFMjk2MDBCMTg3QTQgLyogRE9NQ1NTVmFsdWUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ1NTVmFsdWUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1OEMzODJBMEFBOEU0MDUwMEIxODdBNCAvKiBET01D
U1NQcmltaXRpdmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
Q1NTUHJpbWl0aXZlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5NjIs
NiArMjk1NSw3IEBACiAJCTg1QzU2Q0E5MEFBODlFNjYwMEQ5NTc1NSAvKiBDU1NJbXBvcnRSdWxl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTSW1wb3J0UnVsZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1QzU2Q0FDMEFBODlGOEUwMEQ5NTc1NSAvKiBDU1NDaGFy
c2V0UnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0NoYXJzZXRSdWxlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVDNTZDQUQwQUE4OUZFMDAwRDk1NzU1IC8q
IENTU1Vua25vd25SdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVW5rbm93blJ1
bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUM3OEE2NzBBQkRFMUI0MDA0
NEZDMTYgLyogRE9NRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUM3RjQ0NTBB
QUY3NkRDMDA0MDE0REQgLyogRE9NRXZlbnRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUV2ZW50VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg1QzdGNDhGMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01VSUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1QzdGNDkwMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVVJRXZlbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mzc5LDcgKzQzNzMsNiBAQAogCQlCQzFBMzdBODA5
N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMxQTM3QTkwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVXRpbGl0eS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01WaWV3cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzFBMzdBQjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVmlld3MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBB
dG9taWNTdHJpbmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF0b21pY1N0cmluZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJDNUVDMTc2MEE1MDdFM0UwMDYwMDdG
NSAvKiB2aWV3LXNvdXJjZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJ2aWV3LXNvdXJj
ZS5jc3MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZCN0JBRTA5OTM2MDNDMDA1
Mjg2N0IgLyogSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0MTQsOSArNTQwNywy
NyBAQAogCQkJbmFtZSA9IFN0eWxlU2hlZXRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJODUxRUU4MDYwQUJDQTI1MjAwQTZBQTMzIC8qIFZpZXdzICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk4NTFFRTgwQTBBQkNBMjhGMDBBNkFB
MzMgLyogRE9NQWJzdHJhY3RWaWV3LmggKi8sCisJCQkJODUxRUU4MEIwQUJDQTI4RjAwQTZBQTMz
IC8qIERPTUFic3RyYWN0Vmlldy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gVmlld3M7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk4NTFFRTgyMzBBQkNBNThBMDBBNkFBMzMg
LyogUmFuZ2UgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTg1MUVFODIwMEFCQ0E1ODEwMEE2QUEzMyAvKiBET01SYW5nZUV4Y2VwdGlvbi5oICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBSYW5nZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3JlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NUM3OEE2NzBBQkRFMUI0MDA0NEZDMTYgLyogRE9N
RXhjZXB0aW9uLmggKi8sCiAJCQkJODU2QzhBRTIwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVj
dC5oICovLAogCQkJCTg1NkM4QUUzMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gKi8s
CiAJCQkpOwpAQCAtNTQzNSw2ICs1NDQ2LDE0IEBACiAJCQluYW1lID0gVHJhdmVyc2FsOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODU4MDE1Q0MwQUJDQTc0MTAwODA1ODhE
IC8qIFhQYXRoICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk4NTgwMTVDRDBBQkNBNzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCAqLywKKwkJ
CSk7CisJCQluYW1lID0gWFBhdGg7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk4NThDMzk1MTBBQTkwMjRDMDBCMTg3QTQgLyogQ1NTICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTU3MjEsNiArNTc0MCw3IEBACiAJCTg1QzdGNDQzMEFB
Rjc2ODYwMDQwMTRERCAvKiBFdmVudHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTg1MUVFODEwMEFCQ0EzOTYwMEE2QUEzMyAvKiBET01FdmVudEV4Y2Vw
dGlvbi5oICovLAogCQkJCTg1QzdGNDQ1MEFBRjc2REMwMDQwMTRERCAvKiBET01FdmVudFRhcmdl
dC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBFdmVudHM7CkBAIC02NzI0LDcgKzY3NDQsMTAgQEAK
IAkJCQk4NThDMzk1MTBBQTkwMjRDMDBCMTg3QTQgLyogQ1NTICovLAogCQkJCTg1QzdGNDQzMEFB
Rjc2ODYwMDQwMTRERCAvKiBFdmVudHMgKi8sCiAJCQkJODU5OTJGQzIwQUE1REQ0NjAwQUMwNzg1
IC8qIEhUTUwgKi8sCisJCQkJODUxRUU4MjMwQUJDQTU4QTAwQTZBQTMzIC8qIFJhbmdlICovLAog
CQkJCTg1OUZBNUYyMEFCMEJFRTIwMDRGQUVFOSAvKiBUcmF2ZXJzYWwgKi8sCisJCQkJODUxRUU4
MDYwQUJDQTI1MjAwQTZBQTMzIC8qIFZpZXdzICovLAorCQkJCTg1ODAxNUNDMEFCQ0E3NDEwMDgw
NTg4RCAvKiBYUGF0aCAqLywKIAkJCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyogQ29kZUdl
bmVyYXRvck9iakMucG0gKi8sCiAJCQkJMUNEMEI2MjAwQUFCREI1MDAwRDBBM0ZGIC8qIFB1Ymxp
Y0RPTUludGVyZmFjZXMuaCAqLywKIAkJCQlCQzFBMzc5NzA5N0M3MTVGMDAxOUYzRDggLyogRE9N
LmggKi8sCkBAIC02NzQ3LDcgKzY3NzAsNiBAQAogCQkJCUJDMUEzN0E4MDk3QzcxNUYwMDE5RjNE
OCAvKiBET01UcmF2ZXJzYWwuaCAqLywKIAkJCQlCQzFBMzdBOTA5N0M3MTVGMDAxOUYzRDggLyog
RE9NVXRpbGl0eS5tbSAqLywKIAkJCQlCQzFBMzdBQTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmll
d3MuaCAqLywKLQkJCQlCQzFBMzdBQjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3MubW0gKi8s
CiAJCQkJMUExRDEzN0UwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLmggKi8sCiAJCQkJMUEx
RDEzN0YwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLm1tICovLAogCQkJCTFDQUYzNDdFMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLywKQEAgLTg0MDYsNiArODQyOCwx
MSBAQAogCQkJCTg1M0JGNERCMEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTNCRjRFQjBBQkI2RTk3MDA4NjQ3QkIgLyogRE9NTm9kZVByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1QkNCQzEzMEFCQkE4N0QwMDM4MTE2MCAvKiBET01IVE1MRG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MUVFODBDMEFCQ0EyOEYwMEE2QUEzMyAvKiBE
T01BYnN0cmFjdFZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MUVFODExMEFCQ0EzOTYwMEE2
QUEzMyAvKiBET01FdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUxRUU4MjEw
QUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NTgwMTVDRTBBQkNBNzVEMDA4MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg1Qzc4QTY4MEFCREUxQjQwMDQ0RkMxNiAvKiBET01FeGNlcHRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtODQ0MCwxMiArODQ2Nyw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87Ci0JCQli
dWlsZFNldHRpbmdzID0gewotCQkJfTsKLQkJCWJ1aWxkU3R5bGVzID0gKAotCQkJCUJDRkFENDVG
MEFCRDNBQkEwMEI3NjYzRCAvKiBEZXZlbG9wbWVudCAqLywKLQkJCQlCQ0ZBRDQ2MDBBQkQzQUJB
MDBCNzY2M0QgLyogRGVwbG95bWVudCAqLywKLQkJCSk7CiAJCQloYXNTY2FubmVkRm9yRW5jb2Rp
bmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtODc5NSw3ICs4
ODE2LDYgQEAKIAkJCQlCQzFBMzdCNzA5N0M3MTVGMDAxOUYzRDggLyogRE9NSFRNTC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDMUEzN0JBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01JbnRlcm5hbC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0JGMDk3QzcxNUYwMDE5RjNEOCAvKiBET01VdGls
aXR5Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMxQTM3QzEwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ3OEYwOTdDQUFDODAwOTRDOUU0IC8q
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VB
NDc5ODA5N0NBQUM4MDA5NEM5RTQgLyogY3NzaGVscGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRUE0NzlBMDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NwYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC05NDk3LDYgKzk1MTcsNyBAQAogCQkJCUIyMDExMTA3MEFCNzc0MDUwMERCMEU2OCAvKiBK
U1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1M0JGNERDMEFCQjZCNTUwMDg2
NDdCQiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQ0JDMTQwQUJCQTg3RDAw
MzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MUVFODBE
MEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMTY0MzQpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4IEBACiAjaW1wb3J0ICJj
c3NoZWxwZXIuaCIKIAogLy8gRnJvbSBvbGQgRE9NQ29yZS5oCi0jaW1wb3J0ICJET01Ob2RlLmgi
CiAjaW1wb3J0ICJET01PYmplY3QuaCIKKyNpbXBvcnQgIkRPTUV4Y2VwdGlvbi5oIgogCiAvLyBH
ZW5lcmF0ZWQgT2JqZWN0aXZlLUMgQmluZGluZ3MKICNpbXBvcnQgIkRPTUF0dHIuaCIKQEAgLTc5
LDYgKzc5LDcgQEAKICNpbXBvcnQgIkRPTUVudGl0eS5oIgogI2ltcG9ydCAiRE9NRW50aXR5UmVm
ZXJlbmNlLmgiCiAjaW1wb3J0ICJET01OYW1lZE5vZGVNYXAuaCIKKyNpbXBvcnQgIkRPTU5vZGUu
aCIKICNpbXBvcnQgIkRPTU5vZGVMaXN0LmgiCiAjaW1wb3J0ICJET01Ob3RhdGlvbi5oIgogI2lt
cG9ydCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCkBAIC04Niw3ICs4Nyw2IEBACiAKIC8v
IEZyb20gb2xkIERPTUhUTUwuaAogI2ltcG9ydCAiRE9NSFRNTEFwcGxldEVsZW1lbnQuaCIKLSNp
bXBvcnQgIkRPTUhUTUxEb2N1bWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTE9wdGlvbkVsZW1lbnQu
aCIKIAogLy8gR2VuZXJhdGVkIE9iamVjdGl2ZS1DIEJpbmRpbmdzCkBAIC0xMDEsNiArMTAxLDcg
QEAKICNpbXBvcnQgIkRPTUhUTUxETGlzdEVsZW1lbnQuaCIKICNpbXBvcnQgIkRPTUhUTUxEaXJl
Y3RvcnlFbGVtZW50LmgiCiAjaW1wb3J0ICJET01IVE1MRGl2RWxlbWVudC5oIgorI2ltcG9ydCAi
RE9NSFRNTERvY3VtZW50LmgiCiAjaW1wb3J0ICJET01IVE1MRWxlbWVudC5oIgogI2ltcG9ydCAi
RE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2ltcG9ydCAiRE9NSFRNTEZvbnRFbGVtZW50Lmgi
CkBAIC0xNDYsNTEgKzE0NywyNCBAQAogCiAjaW1wb3J0IDxvYmpjL29iamMtY2xhc3MuaD4KIAot
dXNpbmcgV2ViQ29yZTo6QXRvbWljU3RyaW5nOwotdXNpbmcgV2ViQ29yZTo6QXRvbWljU3RyaW5n
SW1wbDsKLXVzaW5nIFdlYkNvcmU6OkF0dHI7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudDsKLXVz
aW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkV2
ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpI
VE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNpbmcgV2ViQ29yZTo6S1VS
TDsKLXVzaW5nIFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDsKLXVzaW5nIFdlYkNvcmU6Ok5vZGU7Ci11
c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlckNvbmRp
dGlvbjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVM
aXN0OwotdXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6OlJhbmdl
OwotdXNpbmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q7Ci11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUcmVlV2Fsa2VyOwot
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogCi1jbGFzcyBPYmpDRXZlbnRM
aXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKK2NsYXNzIE9iakNFdmVudExpc3RlbmVy
IDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBP
YmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotICAgIHN0YXRp
YyBPYmpDRXZlbnRMaXN0ZW5lciAqY3JlYXRlKGlkIDxET01FdmVudExpc3RlbmVyPik7CisgICAg
c3RhdGljIE9iakNFdmVudExpc3RlbmVyKiBmaW5kKGlkIDxET01FdmVudExpc3RlbmVyPik7Cisg
ICAgc3RhdGljIE9iakNFdmVudExpc3RlbmVyKiBjcmVhdGUoaWQgPERPTUV2ZW50TGlzdGVuZXI+
KTsKIAogcHJpdmF0ZToKICAgICBPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5l
cj4pOwogICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVyKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRXZlbnQoRXZlbnQgKiwgYm9vbCBpc1dpbmRvd0V2ZW50KTsKKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqLCBib29sIGlzV2luZG93RXZlbnQpOwog
CiAgICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7CiB9OwogCiB0eXBlZGVmIEhh
c2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJNYXA7Ci10eXBlZGVmIEhhc2hN
YXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7Cit0eXBlZGVmIEhhc2hN
YXA8V2ViQ29yZTo6QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7CiAKIHN0
YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKIHN0YXRpYyBMaXN0ZW5lck1hcCog
bGlzdGVuZXJNYXA7CkBAIC0xOTksNyArMTczLDcgQEAgc3RhdGljIExpc3RlbmVyTWFwKiBsaXN0
ZW5lck1hcDsKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01Ob2Rl
CiAKLXN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcs
IENsYXNzIG9iakNDbGFzcykKK3N0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBXZWJD
b3JlOjpRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykKIHsKICAgICBlbGVtZW50
Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwogfQpAQCAt
Mjc1LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUhUTUxFbGVtZW50Q2xhc3NNYXAoKQog
ICAgIC8vIEZJWE1FOiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0aGUgQVBJIGhhcyBiZWVuIGRldGVy
bWluZWQuCiB9CiAKLXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lKQorc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBXZWJDb3JlOjpBdG9t
aWNTdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgaWYgKCFlbGVtZW50Q2xhc3NNYXApCiAgICAgICAg
IGNyZWF0ZUhUTUxFbGVtZW50Q2xhc3NNYXAoKTsKQEAgLTMwMSwxOCArMjc1LDE4IEBAIHN0YXRp
YyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXA+IiwgW1tzZWxmIGNsYXNzXSBkZXNjcmlw
dGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsXTsKIH0KIAotLSAoaWQpX2luaXRXaXRo
Tm9kZTooTm9kZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aE5vZGU6KFdlYkNvcmU6Ok5vZGUgKilp
bXBsCiB7CiAgICAgQVNTRVJUKGltcGwpOwogCiAgICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50
ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKKyAgICBfaW50ZXJu
YWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwogICAgIGltcGwtPnJlZigp
OwogICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
LSsgKERPTU5vZGUgKilfbm9kZVdpdGg6KE5vZGUgKilpbXBsCisrIChET01Ob2RlICopX25vZGVX
aXRoOihXZWJDb3JlOjpOb2RlICopaW1wbAogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0
dXJuIG5pbDsKQEAgLTMyNCw0OSArMjk4LDQ5IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3Mo
Y29uc3QgQXRvbWljU3QKICAgICAKICAgICBDbGFzcyB3cmFwcGVyQ2xhc3MgPSBuaWw7CiAgICAg
c3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9O
T0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkVMRU1FTlRfTk9ERToKICAgICAgICAg
ICAgIGlmIChpbXBsLT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNs
YXNzID0gZWxlbWVudENsYXNzKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCktPmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBlbGVtZW50Q2xhc3Moc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihpbXBsKS0+bG9jYWxOYW1lKCkpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01FbGVtZW50
IGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVU
RV9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAg
ICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUF0dHIgY2xhc3NdOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6
Ok5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01UZXh0IGNs
YXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJ
T05fTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6
CiAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NQ0RBVEFTZWN0aW9uIGNsYXNzXTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9E
RToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAg
ICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRW50aXR5UmVmZXJlbmNlIGNsYXNzXTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgorICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNs
YXNzID0gW0RPTUVudGl0eSBjbGFzc107CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAgIGNhc2UgV2ViQ29y
ZTo6Tm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgd3JhcHBl
ckNsYXNzID0gW0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6Tm9kZTo6Q09NTUVOVF9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RP
TUNvbW1lbnQgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGlt
cGwpLT5pc0hUTUxEb2N1bWVudCgpKQorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OkRPQ1VN
RU5UX05PREU6CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnQq
PihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3Mg
PSBbRE9NSFRNTERvY3VtZW50IGNsYXNzXTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnQgY2xhc3NdOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAgICBjYXNl
IFdlYkNvcmU6Ok5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgICAgIHdyYXBwZXJD
bGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgY2FzZSBXZWJD
b3JlOjpOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNs
YXNzID0gW0RPTURvY3VtZW50RnJhZ21lbnQgY2xhc3NdOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpO
b2RlOjpOT1RBVElPTl9OT0RFOgogICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTU5vdGF0
aW9uIGNsYXNzXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlhQQVRI
X05BTUVTUEFDRV9OT0RFOgorICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OlhQQVRIX05BTUVT
UEFDRV9OT0RFOgogICAgICAgICAgICAgLy8gRklYTUU6IENyZWF0ZSBhbiBYUGF0aCBvYmplY3Rp
dmUgQyB3cmFwcGVyCiAgICAgICAgICAgICAvLyBTZWUgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3
aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1CiAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAt
Mzc0LDE1ICszNDgsMTUgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNT
dAogICAgIHJldHVybiBbW1t3cmFwcGVyQ2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6aW1wbF0g
YXV0b3JlbGVhc2VdOwogfQogCi0tIChOb2RlICopX25vZGUKKy0gKFdlYkNvcmU6Ok5vZGUgKilf
bm9kZQogewotICAgIHJldHVybiBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCk7CisgICAgcmV0
dXJuIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpOwogfQogCiAtIChjb25zdCBL
SlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4ZWN1dGlvbkNvbnRleHQKIHsKLSAgICBpZiAo
Tm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkgewotICAgICAgICBpZiAoRnJhbWVNYWMgKmYgPSBNYWMo
bi0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCisgICAgaWYgKFdlYkNvcmU6Ok5vZGUgKm4gPSBbc2Vs
ZiBfbm9kZV0pIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZyYW1lTWFjICpmID0gTWFjKG4tPmRv
Y3VtZW50KCktPmZyYW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIGYtPmV4ZWN1dGlvbkNvbnRl
eHRGb3JET00oKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0zOTAsMTcgKzM2NCw5IEBAIHN0
YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi1AaW1wbGVt
ZW50YXRpb24gRE9NTm9kZSAoV2ViUHJpdmF0ZSkKLQotLSAoQk9PTClpc0NvbnRlbnRFZGl0YWJs
ZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzQ29udGVudEVkaXRhYmxlKCk7Ci19Ci0K
LUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTU5vZGVFeHRlbnNpb25zKQogCisv
LyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9u
CiAtIChOU1JlY3QpYm91bmRpbmdCb3gKIHsKICAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJl
bmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOwpAQCAtNDA5LDYgKzM3NSw3IEBAIHN0
YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4gTlNaZXJv
UmVjdDsKIH0KIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBp
bXBsZW1lbnRhdGlvbgogLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cwogewogICAgIFdlYkNvcmU6
OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7CkBAIC00
MzQsNyArNDAxLDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAog
ICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQogICAgICAgICByYWlz
ZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgIAotICAgIEV2ZW50TGlz
dGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAg
ICBXZWJDb3JlOjpFdmVudExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShsaXN0ZW5lcik7CiAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5h
ZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1cmUpOwogICAgIHdyYXBwZXIt
PmRlcmVmKCk7CiB9CkBAIC00NDQsNyArNDExLDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFz
cyhjb25zdCBBdG9taWNTdAogICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9k
ZSgpKQogICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9FUlIpOwog
Ci0gICAgaWYgKEV2ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6Zmlu
ZChsaXN0ZW5lcikpCisgICAgaWYgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBP
YmpDRXZlbnRMaXN0ZW5lcjo6ZmluZChsaXN0ZW5lcikpCiAgICAgICAgIEV2ZW50VGFyZ2V0Tm9k
ZUNhc3QoW3NlbGYgX25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVyLCB1
c2VDYXB0dXJlKTsKIH0KIApAQCAtNDUzLDcgKzQyMCw3IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50
Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdl
dE5vZGUoKSkKICAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJS
KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIEJPT0wgcmVzdWx0ID0gRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBf
bm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtldmVudCBfZXZlbnRdLCBlYyk7CiAgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDYxLDMxICs0MjgsMTggQEAgc3Rh
dGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKLQotLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50Ci0KLUBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsRXh0ZW5zaW9uKQotCi0tIChET01F
bGVtZW50ICopX293bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVudCBfZWxlbWVu
dFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+b3duZXJFbGVtZW50KCldOwotfQotCi1AZW5kCi0KLQog
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUVsZW1lbnQKIAogLy8g
RklYTUU6IHRoaXMgc2hvdWxkIGJlIGF1dG8tZ2VuZW5lcmF0ZSBpbiBET01FbGVtZW50Lm1tCiBA
aW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudEFwcEtpdEV4dGVuc2lvbnMpCiAK
Ky8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgaW1wbGVtZW50YXRp
b24KIC0gKE5TSW1hZ2UqKWltYWdlCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtz
ZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlciAm
JiByZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0
aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVy
SW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlckltYWdlKj4ocmVuZGVyZXIp
OwogICAgICAgICBpZiAoaW1nLT5jYWNoZWRJbWFnZSgpICYmICFpbWctPmNhY2hlZEltYWdlKCkt
PmlzRXJyb3JJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltZy0+Y2FjaGVkSW1hZ2UoKS0+
aW1hZ2UoKS0+Z2V0TlNJbWFnZSgpOwogICAgIH0KQEAgLTQ5Niw0NSArNDUwLDQ5IEBAIHN0YXRp
YyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGltcGxlbWVudGF0aW9uIERP
TUVsZW1lbnQgKFdlYlByaXZhdGUpCiAKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbXBsZW1l
bnRlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24KIC0gKE5TRm9udCAqKV9mb250CiB7Ci0gICAgUmVu
ZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKKyAgICBX
ZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJl
cigpOwogICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgp
LT5mb250KCkucHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250KCk7CiAgICAgcmV0dXJuIG5pbDsKIH0K
IAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBpbXBsZW1lbnRh
dGlvbgogLSAoTlNEYXRhKilfaW1hZ2VUSUZGUmVwcmVzZW50YXRpb24KIHsKLSAgICBSZW5kZXJP
YmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOworICAgIFdlYkNv
cmU6OlJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0tPnJlbmRlcmVyKCk7
CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkpIHsKLSAgICAgICAgUmVu
ZGVySW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVyZXIpOworICAg
ICAgICBXZWJDb3JlOjpSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVu
ZGVySW1hZ2UqPihyZW5kZXJlcik7CiAgICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYg
IWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4g
KE5TRGF0YSopKGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJlc2VudGF0
aW9uKCkpOwogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQogCisvLyBGSVhNRTogdGhpcyBzaG91
bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtIChOU1VSTCAqKV9nZXRV
UkxBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQogewogICAgIEFTU0VSVChuYW1lKTsKLSAgICBF
bGVtZW50ICplID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICByZXR1cm4g
S1VSTChlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRyaWJ1dGUo
bmFtZSkpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7CisgICAgV2ViQ29yZTo6RWxl
bWVudCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKKyAgICBBU1NFUlQoZWxlbWVudCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OktVUkwoZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
cGFyc2VVUkwoZWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWUpKS5kZXByZWNhdGVkU3RyaW5nKCkp
KS5nZXROU1VSTCgpOwogfQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQg
aW4gdGhlIGltcGxlbWVudGF0aW9uCiAtICh2b2lkICopX05QT2JqZWN0CiB7Ci0gICAgRWxlbWVu
dCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVt
ZW50ID0gW3NlbGYgX2VsZW1lbnRdOwogICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxl
dFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC0+aGFzVGFn
TmFtZShvYmplY3RUYWcpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHJldHVybiAwOworICAgIHJldHVybiAwOwogfQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQg
YmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCiAtIChCT09MKWlzRm9jdXNlZAog
ewotICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07CisgICAgV2ViQ29yZTo6RWxl
bWVudCogaW1wbCA9IFtzZWxmIF9lbGVtZW50XTsKICAgICBpZiAoaW1wbC0+ZG9jdW1lbnQoKS0+
Zm9jdXNOb2RlKCkgPT0gaW1wbCkKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICByZXR1cm4gTk87
CkBAIC01NTAsMTcgKzUwOCwxNSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0
b21pY1N0CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAg
ICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYg
KF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6UmFuZ2UqPihfaW50ZXJuYWwp
LT5kZXJlZigpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQog
ewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVy
bmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nh
c3Q8V2ViQ29yZTo6UmFuZ2UqPihfaW50ZXJuYWwpLT5kZXJlZigpOwogICAgIFtzdXBlciBmaW5h
bGl6ZV07CiB9CiAKQEAgLTU2OSwxMyArNTI1LDEyIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3QKICAgICBpZiAoIV9pbnRlcm5hbCkKICAgICAgICAgcmV0dXJuIEAi
PERPTVJhbmdlOiBudWxsPiI7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiPERPTVJhbmdlOiAlQCAlZCAlQCAlZD4iLAotICAgICAgICBbc2VsZiBzdGFydENvbnRhaW5l
cl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwKLSAgICAgICAgW3NlbGYgZW5kQ29udGFpbmVyXSwgW3Nl
bGYgZW5kT2Zmc2V0XV07CisgICAgICAgICAgICAgICBbc2VsZiBzdGFydENvbnRhaW5lcl0sIFtz
ZWxmIHN0YXJ0T2Zmc2V0XSwgW3NlbGYgZW5kQ29udGFpbmVyXSwgW3NlbGYgZW5kT2Zmc2V0XV07
CiB9CiAKIC0gKERPTU5vZGUgKilzdGFydENvbnRhaW5lcgogewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERPTU5vZGUg
KnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5zdGFydENvbnRhaW5l
cihlYyldOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTU4Myw3ICs1MzgsNyBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0
CiAKIC0gKGludClzdGFydE9mZnNldAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCByZXN1bHQgPSBbc2VsZiBf
cmFuZ2VdLT5zdGFydE9mZnNldChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtNTkxLDcgKzU0Niw3IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3QKIAogLSAoRE9NTm9kZSAqKWVuZENvbnRhaW5lcgogewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5l
bmRDb250YWluZXIoZWMpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC01OTksNyArNTU0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25z
dCBBdG9taWNTdAogCiAtIChpbnQpZW5kT2Zmc2V0CiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IHJlc3VsdCA9
IFtzZWxmIF9yYW5nZV0tPmVuZE9mZnNldChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjA3LDcgKzU2Miw3IEBAIHN0YXRpYyBDbGFzcyBlbGVt
ZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoQk9PTCljb2xsYXBzZWQKIHsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBCT09MIHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7CiAgICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjE1LDcgKzU3MCw3IEBAIHN0
YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogLSAoRE9NTm9kZSAqKWNv
bW1vbkFuY2VzdG9yQ29udGFpbmVyCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9yYW5nZV0tPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKGVj
KV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjIz
LDg1ICs1NzgsODUgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAog
CiAtICh2b2lkKXNldFN0YXJ0OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFydChbcmVmTm9kZSBfbm9kZV0sIG9mZnNldCwg
ZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZvaWQpc2V0RW5kOihET01O
b2RlICopcmVmTm9kZSA6KGludClvZmZzZXQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5z
ZXRFbmQoW3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwogfQogCiAtICh2b2lkKXNldFN0YXJ0QmVmb3JlOihET01Ob2RlICopcmVmTm9kZQogewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QmVmb3JlKFtyZWZOb2RlIF9ub2RlXSwg
ZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZvaWQpc2V0U3RhcnRBZnRl
cjooRE9NTm9kZSAqKXJlZk5vZGUKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFy
dEFmdGVyKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9
CiAKIC0gKHZvaWQpc2V0RW5kQmVmb3JlOihET01Ob2RlICopcmVmTm9kZQogewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFtzZWxmIF9yYW5nZV0tPnNldEVuZEJlZm9yZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKICAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNldEVuZEFmdGVyOihET01Ob2RlICop
cmVmTm9kZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPnNldEVuZEFmdGVyKFtyZWZOb2Rl
IF9ub2RlXSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIC0gKHZvaWQpY29s
bGFwc2U6KEJPT0wpdG9TdGFydAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNl
KHRvU3RhcnQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXNl
bGVjdE5vZGU6KERPTU5vZGUgKilyZWZOb2RlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgW3NlbGYgX3JhbmdlXS0+
c2VsZWN0Tm9kZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwogfQogCiAtICh2b2lkKXNlbGVjdE5vZGVDb250ZW50czooRE9NTm9kZSAqKXJlZk5vZGUKIHsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zZWxlY3ROb2RlQ29udGVudHMoW3JlZk5vZGUgX25v
ZGVdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogLSAoc2hvcnQpY29tcGFy
ZUJvdW5kYXJ5UG9pbnRzOih1bnNpZ25lZCBzaG9ydClob3cgOihET01SYW5nZSAqKXNvdXJjZVJh
bmdlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2hvcnQgcmVzdWx0ID0gW3Nl
bGYgX3JhbmdlXS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXRpY19jYXN0PFJhbmdlOjpDb21w
YXJlSG93Pihob3cpLCBbc291cmNlUmFuZ2UgX3JhbmdlXSwgZWMpOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHNob3J0IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNv
bXBhcmVCb3VuZGFyeVBvaW50cyhzdGF0aWNfY2FzdDxXZWJDb3JlOjpSYW5nZTo6Q29tcGFyZUhv
dz4oaG93KSwgW3NvdXJjZVJhbmdlIF9yYW5nZV0sIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC0gKHZvaWQpZGVsZXRlQ29udGVudHMKIHsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5kZWxldGVDb250ZW50cyhlYyk7CiAgICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKIH0KIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWV4dHJhY3RDb250
ZW50cwogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1
bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5leHRyYWN0
Q29udGVudHMoZWMpLmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVy
biByZXN1bHQ7CkBAIC03MDksNyArNjY0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhj
b25zdCBBdG9taWNTdAogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY2xvbmVDb250ZW50cwog
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZy
YWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNvbnRlbnRz
KGVjKS5nZXQoKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNzE3LDIxICs2NzIsMjEgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBB
dG9taWNTdAogCiAtICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCiB7Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBfbm9kZV0sIGVjKTsKICAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAtICh2b2lkKXN1cnJvdW5kQ29udGVudHM6KERP
TU5vZGUgKiluZXdQYXJlbnQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfcmFuZ2VdLT5zdXJyb3VuZENv
bnRlbnRzKFtuZXdQYXJlbnQgX25vZGVdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
IH0KIAogLSAoRE9NUmFuZ2UgKiljbG9uZVJhbmdlCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRE9NUmFuZ2UgKnJl
c3VsdCA9IFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFuZ2UoZWMp
LmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CkBA
IC03MzksNyArNjk0LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNT
dAogCiAtIChOU1N0cmluZyAqKXRvU3RyaW5nCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgTlNTdHJpbmcgKnJlc3Vs
dCA9IFtzZWxmIF9yYW5nZV0tPnRvU3RyaW5nKGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC03NTIsNyArNzA3LDcgQEAgc3RhdGljIENsYXNzIGVs
ZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiAtICh2b2lkKWRldGFjaAogewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFtzZWxmIF9yYW5nZV0tPmRldGFjaChlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0K
QEAgLTc2MSwxOCArNzE2LDE4IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRv
bWljU3QKIAogQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0g
KGlkKV9pbml0V2l0aFJhbmdlOihSYW5nZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aFJhbmdlOihX
ZWJDb3JlOjpSYW5nZSAqKWltcGwKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAKICAgICBbc3VwZXIg
X2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGlt
cGwpOworICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7
CiAgICAgaW1wbC0+cmVmKCk7CiAgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotKyAoRE9NUmFuZ2UgKilfcmFuZ2VXaXRoOihSYW5nZSAqKWltcGwK
KysgKERPTVJhbmdlICopX3JhbmdlV2l0aDooV2ViQ29yZTo6UmFuZ2UgKilpbXBsCiB7CiAgICAg
aWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzg1LDkgKzc0MCw5IEBAIHN0YXRp
YyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKICAgICByZXR1cm4gW1tbc2VsZiBh
bGxvY10gX2luaXRXaXRoUmFuZ2U6aW1wbF0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChSYW5nZSAq
KV9yYW5nZQorLSAoV2ViQ29yZTo6UmFuZ2UgKilfcmFuZ2UKIHsKLSAgICByZXR1cm4gRE9NX2Nh
c3Q8UmFuZ2UgKj4oX2ludGVybmFsKTsKKyAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29yZTo6UmFu
Z2UqPihfaW50ZXJuYWwpOwogfQogCiBAZW5kCkBAIC04MDcsMTggKzc2MiwxOCBAQCBzdGF0aWMg
Q2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBpbXBsZW1lbnRhdGlvbiBET01O
b2RlRmlsdGVyCiAKLS0gKGlkKV9pbml0V2l0aE5vZGVGaWx0ZXI6KE5vZGVGaWx0ZXIgKilpbXBs
CistIChpZClfaW5pdFdpdGhOb2RlRmlsdGVyOihXZWJDb3JlOjpOb2RlRmlsdGVyICopaW1wbAog
ewogICAgIEFTU0VSVChpbXBsKTsKIAogICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFs
ID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgX2ludGVybmFsID0g
RE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYoKTsKICAg
ICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwogICAgIHJldHVybiBzZWxmOwogfQogCi0rIChE
T01Ob2RlRmlsdGVyICopX25vZGVGaWx0ZXJXaXRoOihOb2RlRmlsdGVyICopaW1wbAorKyAoRE9N
Tm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyV2l0aDooV2ViQ29yZTo6Tm9kZUZpbHRlciAqKWltcGwK
IHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04MzEsMjIgKzc4Niwy
MiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVGaWx0ZXI6aW1wbF0gYXV0b3JlbGVhc2VdOwog
fQogCi0tIChOb2RlRmlsdGVyICopX25vZGVGaWx0ZXIKKy0gKFdlYkNvcmU6Ok5vZGVGaWx0ZXIg
Kilfbm9kZUZpbHRlcgogewotICAgIHJldHVybiBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRl
cm5hbCk7CisgICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGVGaWx0ZXIqPihfaW50ZXJu
YWwpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBpZiAoX2ludGVybmFsKQotICAgICAg
ICBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CisgICAgICAgIERP
TV9jYXN0PFdlYkNvcmU6Ok5vZGVGaWx0ZXIqPihfaW50ZXJuYWwpLT5kZXJlZigpOwogICAgIFtz
dXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewogICAgIGlmIChfaW50ZXJu
YWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
KyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZUZpbHRlcio+KF9pbnRlcm5hbCktPmRlcmVm
KCk7CiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIApAQCAtODYzLDI0ICs4MTgsMjQgQEAgc3Rh
dGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAaW1wbGVtZW50YXRpb24g
RE9NTm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRoTm9kZUl0
ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZp
bHRlcgorLSAoaWQpX2luaXRXaXRoTm9kZUl0ZXJhdG9yOihXZWJDb3JlOjpOb2RlSXRlcmF0b3Ig
KilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgogewogICAgIEFTU0VSVChp
bXBsKTsKIAogICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9N
T2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2Jq
ZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYoKTsKICAgICBhZGRET01XcmFwcGVy
KHNlbGYsIGltcGwpOwogICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRhaW5dOwogICAgIHJldHVy
biBzZWxmOwogfQogCi0tIChOb2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJhdG9yCistIChXZWJDb3Jl
OjpOb2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJhdG9yCiB7Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5v
ZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpO
b2RlSXRlcmF0b3IqPihfaW50ZXJuYWwpOwogfQogCi0rIChET01Ob2RlSXRlcmF0b3IgKilfbm9k
ZUl0ZXJhdG9yV2l0aDooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmls
dGVyPilmaWx0ZXIKKysgKERPTU5vZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0b3JXaXRoOihXZWJD
b3JlOjpOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRl
cgogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTkwMSwyNCArODU2
LDI0IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGltcGxl
bWVudGF0aW9uIERPTVRyZWVXYWxrZXIgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRX
aXRoVHJlZVdhbGtlcjooVHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRl
cj4pZmlsdGVyCistIChpZClfaW5pdFdpdGhUcmVlV2Fsa2VyOihXZWJDb3JlOjpUcmVlV2Fsa2Vy
ICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKIHsKICAgICBBU1NFUlQo
aW1wbCk7CiAKICAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERP
TU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9i
amVjdEludGVybmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7CiAgICAgYWRkRE9NV3JhcHBl
cihzZWxmLCBpbXBsKTsKICAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCistIChXZWJDb3JlOjpU
cmVlV2Fsa2VyICopX3RyZWVXYWxrZXIKIHsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8VHJlZVdhbGtl
ciAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpUcmVlV2Fsa2Vy
ICo+KF9pbnRlcm5hbCk7CiB9CiAKLSsgKERPTVRyZWVXYWxrZXIgKilfdHJlZVdhbGtlcldpdGg6
KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgorKyAo
RE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooV2ViQ29yZTo6VHJlZVdhbGtlciAqKWlt
cGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCiB7CiAgICAgaWYgKCFpbXBsKQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTM3LDE2ICs4OTIsMTUgQEAgc3RhdGljIENsYXNzIGVs
ZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIC8vIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uCiAKLWNsYXNzIE9iakNOb2RlRmlsdGVy
Q29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJDb25kaXRpb24KLXsKK2NsYXNzIE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uIDogcHVibGljIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb24gewog
cHVibGljOgogICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmlsdGVyPik7
CiAgICAgdmlydHVhbCB+T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKTsKLSAgICB2aXJ0dWFsIHNo
b3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OworICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9k
ZShXZWJDb3JlOjpOb2RlKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgT2JqQ05vZGVGaWx0ZXJD
b25kaXRpb24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0gICAgT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAm
KTsKKyAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbiYpOworICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICZvcGVyYXRvcj0oY29uc3QgT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24mKTsKIAogICAgIGlkIDxET01Ob2RlRmlsdGVyPiBtX2ZpbHRl
cjsKIH07CkBAIC05NjMsMTAgKzkxNywxMCBAQCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6fk9i
akNOb2RlRmlsdGVyCiAgICAgQ0ZSZWxlYXNlKG1fZmlsdGVyKTsKIH0KIAotc2hvcnQgT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoTm9kZSogbm9kZSkgY29uc3QKK3Nob3J0IE9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKFdlYkNvcmU6Ok5vZGUqIG5vZGUpIGNv
bnN0CiB7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVS
X1JFSkVDVDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpF
Q1Q7CiAgICAgcmV0dXJuIFttX2ZpbHRlciBhY2NlcHROb2RlOltET01Ob2RlIF9ub2RlV2l0aDpu
b2RlXV07CiB9CiAKQEAgLTk3OSwyMiArOTMzLDIyIEBAIHNob3J0IE9iakNOb2RlRmlsdGVyQ29u
ZGl0aW9uOjphY2NlcHROb2QKIAogLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9kZUl0ZXJh
dG9yOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9kZUZp
bHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCiB7Ci0gICAgUmVmUHRy
PE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUZpbHRlcj4g
Y3BwRmlsdGVyOwogICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGNwcEZpbHRlciA9IG5ldyBOb2Rl
RmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3NlbGYgX2Rv
Y3VtZW50XS0+Y3JlYXRlTm9kZUl0ZXJhdG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3Bw
RmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7CisgICAgICAgIGNwcEZpbHRlciA9
IG5ldyBXZWJDb3JlOjpOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0
ZXIpKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlTm9kZUl0
ZXJhdG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlS
ZWZlcmVuY2VzLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gW0RP
TU5vZGVJdGVyYXRvciBfbm9kZUl0ZXJhdG9yV2l0aDppbXBsLmdldCgpIGZpbHRlcjpmaWx0ZXJd
OwogfQogCiAtIChET01UcmVlV2Fsa2VyICopY3JlYXRlVHJlZVdhbGtlcjooRE9NTm9kZSAqKXJv
b3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJP
T0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwogewotICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBjcHBG
aWx0ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKICAgICBp
ZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgUmVmUHRyPFRyZWVXYWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUcmVl
V2Fsa2VyKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlS
ZWZlcmVuY2VzLCBlYyk7CisgICAgICAgIGNwcEZpbHRlciA9IG5ldyBXZWJDb3JlOjpOb2RlRmls
dGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKKyAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VHJlZVdhbGtlcj4gaW1w
bCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRyZWVXYWxrZXIoW3Jvb3QgX25vZGVdLCB3aGF0
VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVjKTsKICAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiBbRE9NVHJlZVdhbGtlciBfdHJlZVdhbGtlcldp
dGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKIH0KQEAgLTEwMDksMTIgKzk2MywxMiBAQCBP
YmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpCiB7CiAgICAgaWYgKExpc3Rl
bmVyTWFwKiBtYXAgPSBsaXN0ZW5lck1hcCkKICAgICAgICAgcmV0dXJuIG1hcC0+Z2V0KGxpc3Rl
bmVyKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gMDsKIH0KIAogT2JqQ0V2ZW50TGlz
dGVuZXIgKk9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyKQogewotICAgIE9iakNFdmVudExpc3RlbmVyICp3cmFwcGVyID0gZmluZChsaXN0ZW5l
cik7CisgICAgT2JqQ0V2ZW50TGlzdGVuZXIqIHdyYXBwZXIgPSBmaW5kKGxpc3RlbmVyKTsKICAg
ICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHdyYXBwZXIgPSBuZXcgT2JqQ0V2ZW50TGlzdGVuZXIo
bGlzdGVuZXIpOwogICAgIHdyYXBwZXItPnJlZigpOwpAQCAtMTAzOCw3ICs5OTIsNyBAQCBPYmpD
RXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVudExpc3RlbmVyKCkKICAgICBbbV9saXN0ZW5lciByZWxl
YXNlXTsKIH0KIAotdm9pZCBPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoRXZlbnQgKmV2
ZW50LCBib29sKQordm9pZCBPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6
RXZlbnQqIGV2ZW50LCBib29sKQogewogICAgIFttX2xpc3RlbmVyIGhhbmRsZUV2ZW50OltET01F
dmVudCBfZXZlbnRXaXRoOmV2ZW50XV07CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NQWJzdHJhY3RWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUFic3RyYWN0Vmlldy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUFic3RyYWN0Vmlldy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgor
CitAY2xhc3MgRE9NRG9jdW1lbnQ7CisKK0BpbnRlcmZhY2UgRE9NQWJzdHJhY3RWaWV3IDogRE9N
T2JqZWN0CistIChET01Eb2N1bWVudCAqKWRvY3VtZW50OworQGVuZApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWlu
aWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkRPTUFic3RyYWN0Vmlldy5oIgorCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNp
bXBvcnQgIkRPTURvY3VtZW50LmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAi
RE9NV2luZG93LmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OworfQorCitBTExPV19ET01fQ0FT
VChET01XaW5kb3cpCisKK0BpbXBsZW1lbnRhdGlvbiBET01BYnN0cmFjdFZpZXcKKworI2RlZmlu
ZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NV2luZG93Kj4oX2ludGVybmFsKQor
CistIChET01Eb2N1bWVudCAqKWRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtET01Eb2N1bWVudCBf
ZG9jdW1lbnRXaXRoOldURjo6Z2V0UHRyKElNUEwtPmRvY3VtZW50KCkpXTsKK30KKworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gRE9NQWJzdHJhY3RWaWV3IChXZWJDb3JlSW50ZXJuYWwpCisKKy0g
KFdlYkNvcmU6OkFic3RyYWN0VmlldyAqKV9hYnN0cmFjdFZpZXcKK3sKKyAgICByZXR1cm4gSU1Q
TDsKK30KKworLSAoaWQpX2luaXRXaXRoQWJzdHJhY3RWaWV3OihXZWJDb3JlOjpBYnN0cmFjdFZp
ZXcgKilpbXBsCit7CisgICAgQVNTRVJUKGltcGwpOworCisgICAgW3N1cGVyIF9pbml0XTsKKyAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKKyAgICBp
bXBsLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOworICAgIHJldHVybiBz
ZWxmOworfQorCisrIChET01BYnN0cmFjdFZpZXcgKilfYWJzdHJhY3RWaWV3V2l0aDooV2ViQ29y
ZTo6QWJzdHJhY3RWaWV3ICopaW1wbAoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICAKKyAgICBpZCBjYWNoZWRJbnN0YW5jZTsKKyAgICBjYWNoZWRJbnN0YW5jZSA9
IGdldERPTVdyYXBwZXIoaW1wbCk7CisgICAgaWYgKGNhY2hlZEluc3RhbmNlKQorICAgICAgICBy
ZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAgICBy
ZXR1cm4gW1tbRE9NQWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdFdpdGhBYnN0cmFjdFZpZXc6aW1w
bF0gYXV0b3JlbGVhc2VdOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NQ1NTLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MubW0J
KHJldmlzaW9uIDE2NDM0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjgsNDUgKzI4LDM3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkRPTUNTUy5oIgogCi0jaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJDU1NDaGFy
c2V0UnVsZS5oIgogI2ltcG9ydCAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW1wb3J0ICJDU1NJbXBv
cnRSdWxlLmgiCiAjaW1wb3J0ICJDU1NNZWRpYVJ1bGUuaCIKICNpbXBvcnQgIkNTU1BhZ2VSdWxl
LmgiCisjaW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2ltcG9ydCAiQ1NTUnVsZS5oIgog
I2ltcG9ydCAiQ1NTUnVsZUxpc3QuaCIKKyNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbXBvcnQgIkNTU1N0eWxlUnVsZS5oIgogI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgogI2lt
cG9ydCAiQ1NTVmFsdWVMaXN0LmgiCi0jaW1wb3J0ICJDb3VudGVyLmgiCiAjaW1wb3J0ICJET01J
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgogI2ltcG9ydCAiRE9NV2luZG93Lmgi
CiAjaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5oIgotI2lt
cG9ydCAiSFRNTExpbmtFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MU3R5bGVFbGVtZW50LmgiCi0j
aW1wb3J0ICJNZWRpYUxpc3QuaCIKLSNpbXBvcnQgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgot
I2ltcG9ydCAiUmVjdEltcGwuaCIKICNpbXBvcnQgIlN0eWxlU2hlZXQuaCIKLSNpbXBvcnQgIlN0
eWxlU2hlZXRMaXN0LmgiCiAKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KICNpbXBvcnQgPG9iamMv
b2JqYy1jbGFzcy5oPgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OwogfQogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
IERPTVN0eWxlU2hlZXQKIAogQGltcGxlbWVudGF0aW9uIERPTVN0eWxlU2hlZXQgKFdlYkNvcmVJ
bnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRoU3R5bGVTaGVldDooU3R5bGVTaGVldCAqKWltcGwK
Ky0gKGlkKV9pbml0V2l0aFN0eWxlU2hlZXQ6KFdlYkNvcmU6OlN0eWxlU2hlZXQgKilpbXBsCiB7
CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJ
bnRlcm5hbCo+KGltcGwpOwpAQCAtNzUsNyArNjcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotKyAoRE9NU3R5bGVTaGVldCAqKV9zdHlsZVNoZWV0
V2l0aDooU3R5bGVTaGVldCAqKWltcGwKKysgKERPTVN0eWxlU2hlZXQgKilfc3R5bGVTaGVldFdp
dGg6KFdlYkNvcmU6OlN0eWxlU2hlZXQgKilpbXBsCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAg
ICByZXR1cm4gbmlsOwpAQCAtMTAxLDcgKzkzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIEBpbXBsZW1lbnRhdGlvbiBET01DU1NTdHlsZVNoZWV0IChXZWJDb3JlSW50ZXJuYWwpCiAK
LSsgKERPTUNTU1N0eWxlU2hlZXQgKilfQ1NTU3R5bGVTaGVldFdpdGg6KENTU1N0eWxlU2hlZXQg
KilpbXBsCisrIChET01DU1NTdHlsZVNoZWV0ICopX0NTU1N0eWxlU2hlZXRXaXRoOihXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0ICopaW1wbAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01DU1NT
dHlsZVNoZWV0Kj4oW0RPTVN0eWxlU2hlZXQgX3N0eWxlU2hlZXRXaXRoOmltcGxdKTsKIH0KQEAg
LTExNCw3ICsxMDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0
aW9uIERPTUNTU1J1bGUgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoaWQpX2luaXRXaXRoUnVsZToo
Q1NTUnVsZSAqKWltcGwKKy0gKGlkKV9pbml0V2l0aFJ1bGU6KFdlYkNvcmU6OkNTU1J1bGUgKilp
bXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01P
YmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtMTIzLDcgKzExNSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0rIChET01DU1NSdWxlICopX0NTU1J1
bGVXaXRoOihDU1NSdWxlICopaW1wbAorKyAoRE9NQ1NTUnVsZSAqKV9DU1NSdWxlV2l0aDooV2Vi
Q29yZTo6Q1NTUnVsZSAqKWltcGwKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC0xNjgsNyArMTYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBs
ZW1lbnRhdGlvbiBET01DU1NWYWx1ZSAoV2ViQ29yZUludGVybmFsKQogCi0tIChpZClfaW5pdFdp
dGhWYWx1ZTooQ1NTVmFsdWUgKilpbXBsCistIChpZClfaW5pdFdpdGhWYWx1ZTooV2ViQ29yZTo6
Q1NTVmFsdWUgKilpbXBsCiB7CiAgICAgW3N1cGVyIF9pbml0XTsKICAgICBfaW50ZXJuYWwgPSBE
T01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwpAQCAtMTc3LDcgKzE2OSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0rIChET01DU1NW
YWx1ZSAqKV9DU1NWYWx1ZVdpdGg6KENTU1ZhbHVlICopaW1wbAorKyAoRE9NQ1NTVmFsdWUgKilf
Q1NTVmFsdWVXaXRoOihXZWJDb3JlOjpDU1NWYWx1ZSAqKWltcGwKIHsKICAgICBpZiAoIWltcGwp
CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMTgsNyArMjEwLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NWYWx1ZSo+KF9pbnRlcm5hbCkpOwog
fQogCi0rIChET01DU1NQcmltaXRpdmVWYWx1ZSAqKV9DU1NQcmltaXRpdmVWYWx1ZVdpdGg6KENT
U1ZhbHVlICopaW1wbAorKyAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilfQ1NTUHJpbWl0aXZlVmFs
dWVXaXRoOihXZWJDb3JlOjpDU1NWYWx1ZSAqKWltcGwKIHsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NQ1NTUHJpbWl0aXZlVmFsdWUqPihbRE9NQ1NTVmFsdWUgX0NTU1ZhbHVlV2l0aDppbXBs
XSk7CiB9CkBAIC0yMjcsMTkgKzIxOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAK
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01SR0JDb2xvcgotCi1A
aW1wbGVtZW50YXRpb24gRE9NUkdCQ29sb3IgKFdlYlByaXZhdGUpCi0KLS0gKE5TQ29sb3IgKilf
Y29sb3IKLXsKLSAgICByZXR1cm4gW3NlbGYgY29sb3JdOwotfQotCi1AZW5kCi0KLQotLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQGltcGxlbWVudGF0aW9uIERPTUNTU1N0
eWxlRGVjbGFyYXRpb24gKERPTUNTUzJQcm9wZXJ0aWVzKQogCkBAIC0xNDgzLDcgKzE0NjIsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAq
KWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBzZXVkb0Vs
dAogewotICAgIEFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9jdW1lbnRdLT5kZWZhdWx0Vmll
dygpOworICAgIFdlYkNvcmU6OkFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9jdW1lbnRdLT5k
ZWZhdWx0VmlldygpOwogCiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTE0
OTcsNyArMTQ3Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtIChET01DU1NSdWxl
TGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5nICop
cHNldWRvRWx0CiB7Ci0gICAgQWJzdHJhY3RWaWV3KiBkdiA9IFtzZWxmIF9kb2N1bWVudF0tPmRl
ZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6QWJzdHJhY3RWaWV3KiBkdiA9IFtzZWxmIF9kb2N1
bWVudF0tPmRlZmF1bHRWaWV3KCk7CiAKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1cm4gbmls
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCShyZXZpc2lvbiAxNjQzNCkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01F
bnRpdHkuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRW50aXR5UmVmZXJlbmNlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTUV4Y2VwdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01ET01JbXBsZW1l
bnRhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01OYW1lZE5vZGVNYXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRE9NTm9kZS5oPgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50
RXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50
RXhjZXB0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZl
bnRFeGNlcHRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXZlbnRFeGNlcHRp
b247CisKK2VudW0gRE9NRXZlbnRFeGNlcHRpb25Db2RlIHsKKyAgICBET01fVU5TUEVDSUZJRURf
RVZFTlRfVFlQRV9FUlIgPSAwCit9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAko
cmV2aXNpb24gMTY0MzQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NVmlld3Mu
aD4KIAogI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01F
dmVudEV4Y2VwdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVudExpc3RlbmVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50VGFyZ2V0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUtl
eWJvYXJkRXZlbnQuaD4KQEAgLTM5LDEyICs0MCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RPTVVJ
RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NV2hlZWxFdmVudC5oPgogCi1leHRlcm4gTlNT
dHJpbmcgKiBjb25zdCBET01FdmVudEV4Y2VwdGlvbjsKLQotZW51bSBET01FdmVudEV4Y2VwdGlv
bkNvZGUgewotICAgIERPTV9VTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUiA9IDAKLX07Ci0KIEBp
bnRlcmZhY2UgRE9NS2V5Ym9hcmRFdmVudCAoTm9uU3RhbmRhcmRBZGRpdGlvbnMpCiAtIChCT09M
KWdldE1vZGlmaWVyU3RhdGU6KE5TU3RyaW5nICopa2V5SWRlbnRpZmllckFyZzsKIEBlbmQKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQkocmV2aXNpb24gMTY0MzQpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICsz
OCw2IEBACiAjaW1wb3J0ICJPdmVyZmxvd0V2ZW50LmgiCiAjaW1wb3J0ICJVSUV2ZW50LmgiCiAK
LUFMTE9XX0RPTV9DQVNUKEV2ZW50KQotCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogLy8gRE9NRXZlbnQKIApAQCAtOTgsNiArOTYsNyBAQCBBTExPV19ET01fQ0FTVChFdmVu
dCkKIAogQGltcGxlbWVudGF0aW9uIERPTUtleWJvYXJkRXZlbnQgKE5vblN0YW5kYXJkQWRkaXRp
b25zKQogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGltcGxl
bWVudGF0aW9uCiAtIChCT09MKWdldE1vZGlmaWVyU3RhdGU6KE5TU3RyaW5nICopa2V5SWRlbnRp
ZmllckFyZwogewogICAgIGlmIChba2V5SWRlbnRpZmllckFyZyBpc0VxdWFsVG9TdHJpbmc6QCJD
b250cm9sIl0gJiYgW3NlbGYgY3RybEtleV0pCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV4
Y2VwdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV4Y2Vw
dGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCitleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FeGNlcHRpb247CisKKy8vIERP
TSBleGNlcHRpb24gY29kZXMKK2VudW0geworICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAg
ICAgICAgICA9IDEsCisgICAgRE9NX0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwK
KyAgICBET01fSElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICAgICAgPSAzLAorICAgIERPTV9XUk9O
R19ET0NVTUVOVF9FUlIgICAgICAgICAgICA9IDQsCisgICAgRE9NX0lOVkFMSURfQ0hBUkFDVEVS
X0VSUiAgICAgICAgID0gNSwKKyAgICBET01fTk9fREFUQV9BTExPV0VEX0VSUiAgICAgICAgICAg
PSA2LAorICAgIERPTV9OT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgICA9IDcsCisgICAgRE9N
X05PVF9GT1VORF9FUlIgICAgICAgICAgICAgICAgID0gOCwKKyAgICBET01fTk9UX1NVUFBPUlRF
RF9FUlIgICAgICAgICAgICAgPSA5LAorICAgIERPTV9JTlVTRV9BVFRSSUJVVEVfRVJSICAgICAg
ICAgICA9IDEwLAorICAgIERPTV9JTlZBTElEX1NUQVRFX0VSUiAgICAgICAgICAgICA9IDExLAor
ICAgIERPTV9TWU5UQVhfRVJSICAgICAgICAgICAgICAgICAgICA9IDEyLAorICAgIERPTV9JTlZB
TElEX01PRElGSUNBVElPTl9FUlIgICAgICA9IDEzLAorICAgIERPTV9OQU1FU1BBQ0VfRVJSICAg
ICAgICAgICAgICAgICA9IDE0LAorICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAg
ICA9IDE1Cit9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHJldmlzaW9uIDE2NDM0
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM0LDI4ICszNCwxNCBAQAogI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAi
RnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxGb3Jt
RWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTElu
cHV0RWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1MT2JqZWN0
RWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCi0jaW1wb3J0ICJI
VE1MU2VsZWN0RWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIK
LSNpbXBvcnQgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFibGVFbGVt
ZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgogI2ltcG9ydCAiS1VS
TC5oIgotI2ltcG9ydCAiTmFtZU5vZGVMaXN0LmgiCiAjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9y
dCAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbXBvcnQgImNzc2hlbHBlci5oIgogI2ltcG9ydCAi
bWFya3VwLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKLQotCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9N
SFRNTERvY3VtZW50CiAKQEAgLTc4LDcgKzY0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9jcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0
aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzooTlNT
dHJpbmcgKiliYXNlVVJMU3RyaW5nCiB7Ci0gICAgTlNVUkwgKmJhc2VVUkwgPSBLVVJMKFtzZWxm
IF9kb2N1bWVudF0tPmNvbXBsZXRlVVJMKHBhcnNlVVJMKGJhc2VVUkxTdHJpbmcpKS5kZXByZWNh
dGVkU3RyaW5nKCkpLmdldE5TVVJMKCk7CisgICAgTlNVUkwgKmJhc2VVUkwgPSBXZWJDb3JlOjpL
VVJMKFtzZWxmIF9kb2N1bWVudF0tPmNvbXBsZXRlVVJMKFdlYkNvcmU6OnBhcnNlVVJMKGJhc2VV
UkxTdHJpbmcpKS5kZXByZWNhdGVkU3RyaW5nKCkpLmdldE5TVVJMKCk7CiAgICAgcmV0dXJuIFtz
ZWxmIGNyZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZyBi
YXNlVVJMOmJhc2VVUkxdOwogfQogCkBAIC0xMjIsMTkgKzEwOCwxNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiAjcHJhZ21hIG1hcmsgRE9NIEVYVEVOU0lPTlMKIAotLy8gVGhlc2Ug
I2ltcG9ydHMgYW5kICJ1c2luZ3MiIGFyZSB1c2VkIG9ubHkgYnkgdmlld0ZvckVsZW1lbnQgYW5k
IHNob3VsZCBiZSBkZWxldGVkIAorLy8gVGhpcyAjaW1wb3J0IGlzIHVzZWQgb25seSBieSB2aWV3
Rm9yRWxlbWVudCBhbmQgc2hvdWxkIGJlIGRlbGV0ZWQgCiAvLyB3aGVuIHRoYXQgZnVuY3Rpb24g
Z29lcyBhd2F5LgogI2ltcG9ydCAiUmVuZGVyV2lkZ2V0LmgiCi11c2luZyBXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJXaWRnZXQ7CiAKIC8vIFRoaXMgZnVuY3Rp
b24gaXMgdXNlZCBvbmx5IGJ5IHRoZSB0d28gRm9ybUF1dG9GaWxsVHJhbnNpdGlvbiBjYXRlZ29y
aWVzLCBhbmQgd2lsbCBnbyBhd2F5CiAvLyBhcyBzb29uIGFzIHBvc3NpYmxlLgogc3RhdGljIE5T
VmlldyAqdmlld0ZvckVsZW1lbnQoRE9NRWxlbWVudCAqZWxlbWVudCkKIHsKLSAgICBSZW5kZXJP
YmplY3QgKnJlbmRlcmVyID0gW2VsZW1lbnQgX2VsZW1lbnRdLT5yZW5kZXJlcigpOworICAgIFdl
YkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbZWxlbWVudCBfZWxlbWVudF0tPnJlbmRl
cmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1dpZGdldCgpKSB7Ci0gICAg
ICAgIFdpZGdldCAqd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyV2lkZ2V0Kj4ocmVu
ZGVyZXIpLT53aWRnZXQoKTsKKyAgICAgICAgV2ViQ29yZTo6V2lkZ2V0ICp3aWRnZXQgPSBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpSZW5kZXJXaWRnZXQqPihyZW5kZXJlciktPndpZGdldCgp
OwogICAgICAgICBpZiAod2lkZ2V0KSB7CiAgICAgICAgICAgICB3aWRnZXQtPnBvcHVsYXRlKCk7
CiAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0LT5nZXRWaWV3KCk7CkBAIC0xODgsOSArMTcyLDkg
QEAgc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9NRWxlbWVudAogCiAtICh2b2lkKV9y
ZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6KE5TUmFuZ2UpdGFyZ2V0UmFuZ2Ugd2l0aFN0cmluZzoo
TlNTdHJpbmcgKilyZXBsYWNlbWVudFN0cmluZyBzZWxlY3RpbmdGcm9tSW5kZXg6KGludClpbmRl
eAogewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IFtzZWxmIF9IVE1MSW5w
dXRFbGVtZW50XTsKKyAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQg
PSBbc2VsZiBfSFRNTElucHV0RWxlbWVudF07CiAgICAgaWYgKGlucHV0RWxlbWVudCkgewotICAg
ICAgICBTdHJpbmcgbmV3VmFsdWUgPSBpbnB1dEVsZW1lbnQtPnZhbHVlKCkucmVwbGFjZSh0YXJn
ZXRSYW5nZS5sb2NhdGlvbiwgdGFyZ2V0UmFuZ2UubGVuZ3RoLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgICAgIFdlYkNvcmU6OlN0cmluZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC0+dmFsdWUo
KS5yZXBsYWNlKHRhcmdldFJhbmdlLmxvY2F0aW9uLCB0YXJnZXRSYW5nZS5sZW5ndGgsIHJlcGxh
Y2VtZW50U3RyaW5nKTsKICAgICAgICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZShuZXdWYWx1ZSk7
CiAgICAgICAgIGlucHV0RWxlbWVudC0+c2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVl
Lmxlbmd0aCgpKTsKICAgICB9CkBAIC0xOTgsNyArMTgyLDcgQEAgc3RhdGljIE5TVmlldyAqdmll
d0ZvckVsZW1lbnQoRE9NRWxlbWVudAogCiAtIChOU1JhbmdlKV9zZWxlY3RlZFJhbmdlCiB7Ci0g
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gW3NlbGYgX0hUTUxJbnB1dEVsZW1l
bnRdOworICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IFtzZWxm
IF9IVE1MSW5wdXRFbGVtZW50XTsKICAgICBpZiAoaW5wdXRFbGVtZW50KSB7CiAgICAgICAgIGlu
dCBzdGFydCA9IGlucHV0RWxlbWVudC0+c2VsZWN0aW9uU3RhcnQoKTsKICAgICAgICAgaW50IGVu
ZCA9IGlucHV0RWxlbWVudC0+c2VsZWN0aW9uRW5kKCk7CkBAIC0yMTIsNyArMTk2LDcgQEAgc3Rh
dGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9NRWxlbWVudAogICAgIC8vIFRoaXMgbm90aWZp
ZXMgdGhlIGlucHV0IGVsZW1lbnQgdGhhdCB0aGUgY29udGVudCBoYXMgYmVlbiBhdXRvZmlsbGVk
CiAgICAgLy8gVGhpcyBhbGxvd3MgV2ViS2l0IHRvIG9iZXkgdGhlIC13ZWJraXQtYXV0b2ZpbGwg
cHNldWRvIHN0eWxlLCB3aGljaAogICAgIC8vIGNoYW5nZXMgdGhlIGJhY2tncm91bmQgY29sb3Iu
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gW3NlbGYgX0hUTUxJbnB1dEVs
ZW1lbnRdOworICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IFtz
ZWxmIF9IVE1MSW5wdXRFbGVtZW50XTsKICAgICBpZiAoaW5wdXRFbGVtZW50KQogICAgICAgICBp
bnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoZmlsbGVkKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01JbnRlcm5hbC5oCShyZXZpc2lvbiAxNjQzNCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQXR0cjsKICAgICBjbGFzcyBDREFUQVNlY3Rpb247
CisgICAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiAgICAgY2xhc3MgQ1NTUnVsZTsKICAgICBj
bGFzcyBDU1NSdWxlTGlzdDsKICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpAQCAtMjAx
LDEwICsyMDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAtIChXZWJDb3JlOjpEb2N1bWVudCAq
KV9kb2N1bWVudDsKIEBlbmQKIAotQGludGVyZmFjZSBET01Eb2N1bWVudCAoV2ViQ29yZUludGVy
bmFsRXh0ZW5zaW9uKQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1lbnQ7Ci1AZW5kCi0KIEBp
bnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aDooV2ViQ29yZTo6RG9jdW1lbnRG
cmFnbWVudCAqKWltcGw7CiAtIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50
RnJhZ21lbnQ7CkBAIC0yOTMsNiArMjkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQGVuZAog
CiBAaW50ZXJmYWNlIERPTUNTU1ByaW1pdGl2ZVZhbHVlIChXZWJDb3JlSW50ZXJuYWwpCistIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZSAqKV9DU1NQcmltaXRpdmVWYWx1ZTsKICsgKERPTUNT
U1ByaW1pdGl2ZVZhbHVlICopX0NTU1ByaW1pdGl2ZVZhbHVlV2l0aDooV2ViQ29yZTo6Q1NTVmFs
dWUgKilpbXBsOwogQGVuZAogCkBAIC00MjMsMTkgKzQyMSwyMCBAQCBpbmxpbmUgdm9pZCByYWlz
ZU9uRE9NRXJyb3IoV2ViQ29yZTo6RXhjCiAgICAgICAgIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2xhc3MgV2ViQ29yZTo6dHlwZSo+KHApOyB9CiAKIC8vIE5vIGNsYXNzIHNob3VsZCBhcHBl
YXIgaW4gdGhpcyBsaXN0IGlmIGl0cyBiYXNlIGNsYXNzIGlzIGFscmVhZHkgaGVyZS4KLUFMTE9X
X0RPTV9DQVNUKENvdW50ZXIpCiBBTExPV19ET01fQ0FTVChDU1NSdWxlKQogQUxMT1dfRE9NX0NB
U1QoQ1NTUnVsZUxpc3QpCiBBTExPV19ET01fQ0FTVChDU1NTdHlsZURlY2xhcmF0aW9uKQogQUxM
T1dfRE9NX0NBU1QoQ1NTU3R5bGVTaGVldCkKIEFMTE9XX0RPTV9DQVNUKENTU1ZhbHVlKQorQUxM
T1dfRE9NX0NBU1QoQ291bnRlcikKIEFMTE9XX0RPTV9DQVNUKERPTUltcGxlbWVudGF0aW9uRnJv
bnQpCitBTExPV19ET01fQ0FTVChFdmVudCkKIEFMTE9XX0RPTV9DQVNUKEhUTUxDb2xsZWN0aW9u
KQogQUxMT1dfRE9NX0NBU1QoSFRNTE9wdGlvbnNDb2xsZWN0aW9uKQogQUxMT1dfRE9NX0NBU1Qo
TWVkaWFMaXN0KQogQUxMT1dfRE9NX0NBU1QoTmFtZWROb2RlTWFwKQotQUxMT1dfRE9NX0NBU1Qo
Tm9kZUZpbHRlcikKIEFMTE9XX0RPTV9DQVNUKE5vZGUpCitBTExPV19ET01fQ0FTVChOb2RlRmls
dGVyKQogQUxMT1dfRE9NX0NBU1QoTm9kZUl0ZXJhdG9yKQogQUxMT1dfRE9NX0NBU1QoTm9kZUxp
c3QpCiBBTExPV19ET01fQ0FTVChSYW5nZSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0
LmgJKHJldmlzaW9uIDE2NDM0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSwzMyArMjUsMTIgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FeGNlcHRpb24uaD4K
IAogQGNsYXNzIERPTVN0eWxlU2hlZXQ7CiAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIERP
TVRpbWVTdGFtcDsKIAotZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXhjZXB0aW9uOwotCi0v
LyBET00gZXhjZXB0aW9uIGNvZGVzCi1lbnVtIHsKLSAgICBET01fSU5ERVhfU0laRV9FUlIgICAg
ICAgICAgICAgICAgPSAxLAotICAgIERPTV9ET01TVFJJTkdfU0laRV9FUlIgICAgICAgICAgICA9
IDIsCi0gICAgRE9NX0hJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICAgICAgID0gMywKLSAgICBET01f
V1JPTkdfRE9DVU1FTlRfRVJSICAgICAgICAgICAgPSA0LAotICAgIERPTV9JTlZBTElEX0NIQVJB
Q1RFUl9FUlIgICAgICAgICA9IDUsCi0gICAgRE9NX05PX0RBVEFfQUxMT1dFRF9FUlIgICAgICAg
ICAgID0gNiwKLSAgICBET01fTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSICAgPSA3LAotICAg
IERPTV9OT1RfRk9VTkRfRVJSICAgICAgICAgICAgICAgICA9IDgsCi0gICAgRE9NX05PVF9TVVBQ
T1JURURfRVJSICAgICAgICAgICAgID0gOSwKLSAgICBET01fSU5VU0VfQVRUUklCVVRFX0VSUiAg
ICAgICAgICAgPSAxMCwKLSAgICBET01fSU5WQUxJRF9TVEFURV9FUlIgICAgICAgICAgICAgPSAx
MSwKLSAgICBET01fU1lOVEFYX0VSUiAgICAgICAgICAgICAgICAgICAgPSAxMiwKLSAgICBET01f
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICAgICAgPSAxMywKLSAgICBET01fTkFNRVNQQUNFX0VS
UiAgICAgICAgICAgICAgICAgPSAxNCwKLSAgICBET01fSU5WQUxJRF9BQ0NFU1NfRVJSICAgICAg
ICAgICAgPSAxNQotfTsKLQotCiB0eXBlZGVmIHN0cnVjdCBET01PYmplY3RJbnRlcm5hbCBET01P
YmplY3RJbnRlcm5hbDsKIAogQGludGVyZmFjZSBET01PYmplY3QgOiBXZWJTY3JpcHRPYmplY3Qg
PE5TQ29weWluZz4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAkocmV2aXNpb24g
MTY0MzQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxTdHlsZUVsZW1l
bnRQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxUZXh0QXJlYUVsZW1lbnRQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUtleWJvYXJkRXZlbnRQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RPTU1vdXNlRXZlbnRQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RP
TU5vZGVJdGVyYXRvclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ET01VSUV2ZW50UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
T01XaGVlbEV2ZW50UHJpdmF0ZS5oPgpAQCAtNjIsMTUgKzY0LDYgQEAKIC0gKE5TU3RyaW5nICop
X3RleHQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9NUkdCQ29sb3IgKFdlYlByaXZhdGUpCi0vLyBm
YXN0IGFuZCBlYXN5IHdheSBvZiBnZXR0aW5nIGFuIE5TQ29sb3IgZm9yIGEgRE9NUkdCQ29sb3IK
LS0gKE5TQ29sb3IgKilfY29sb3I7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm9kZSAoV2ViUHJp
dmF0ZSkKLS0gKEJPT0wpaXNDb250ZW50RWRpdGFibGU7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9N
RWxlbWVudCAoV2ViUHJpdmF0ZSkKIC0gKE5TRm9udCAqKV9mb250OwogLSAoTlNEYXRhICopX2lt
YWdlVElGRlJlcHJlc2VudGF0aW9uOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJh
bmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJKHJl
dmlzaW9uIDE2NDM0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDIwICsyOCwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAotZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgRE9NUmFuZ2VFeGNlcHRpb247CisjaW1wb3J0IDxXZWJDb3JlL0RPTVJhbmdlRXhjZXB0
aW9uLmg+CiAKKy8vIERPTSBSYW5nZSBjb21wYXJpc29uIGNvZGVzCiBlbnVtIHsKLSAgICAvLwot
ICAgIC8vIERPTSByYW5nZSBleGNlcHRpb24gY29kZXMKLSAgICAvLwotICAgIERPTV9CQURfQk9V
TkRBUllQT0lOVFNfRVJSICAgICAgICA9IDEsCi0gICAgRE9NX0lOVkFMSURfTk9ERV9UWVBFX0VS
UiAgICAgICAgID0gMgotfTsKLQotZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gUmFuZ2UgY29t
cGFyaXNvbiBjb2RlcwotICAgIC8vCiAgICAgRE9NX1NUQVJUX1RPX1NUQVJUICAgICAgICAgICAg
ICAgID0gMCwKICAgICBET01fU1RBUlRfVE9fRU5EICAgICAgICAgICAgICAgICAgPSAxLAogICAg
IERPTV9FTkRfVE9fRU5EICAgICAgICAgICAgICAgICAgICA9IDIsCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NUmFuZ2VFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NUmFuZ2VFeGNlcHRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01SYW5nZUV4Y2VwdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBET01SYW5nZUV4Y2VwdGlvbjsKKworZW51bSBET01SYW5nZUV4Y2VwdGlvbkNvZGUgewor
ICAgIERPTV9CQURfQk9VTkRBUllQT0lOVFNfRVJSICAgICAgICA9IDEsCisgICAgRE9NX0lOVkFM
SURfTk9ERV9UWVBFX0VSUiAgICAgICAgID0gMgorfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01WaWV3cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01W
aWV3cy5oCShyZXZpc2lvbiAxNjQzNCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw0IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RP
TURvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCi1AaW50ZXJmYWNl
IERPTUFic3RyYWN0VmlldyA6IERPTU9iamVjdAotLSAoRE9NRG9jdW1lbnQgKilkb2N1bWVudDsK
LUBlbmQKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQWJzdHJhY3RWaWV3Lmg+CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NVmlld3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTVZpZXdzLm1tCShyZXZpc2lvbiAxNjQzNCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01WaWV3cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTVZpZXdzLmgiCi0K
LSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAi
RE9NV2luZG93LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICB0eXBlZGVmIERPTVdpbmRv
dyBBYnN0cmFjdFZpZXc7Ci19Ci0KLUFMTE9XX0RPTV9DQVNUKERPTVdpbmRvdykKLQotQGltcGxl
bWVudGF0aW9uIERPTUFic3RyYWN0VmlldwotCi0tIChET01Eb2N1bWVudCAqKWRvY3VtZW50Ci17
Ci0gICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9hYnN0cmFjdFZp
ZXddLT5kb2N1bWVudCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NQWJzdHJh
Y3RWaWV3IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKFdlYkNvcmU6OkFic3RyYWN0VmlldyAqKV9h
YnN0cmFjdFZpZXcKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29yZTo6QWJzdHJhY3RWaWV3
ICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKGlkKV9pbml0V2l0aEFic3RyYWN0VmlldzooV2ViQ29y
ZTo6QWJzdHJhY3RWaWV3ICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBl
ciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4o
aW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsK
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NQWJzdHJhY3RWaWV3ICopX2Fic3RyYWN0Vmll
d1dpdGg6KFdlYkNvcmU6OkFic3RyYWN0VmlldyAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2Fj
aGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5j
ZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgCi0gICAgcmV0dXJuIFtbW0RPTUFic3RyYWN0VmlldyBhbGxvY10gX2luaXRXaXRoQWJz
dHJhY3RWaWV3OmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTVhQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVhQYXRoLmgJKHJldmlzaW9uIDE2NDM0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVhQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTURvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCisj
aW1wb3J0IDxXZWJDb3JlL0RPTVhQYXRoRXhjZXB0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RP
TVhQYXRoRXhwcmVzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01YUGF0aE5TUmVzb2x2ZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NWFBhdGhSZXN1bHQuaD4KLQotZXh0ZXJuIE5TU3RyaW5n
ICogY29uc3QgRE9NWFBhdGhFeGNlcHRpb247Ci0KLWVudW0gRE9NWFBhdGhFeGNlcHRpb25Db2Rl
IHsKLSAgICBET01fSU5WQUxJRF9FWFBSRVNTSU9OX0VSUiA9IDUxLAotICAgIERPTV9UWVBFX0VS
UiA9IDUyCi19OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhjZXB0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhjZXB0aW9u
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGhFeGNlcHRp
b24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NWFBhdGhFeGNlcHRpb247CisKK2Vu
dW0gRE9NWFBhdGhFeGNlcHRpb25Db2RlIHsKKyAgICBET01fSU5WQUxJRF9FWFBSRVNTSU9OX0VS
UiAgICAgID0gNTEsCisgICAgRE9NX1RZUEVfRVJSICAgICAgICAgICAgICAgICAgICA9IDUyCit9
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAxNjQz
NCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDM2NSArNDQsMzYzIEBAIG15ICRkb2N1bWVudCA9IDA7ICMgV2lsbCBob2xkIHRo
ZSByZXN1bHQKICMgRGVmYXVsdCBDb25zdHJ1Y3Rvcgogc3ViIG5ldwogewotICBteSAkb2JqZWN0
ID0gc2hpZnQ7Ci0gIG15ICRyZWZlcmVuY2UgPSB7IH07CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0
OworICAgIG15ICRyZWZlcmVuY2UgPSB7IH07CiAKLSAgJGRvY3VtZW50ID0gMDsKLSAgJGJlUXVp
ZXQgPSBzaGlmdDsKKyAgICAkZG9jdW1lbnQgPSAwOworICAgICRiZVF1aWV0ID0gc2hpZnQ7CiAK
LSAgYmxlc3MoJHJlZmVyZW5jZSwgJG9iamVjdCk7Ci0gIHJldHVybiAkcmVmZXJlbmNlOworICAg
IGJsZXNzKCRyZWZlcmVuY2UsICRvYmplY3QpOworICAgIHJldHVybiAkcmVmZXJlbmNlOwogfQog
CiAjIFJldHVybnMgdGhlIHBhcnNlZCAnaWRsRG9jdW1lbnQnCiBzdWIgUGFyc2UKIHsKLSAgbXkg
JG9iamVjdCA9IHNoaWZ0OwotICBteSAkZmlsZU5hbWUgPSBzaGlmdDsKLSAgbXkgJGRlZmluZXMg
PSBzaGlmdDsKLSAgCi0gIHByaW50ICIgfCAqKiogU3RhcnRpbmcgdG8gcGFyc2UgJGZpbGVOYW1l
Li4uXG4gfFxuIiBpZighJGJlUXVpZXQpOworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBt
eSAkZmlsZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkZGVmaW5lcyA9IHNoaWZ0OworCisgICAgcHJp
bnQgIiB8ICoqKiBTdGFydGluZyB0byBwYXJzZSAkZmlsZU5hbWUuLi5cbiB8XG4iIHVubGVzcyAk
YmVRdWlldDsKKworICAgIG9wZW4gRklMRSwgIi18IiwgIi91c3IvYmluL2djYyIsICItRSIsICIt
UCIsICIteCIsICJjKysiLCAKKyAgICAgICAgKG1hcCB7ICItRCRfIiB9IHNwbGl0KC8gLywgJGRl
ZmluZXMpKSwgJGZpbGVOYW1lIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJGZpbGVOYW1lIjsKKyAg
ICBteSBAZG9jdW1lbnRDb250ZW50ID0gPEZJTEU+OworICAgIGNsb3NlIEZJTEU7CisKKyAgICBt
eSAkZGF0YUF2YWlsYWJsZSA9IDA7CisKKyAgICAjIFNpbXBsZSBJREwgUGFyc2VyICh0bSkKKyAg
ICBmb3JlYWNoIChAZG9jdW1lbnRDb250ZW50KSB7CisgICAgICAgIG15ICRuZXdQYXJzZU1vZGUg
PSAkb2JqZWN0LT5EZXRlcm1pbmVQYXJzZU1vZGUoJF8pOworCisgICAgICAgIGlmICgkbmV3UGFy
c2VNb2RlIG5lIE1PREVfVU5ERUYpIHsKKyAgICAgICAgICAgIGlmICgkZGF0YUF2YWlsYWJsZSBl
cSAwKSB7CisgICAgICAgICAgICAgICAgJGRhdGFBdmFpbGFibGUgPSAxOyAjIFN0YXJ0IG5vZGUg
YnVpbGRpbmcuLi4KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJG9iamVj
dC0+UHJvY2Vzc1NlY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gIG9wZW4g
RklMRSwgIi18IiwgIi91c3IvYmluL2djYyIsICItRSIsICItUCIsICIteCIsICJjKysiLCAKLSAg
ICAgIChtYXAgeyAiLUQkXyIgfSBzcGxpdCgvIC8sICRkZWZpbmVzKSksICRmaWxlTmFtZSBvciBk
aWUgIkNvdWxkIG5vdCBvcGVuICRmaWxlTmFtZSI7Ci0gIG15IEBkb2N1bWVudENvbnRlbnQgPSA8
RklMRT47Ci0gIGNsb3NlIEZJTEU7Ci0KLSAgbXkgJGRhdGFBdmFpbGFibGUgPSAwOwotCi0gICMg
U2ltcGxlIElETCBQYXJzZXIgKHRtKQotICBmb3JlYWNoKEBkb2N1bWVudENvbnRlbnQpIHsKLSAg
ICBteSAkbmV3UGFyc2VNb2RlID0gJG9iamVjdC0+RGV0ZXJtaW5lUGFyc2VNb2RlKCRfKTsKLQot
ICAgIGlmKCRuZXdQYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgewotICAgICAgaWYoJGRhdGFBdmFp
bGFibGUgZXEgMCkgewotICAgICAgICAkZGF0YUF2YWlsYWJsZSA9IDE7ICMgU3RhcnQgbm9kZSBi
dWlsZGluZy4uLgotICAgICAgfSBlbHNlIHsKLSAgICAgICAgJG9iamVjdC0+UHJvY2Vzc1NlY3Rp
b24oKTsKLSAgICAgIH0KLSAgICB9CisgICAgICAgICMgVXBkYXRlIGRldGVjdGVkIGRhdGEgc3Ry
ZWFtIG1vZGUuLi4KKyAgICAgICAgaWYgKCRuZXdQYXJzZU1vZGUgbmUgTU9ERV9VTkRFRikgewor
ICAgICAgICAgICAgJHBhcnNlTW9kZSA9ICRuZXdQYXJzZU1vZGU7CisgICAgICAgIH0KIAotICAg
ICMgVXBkYXRlIGRldGVjdGVkIGRhdGEgc3RyZWFtIG1vZGUuLi4KLSAgICBpZigkbmV3UGFyc2VN
b2RlIG5lIE1PREVfVU5ERUYpIHsKLSAgICAgICRwYXJzZU1vZGUgPSAkbmV3UGFyc2VNb2RlOwor
ICAgICAgICBwdXNoKEB0ZW1wb3JhcnlDb250ZW50LCAkXyk7CiAgICAgfQogCi0gICAgcHVzaChA
dGVtcG9yYXJ5Q29udGVudCwgJF8pOwotICB9CisgICAgIyBDaGVjayBpZiB0aGVyZSBpcyBhbnl0
aGluZyByZW1haW5pbmcgdG8gcGFyc2UuLi4KKyAgICBpZiAoKCRwYXJzZU1vZGUgbmUgTU9ERV9V
TkRFRikgYW5kICgkI3RlbXBvcmFyeUNvbnRlbnQgPiAwKSkgeworICAgICAgICAkb2JqZWN0LT5Q
cm9jZXNzU2VjdGlvbigpOworICAgIH0KIAotICAjIENoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5n
IHJlbWFpbmluZyB0byBwYXJzZS4uLgotICBpZigoJHBhcnNlTW9kZSBuZSBNT0RFX1VOREVGKSBh
bmQgKCQjdGVtcG9yYXJ5Q29udGVudCA+IDApKSB7Ci0gICAgJG9iamVjdC0+UHJvY2Vzc1NlY3Rp
b24oKTsKLSAgfQorICAgIHByaW50ICIgfCAqKiogRmluaXNoZWQgcGFyc2luZyFcbiIgdW5sZXNz
ICRiZVF1aWV0OworIAorICAgICRkb2N1bWVudC0+ZmlsZU5hbWUoJGZpbGVOYW1lKTsKIAotICBw
cmludCAiIHwgKioqIEZpbmlzaGVkIHBhcnNpbmchXG4iIGlmKCEkYmVRdWlldCk7Ci0gIAotICAk
ZG9jdW1lbnQtPmZpbGVOYW1lKCRmaWxlTmFtZSk7Ci0gIAotICByZXR1cm4gJGRvY3VtZW50Owor
ICAgIHJldHVybiAkZG9jdW1lbnQ7CiB9CiAKIHN1YiBQYXJzZU1vZHVsZQogewotICBteSAkb2Jq
ZWN0ID0gc2hpZnQ7Ci0gIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRvYmplY3QgPSBz
aGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKIAotICBwcmludCAiIHwtIFRyeWluZyB0
byBwYXJzZSBtb2R1bGUuLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICBwcmludCAiIHwtIFRyeWlu
ZyB0byBwYXJzZSBtb2R1bGUuLi5cbiIgdW5sZXNzICRiZVF1aWV0OwogCi0gIG15ICRkYXRhID0g
am9pbigiIiwgQHRlbXBvcmFyeUNvbnRlbnQpOwotICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6
bW9kdWxlU2VsZWN0b3IvOworICAgIG15ICRkYXRhID0gam9pbigiIiwgQHRlbXBvcmFyeUNvbnRl
bnQpOworICAgICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjptb2R1bGVTZWxlY3Rvci87CiAKLSAg
bXkgJG1vZHVsZU5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRkYXRhXG4pIikpOwotICAkZGF0YU5vZGUtPm1vZHVsZSgkbW9kdWxlTmFtZSk7
CisgICAgbXkgJG1vZHVsZU5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICRkYXRhTm9kZS0+bW9kdWxlKCRtb2R1
bGVOYW1lKTsKIAotICBwcmludCAiICB8LS0tLT4gTW9kdWxlOyBOQU1FIFwiJG1vZHVsZU5hbWVc
IlxuIHwtXG4gfFxuIiBpZighJGJlUXVpZXQpOworICAgIHByaW50ICIgIHwtLS0tPiBNb2R1bGU7
IE5BTUUgXCIkbW9kdWxlTmFtZVwiXG4gfC1cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsKIH0KIAog
c3ViIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMKIHsKLSAgbXkgJHBhZFN0ciA9IHNoaWZ0OwotICBt
eSAkYXR0cnMgPSBzaGlmdDsKKyAgICBteSAkcGFkU3RyID0gc2hpZnQ7CisgICAgbXkgJGF0dHJz
ID0gc2hpZnQ7CiAKLSAgaWYgKCEleyRhdHRyc30pIHsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLQot
ICBteSBAdGVtcDsKLSAgd2hpbGUgKCgkbmFtZSwgJHZhbHVlKSA9IGVhY2goJXskYXR0cnN9KSkg
ewotICAgIHB1c2goQHRlbXAsICIkbmFtZT0kdmFsdWUiKTsKLSAgfQotICAKLSAgcmV0dXJuICRw
YWRTdHIgLiAiWyIgLiBqb2luKCIsICIsIEB0ZW1wKSAuICJdIjsKKyAgICBpZiAoISV7JGF0dHJz
fSkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgbXkgQHRlbXA7CisgICAgd2hp
bGUgKCgkbmFtZSwgJHZhbHVlKSA9IGVhY2goJXskYXR0cnN9KSkgeworICAgICAgICBwdXNoKEB0
ZW1wLCAiJG5hbWU9JHZhbHVlIik7CisgICAgfQorCisgICAgcmV0dXJuICRwYWRTdHIgLiAiWyIg
LiBqb2luKCIsICIsIEB0ZW1wKSAuICJdIjsKIH0KIAogc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1
dGVzCiB7Ci0gIG15ICRzdHIgPSBzaGlmdDsKLSAgJHN0ciA9fiBzL1xbXHMqKC4qKVxdLyQxL2c7
Ci0gIAotICBteSAlYXR0cnMgPSAoKTsKLSAgCi0gIGZvcmVhY2ggbXkgJHZhbHVlIChzcGxpdCgv
XHMqLFxzKi8sICRzdHIpKSB7Ci0gICAgKCRuYW1lLCR2YWx1ZSkgPSBzcGxpdCgvXHMqPVxzKi8s
JHZhbHVlLDIpOworICAgIG15ICRzdHIgPSBzaGlmdDsKKyAgICAkc3RyID1+IHMvXFtccyooLiop
XF0vJDEvZzsKIAotICAgICMgQXR0cmlidXRlcyB3aXRoIG5vIHZhbHVlIGFyZSBzZXQgdG8gYmUg
dHJ1ZQotICAgICR2YWx1ZSA9IDEgdW5sZXNzIGRlZmluZWQgJHZhbHVlOwotICAgICRhdHRyc3sk
bmFtZX0gPSAkdmFsdWU7Ci0gIH0KLSAgCi0gIHJldHVybiBcJWF0dHJzOworICAgIG15ICVhdHRy
cyA9ICgpOworCisgICAgZm9yZWFjaCBteSAkdmFsdWUgKHNwbGl0KC9ccyosXHMqLywgJHN0cikp
IHsKKyAgICAgICAgKCRuYW1lLCR2YWx1ZSkgPSBzcGxpdCgvXHMqPVxzKi8sICR2YWx1ZSwgMik7
CisKKyAgICAgICAgIyBBdHRyaWJ1dGVzIHdpdGggbm8gdmFsdWUgYXJlIHNldCB0byBiZSB0cnVl
CisgICAgICAgICR2YWx1ZSA9IDEgdW5sZXNzIGRlZmluZWQgJHZhbHVlOworICAgICAgICAkYXR0
cnN7JG5hbWV9ID0gJHZhbHVlOworICAgIH0KKworICAgIHJldHVybiBcJWF0dHJzOwogfQogCiBz
dWIgUGFyc2VJbnRlcmZhY2UKIHsKLSAgbXkgJG9iamVjdCA9IHNoaWZ0OwotICBteSAkZGF0YU5v
ZGUgPSBzaGlmdDsKLSAgbXkgJHNlY3Rpb25OYW1lID0gc2hpZnQ7CisgICAgbXkgJG9iamVjdCA9
IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRzZWN0aW9uTmFtZSA9
IHNoaWZ0OworCisgICAgbXkgJGRhdGEgPSBqb2luKCIiLCBAdGVtcG9yYXJ5Q29udGVudCk7CisK
KyAgICAjIExvb2sgZm9yIGVuZC1vZi1pbnRlcmZhY2UgbWFyaworICAgICRkYXRhID1+IC99Oy9n
OworICAgICRkYXRhID0gc3Vic3RyKCRkYXRhLCBpbmRleCgkZGF0YSwgJHNlY3Rpb25OYW1lKSwg
cG9zKCRkYXRhKSAtIGxlbmd0aCgkZGF0YSkpOworCisgICAgJGRhdGEgPX4gcy9bXG5ccl0vL2c7
CisKKyAgICAjIEJlZ2lubmluZyBvZiB0aGUgcmVnZXhwIHBhcnNpbmcgbWFnaWMKKyAgICBpZiAo
JHNlY3Rpb25OYW1lIGVxICJleGNlcHRpb24iKSB7CisgICAgICAgIHByaW50ICIgfC0gVHJ5aW5n
IHRvIHBhcnNlIGV4Y2VwdGlvbi4uLlxuIiB1bmxlc3MgJGJlUXVpZXQ7CisKKyAgICAgICAgbXkg
JGV4Y2VwdGlvbk5hbWUgPSAiIjsKKyAgICAgICAgbXkgJGV4Y2VwdGlvbkRhdGEgPSAiIjsKKyAg
ICAgICAgbXkgJGV4Y2VwdGlvbkRhdGFOYW1lID0gIiI7CisgICAgICAgIG15ICRleGNlcHRpb25E
YXRhVHlwZSA9ICIiOworCisgICAgICAgICMgTWF0Y2ggaWRlbnRpZmllciBvZiB0aGUgZXhjZXB0
aW9uLCBhbmQgZW5jbG9zZWQgZGF0YS4uLgorICAgICAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVy
ZTo6ZXhjZXB0aW9uU2VsZWN0b3IvOworICAgICAgICAkZXhjZXB0aW9uTmFtZSA9IChkZWZpbmVk
KCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7Cisg
ICAgICAgICRleGNlcHRpb25EYXRhID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcg
ZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKIAotICBteSAkZGF0YSA9IGpvaW4oIiIsIEB0
ZW1wb3JhcnlDb250ZW50KTsKKyAgICAgICAgKCcnID1+IC9eLyk7ICMgUmVzZXQgdmFyaWFibGVz
IG5lZWRlZCBmb3IgcmVnZXhwIG1hdGNoaW5nCiAKLSAgIyBMb29rIGZvciBlbmQtb2YtaW50ZXJm
YWNlIG1hcmsKLSAgJGRhdGEgPX4gL307L2c7Ci0gICRkYXRhID0gc3Vic3RyKCRkYXRhLCBpbmRl
eCgkZGF0YSwgJHNlY3Rpb25OYW1lKSwgcG9zKCRkYXRhKSAtIGxlbmd0aCgkZGF0YSkpOworICAg
ICAgICAjIC4uLiBwYXJzZSBlbmNsb3NlZCBkYXRhIChnZXQuIG5hbWUgJiB0eXBlKQorICAgICAg
ICAkZXhjZXB0aW9uRGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU3ViU2VsZWN0b3Iv
OworICAgICAgICAkZXhjZXB0aW9uRGF0YVR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgi
UGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAgICAkZXhjZXB0aW9u
RGF0YU5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJj
ZTpcbiRkYXRhXG4pIikpOwogCi0gICRkYXRhID1+IHMvW1xuXHJdLy9nOworICAgICAgICAjIEZp
bGwgaW4gZG9tQ2xhc3MgZGF0YXN0cnVjdHVyZQorICAgICAgICAkZGF0YU5vZGUtPm5hbWUoJGV4
Y2VwdGlvbk5hbWUpOwogCi0gICMgQmVnaW5uaW5nIG9mIHRoZSByZWdleHAgcGFyc2luZyBtYWdp
YwotICBpZigkc2VjdGlvbk5hbWUgZXEgImV4Y2VwdGlvbiIpIHsKLSAgICBwcmludCAiIHwtIFRy
eWluZyB0byBwYXJzZSBleGNlcHRpb24uLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAgbXkg
JG5ld0RhdGFOb2RlID0gbmV3IGRvbUF0dHJpYnV0ZSgpOworICAgICAgICAkbmV3RGF0YU5vZGUt
PnR5cGUoInJlYWRvbmx5IGF0dHJpYnV0ZSIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOworCisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0
dXJlLT5uYW1lKCRleGNlcHRpb25EYXRhTmFtZSk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2ln
bmF0dXJlLT50eXBlKCRleGNlcHRpb25EYXRhVHlwZSk7CiAKLSAgICBteSAkZXhjZXB0aW9uTmFt
ZSA9ICIiOyBteSAkZXhjZXB0aW9uRGF0YSA9ICIiOwotICAgIG15ICRleGNlcHRpb25EYXRhTmFt
ZSA9ICIiOyBteSAkZXhjZXB0aW9uRGF0YVR5cGUgPSAiIjsKKyAgICAgICAgbXkgJGFycmF5UmVm
ID0gJGRhdGFOb2RlLT5hdHRyaWJ1dGVzOworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRuZXdE
YXRhTm9kZSk7CisKKyAgICAgICAgcHJpbnQgIiAgfC0tLS0+IEV4Y2VwdGlvbjsgTkFNRSBcIiRl
eGNlcHRpb25OYW1lXCIgREFUQSBUWVBFIFwiJGV4Y2VwdGlvbkRhdGFUeXBlXCIgREFUQSBOQU1F
IFwiJGV4Y2VwdGlvbkRhdGFOYW1lXCJcbiB8LVxuIHxcbiIgdW5sZXNzICRiZVF1aWV0OworICAg
IH0gZWxzaWYgKCRzZWN0aW9uTmFtZSBlcSAiaW50ZXJmYWNlIikgeworICAgICAgICBwcmludCAi
IHwtIFRyeWluZyB0byBwYXJzZSBpbnRlcmZhY2UuLi5cbiIgdW5sZXNzICRiZVF1aWV0OworCisg
ICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gIiI7CisgICAgICAgIG15ICRpbnRlcmZhY2VEYXRh
ID0gIiI7CisKKyAgICAgICAgIyBNYXRjaCBpZGVudGlmaWVyIG9mIHRoZSBpbnRlcmZhY2UsIGFu
ZCBlbmNsb3NlZCBkYXRhLi4uCisgICAgICAgICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjppbnRl
cmZhY2VTZWxlY3Rvci87CisKKyAgICAgICAgJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyA9
IChkZWZpbmVkKCQxKSA/ICQxIDogIiAiKTsgY2hvcCgkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1
dGVzKTsKKyAgICAgICAgJGludGVyZmFjZU5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgi
UGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAgICAkaW50ZXJmYWNl
QmFzZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogIiIpOworICAgICAgICAkaW50ZXJmYWNlRGF0YSA9
IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFc
bikiKSk7CisKKyAgICAgICAgIyBGaWxsIGluIGtub3duIHBhcnRzIG9mIHRoZSBkb21DbGFzcyBk
YXRhc3RydWN0dXJlIG5vdy4uLgorICAgICAgICAkZGF0YU5vZGUtPm5hbWUoJGludGVyZmFjZU5h
bWUpOworICAgICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVk
QXR0cmlidXRlcygkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CisKKyAgICAgICAgIyBJ
bmhlcml0YW5jZSBkZXRlY3Rpb24KKyAgICAgICAgbXkgQGludGVyZmFjZVBhcmVudHMgPSBzcGxp
dCgvLC8sICRpbnRlcmZhY2VCYXNlKTsKKyAgICAgICAgZm9yZWFjaChAaW50ZXJmYWNlUGFyZW50
cykgeworICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsKKyAgICAgICAgICAgICRsaW5lID1+IHMv
XHMqLy9nOworCisgICAgICAgICAgICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPnBhcmVudHM7
CisgICAgICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRsaW5lKTsKKyAgICAgICAgfQorCisgICAg
ICAgICRpbnRlcmZhY2VEYXRhID1+IHMvW1xuXHJdLy9nOworICAgICAgICBteSBAaW50ZXJmYWNl
TWV0aG9kcyA9IHNwbGl0KC87LywgJGludGVyZmFjZURhdGEpOworCisgICAgICAgIGZvcmVhY2gg
bXkgJGxpbmUgKEBpbnRlcmZhY2VNZXRob2RzKSB7CisgICAgICAgICAgICBpZiAoJGxpbmUgPX4g
L2F0dHJpYnV0ZS8pIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6
aW50ZXJmYWNlQXR0cmlidXRlU2VsZWN0b3IvOworCisgICAgICAgICAgICAgICAgbXkgJGF0dHJp
YnV0ZVR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJj
ZTpcbiRsaW5lXG4pIikpOworICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVFeHRlbmRlZEF0
dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMikgPyAkMiA6ICIgIik7IGNob3AoJGF0dHJpYnV0ZUV4dGVu
ZGVkQXR0cmlidXRlcyk7CisKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlRGF0YVR5cGUg
PSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOworICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVEYXRhTmFtZSA9IChkZWZpbmVk
KCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAg
IAotICAgICMgTWF0Y2ggaWRlbnRpZmllciBvZiB0aGUgZXhjZXB0aW9uLCBhbmQgZW5jbG9zZWQg
ZGF0YS4uLgotICAgICRkYXRhID1+IC8kSURMU3RydWN0dXJlOjpleGNlcHRpb25TZWxlY3Rvci87
Ci0gICAgJGV4Y2VwdGlvbk5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiUGFyc2luZyBl
cnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotICAgICRleGNlcHRpb25EYXRhID0gKGRlZmlu
ZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsK
LQotICAgICgnJyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBt
YXRjaGluZwotCi0gICAgIyAuLi4gcGFyc2UgZW5jbG9zZWQgZGF0YSAoZ2V0LiBuYW1lICYgdHlw
ZSkKLSAgICAkZXhjZXB0aW9uRGF0YSA9fiAvJElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU3ViU2Vs
ZWN0b3IvOwotICAgICRleGNlcHRpb25EYXRhVHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGll
KCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7Ci0gICAgJGV4Y2VwdGlvbkRh
dGFOYW1lID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6
XG4kZGF0YVxuKSIpKTsKLQotICAgICMgRmlsbCBpbiBkb21DbGFzcyBkYXRhc3RydWN0dXJlCi0g
ICAgJGRhdGFOb2RlLT5uYW1lKCRleGNlcHRpb25OYW1lKTsKLQotICAgIG15ICRuZXdEYXRhTm9k
ZSA9IG5ldyBkb21BdHRyaWJ1dGUoKTsKLSAgICAkbmV3RGF0YU5vZGUtPnR5cGUoInJlYWRvbmx5
IGF0dHJpYnV0ZSIpOwotICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1
cmUoKSk7Ci0KLSAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkZXhjZXB0aW9uRGF0
YU5hbWUpOwotICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRleGNlcHRpb25EYXRh
VHlwZSk7Ci0gICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmhhc1B0ckZsYWcoMCk7Ci0KLSAg
ICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPmF0dHJpYnV0ZXM7Ci0gICAgcHVzaChAJGFycmF5
UmVmLCAkbmV3RGF0YU5vZGUpOwotCi0gICAgcHJpbnQgIiAgfC0tLS0+IEV4Y2VwdGlvbjsgTkFN
RSBcIiRleGNlcHRpb25OYW1lXCIgREFUQSBUWVBFIFwiJGV4Y2VwdGlvbkRhdGFUeXBlXCIgREFU
QSBOQU1FIFwiJGV4Y2VwdGlvbkRhdGFOYW1lXCJcbiB8LVxuIHxcbiIgaWYoISRiZVF1aWV0KTsK
LSAgfSBlbHNpZigkc2VjdGlvbk5hbWUgZXEgImludGVyZmFjZSIpIHsKLSAgICBwcmludCAiIHwt
IFRyeWluZyB0byBwYXJzZSBpbnRlcmZhY2UuLi5cbiIgaWYoISRiZVF1aWV0KTsKKyAgICAgICAg
ICAgICAgICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAg
bWF0Y2hpbmcKIAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gIiI7Ci0gICAgbXkgJGludGVyZmFj
ZURhdGEgPSAiIjsKLSAgICAKLSAgICAjIE1hdGNoIGlkZW50aWZpZXIgb2YgdGhlIGludGVyZmFj
ZSwgYW5kIGVuY2xvc2VkIGRhdGEuLi4KLSAgICAkZGF0YSA9fiAvJElETFN0cnVjdHVyZTo6aW50
ZXJmYWNlU2VsZWN0b3IvOwotICAgIAotICAgICRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMg
PSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIgIik7IGNob3AoJGludGVyZmFjZUV4dGVuZGVkQXR0cmli
dXRlcyk7Ci0gICAgJGludGVyZmFjZU5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFy
c2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotICAgICRpbnRlcmZhY2VCYXNlID0g
KGRlZmluZWQoJDMpID8gJDMgOiAiIik7Ci0gICAgJGludGVyZmFjZURhdGEgPSAoZGVmaW5lZCgk
NCkgPyAkNCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwotCi0g
ICAgIyBGaWxsIGluIGtub3duIHBhcnRzIG9mIHRoZSBkb21DbGFzcyBkYXRhc3RydWN0dXJlIG5v
dy4uLgotICAgICRkYXRhTm9kZS0+bmFtZSgkaW50ZXJmYWNlTmFtZSk7Ci0gICAgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4
dGVuZGVkQXR0cmlidXRlcykpOwotCi0gICAgIyBJbmhlcml0YW5jZSBkZXRlY3Rpb24KLSAgICBt
eSBAaW50ZXJmYWNlUGFyZW50cyA9IHNwbGl0KC8sLywgJGludGVyZmFjZUJhc2UpOwotICAgIGZv
cmVhY2goQGludGVyZmFjZVBhcmVudHMpIHsKLSAgICAgIG15ICRsaW5lID0gJF87Ci0gICAgICAk
bGluZSA9fiBzL1xzKi8vZzsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVy
ZTo6Z2V0dGVyUmFpc2VzU2VsZWN0b3IvOworICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJFeGNl
cHRpb24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIiKTsKIAotICAgICAgbXkgJGFycmF5UmVmID0g
JGRhdGFOb2RlLT5wYXJlbnRzOwotICAgICAgcHVzaChAJGFycmF5UmVmLCAkbGluZSk7Ci0gICAg
fQorICAgICAgICAgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpzZXR0ZXJSYWlzZXNT
ZWxlY3Rvci87CisgICAgICAgICAgICAgICAgbXkgJHNldHRlckV4Y2VwdGlvbiA9IChkZWZpbmVk
KCQxKSA/ICQxIDogIiIpOwogCi0gICAgJGludGVyZmFjZURhdGEgPX4gcy9bXG5ccl0vL2c7Ci0g
ICAgbXkgQGludGVyZmFjZU1ldGhvZHMgPSBzcGxpdCgvOy8sICRpbnRlcmZhY2VEYXRhKTsKKyAg
ICAgICAgICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tQXR0cmlidXRlKCk7CisgICAg
ICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT50eXBlKCRhdHRyaWJ1dGVUeXBlKTsKKyAgICAgICAg
ICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOwogCi0g
ICAgZm9yZWFjaChAaW50ZXJmYWNlTWV0aG9kcykgewotICAgICAgbXkgJGxpbmUgPSAkXzsKKyAg
ICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkYXR0cmlidXRlRGF0
YU5hbWUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRh
dHRyaWJ1dGVEYXRhVHlwZSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmlidXRlcygkYXR0cmlidXRl
RXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CiAKLSAgICAgIGlmKCRsaW5lID1+IC9hdHRyaWJ1dGUvKSB7
Ci0gICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VBdHRyaWJ1dGVTZWxl
Y3Rvci87CisgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5hdHRyaWJ1
dGVzOworICAgICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKIAot
ICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJz
aW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRhdHRyaWJ1dGVF
eHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMikgPyAkMiA6ICIgIik7IGNob3AoJGF0dHJp
YnV0ZUV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIAotICAgICAgICBteSAkYXR0cmlidXRl
RGF0YVR5cGUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJj
ZTpcbiRsaW5lXG4pIikpOwotICAgICAgICBteSAkYXR0cmlidXRlRGF0YU5hbWUgPSAoZGVmaW5l
ZCgkNCkgPyAkNCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwot
ICAgICAgICAgIAotICAgICAgICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVk
IGZvciByZWdleHAgbWF0Y2hpbmcKLSAgICAgICAgCi0gICAgICAgICRsaW5lID1+IC8kSURMU3Ry
dWN0dXJlOjpnZXR0ZXJSYWlzZXNTZWxlY3Rvci87Ci0gICAgICAgIG15ICRnZXR0ZXJFeGNlcHRp
b24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIiKTsKLSAgICAgIAotICAgICAgICAkbGluZSA9fiAv
JElETFN0cnVjdHVyZTo6c2V0dGVyUmFpc2VzU2VsZWN0b3IvOwotICAgICAgICBteSAkc2V0dGVy
RXhjZXB0aW9uID0gKGRlZmluZWQoJDEpID8gJDEgOiAiIik7Ci0gICAgICAKLSAgICAgICAgbXkg
JG5ld0RhdGFOb2RlID0gbmV3IGRvbUF0dHJpYnV0ZSgpOwotICAgICAgICAkbmV3RGF0YU5vZGUt
PnR5cGUoJGF0dHJpYnV0ZVR5cGUpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShu
ZXcgZG9tU2lnbmF0dXJlKCkpOworICAgICAgICAgICAgICAgIHByaW50ICIgIHwgIHw+ICBBdHRy
aWJ1dGU7IFRZUEUgXCIkYXR0cmlidXRlVHlwZVwiIERBVEEgTkFNRSBcIiRhdHRyaWJ1dGVEYXRh
TmFtZVwiIERBVEEgVFlQRSBcIiRhdHRyaWJ1dGVEYXRhVHlwZVwiIEdFVCBFWENFUFRJT04/IFwi
JGdldHRlckV4Y2VwdGlvblwiIFNFVCBFWENFUFRJT04/IFwiJHNldHRlckV4Y2VwdGlvblwiIiAu
CisgICAgICAgICAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAg
ICAgICAgICAgICAiLCAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KSAuICJcbiIgdW5sZXNzICRiZVF1aWV0OwogCi0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0
dXJlLT5uYW1lKCRhdHRyaWJ1dGVEYXRhTmFtZSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2ln
bmF0dXJlLT50eXBlKCRhdHRyaWJ1dGVEYXRhVHlwZSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGF0
dHJpYnV0ZUV4dGVuZGVkQXR0cmlidXRlcykpOworICAgICAgICAgICAgICAgICRnZXR0ZXJFeGNl
cHRpb24gPX4gcy9ccysvL2c7CisgICAgICAgICAgICAgICAgJHNldHRlckV4Y2VwdGlvbiA9fiBz
L1xzKy8vZzsKKyAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+Z2V0dGVyRXhjZXB0aW9u
c30gPSBzcGxpdCgvLC8sICRnZXR0ZXJFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIEB7JG5l
d0RhdGFOb2RlLT5zZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywgJHNldHRlckV4Y2VwdGlv
bik7CisgICAgICAgICAgICB9IGVsc2lmICgoJGxpbmUgIX4gcy9eXHMqJC8vZykgYW5kICgkbGlu
ZSAhfiAvXlxzK2NvbnN0LykpIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVj
dHVyZTo6aW50ZXJmYWNlTWV0aG9kU2VsZWN0b3IvIG9yIGRpZSAiUGFyc2luZyBlcnJvciFcblNv
dXJjZTpcbiRsaW5lXG4pIjsKIAotICAgICAgICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPmF0
dHJpYnV0ZXM7Ci0gICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKKyAgICAg
ICAgICAgICAgICBteSAkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8g
JDEgOiAiICIpOyBjaG9wKCRtZXRob2RFeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
ICAgIG15ICRtZXRob2RUeXBlID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJy
b3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKKyAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFt
ZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxp
bmVcbikiKSk7CisgICAgICAgICAgICAgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IChkZWZpbmVk
KCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAK
LSAgICAgICAgcHJpbnQgIiAgfCAgfD4gIEF0dHJpYnV0ZTsgVFlQRSBcIiRhdHRyaWJ1dGVUeXBl
XCIgREFUQSBOQU1FIFwiJGF0dHJpYnV0ZURhdGFOYW1lXCIgREFUQSBUWVBFIFwiJGF0dHJpYnV0
ZURhdGFUeXBlXCIgR0VUIEVYQ0VQVElPTj8gXCIkZ2V0dGVyRXhjZXB0aW9uXCIgU0VUIEVYQ0VQ
VElPTj8gXCIkc2V0dGVyRXhjZXB0aW9uXCIiIC4KLSAgICAgICAgICAgICAgZHVtcEV4dGVuZGVk
QXR0cmlidXRlcygiXG4gIHwgICAgICAgICAgICAgICAgICIsICRuZXdEYXRhTm9kZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiBpZighJGJlUXVpZXQpOworICAgICAgICAg
ICAgICAgICgnJyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBt
YXRjaGluZwogCi0gICAgICAgICRnZXR0ZXJFeGNlcHRpb24gPX4gcy9ccysvL2c7Ci0gICAgICAg
ICRzZXR0ZXJFeGNlcHRpb24gPX4gcy9ccysvL2c7Ci0gICAgICAgIEB7JG5ld0RhdGFOb2RlLT5n
ZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywgJGdldHRlckV4Y2VwdGlvbik7Ci0gICAgICAg
IEB7JG5ld0RhdGFOb2RlLT5zZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywgJHNldHRlckV4
Y2VwdGlvbik7Ci0gICAgICB9IGVsc2lmKCgkbGluZSAhfiBzL15ccyokLy9nKSBhbmQgKCRsaW5l
ICF+IC9eXHMrY29uc3QvKSkgewotICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50
ZXJmYWNlTWV0aG9kU2VsZWN0b3IvIG9yIGRpZSAiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRs
aW5lXG4pIjsKLQotICAgICAgICBteSAkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmlu
ZWQoJDEpID8gJDEgOiAiICIpOyBjaG9wKCRtZXRob2RFeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAg
ICAgICBteSAkbWV0aG9kVHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVy
cm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRtZXRob2ROYW1lID0gKGRl
ZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIp
KTsKLSAgICAgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGll
KCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIAotICAgICAg
ICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hp
bmcKLSAgICAgICAgCi0gICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpyYWlzZXNTZWxl
Y3Rvci87Ci0gICAgICAgIG15ICRtZXRob2RFeGNlcHRpb24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6
ICIiKTsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6cmFpc2VzU2Vs
ZWN0b3IvOworICAgICAgICAgICAgICAgIG15ICRtZXRob2RFeGNlcHRpb24gPSAoZGVmaW5lZCgk
MSkgPyAkMSA6ICIiKTsKIAotICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rp
b24oKTsKKyAgICAgICAgICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24o
KTsKIAotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkp
OwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkbWV0aG9kTmFtZSk7Ci0g
ICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRtZXRob2RUeXBlKTsKLSAgICAg
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVu
ZGVkQXR0cmlidXRlcygkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Ci0KLSAgICAgICAgcHJp
bnQgIiAgfCAgfC0gIE1ldGhvZDsgVFlQRSBcIiRtZXRob2RUeXBlXCIgTkFNRSBcIiRtZXRob2RO
YW1lXCIgRVhDRVBUSU9OPyBcIiRtZXRob2RFeGNlcHRpb25cIiIgLgotICAgICAgICAgIGR1bXBF
eHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAiLCAkbmV3RGF0YU5vZGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIgaWYoISRiZVF1aWV0KTsKLQotICAg
ICAgICAkbWV0aG9kRXhjZXB0aW9uID1+IHMvXHMrLy9nOwotICAgICAgICBAeyRuZXdEYXRhTm9k
ZS0+cmFpc2VzRXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwotCi0g
ICAgICAgIG15IEBwYXJhbXMgPSBzcGxpdCgvLC8sICRtZXRob2RTaWduYXR1cmUpOwotICAgICAg
ICBmb3JlYWNoKEBwYXJhbXMpIHsKLSAgICAgICAgICBteSAkbGluZSA9ICRfOwotCi0gICAgICAg
ICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsK
LSAgICAgICAgICBteSAkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMSkgPyAk
MSA6ICIgIik7IGNob3AoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAgICBteSAk
cGFyYW1UeXBlID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kbGluZVxuKSIpKTsKLSAgICAgICAgICBteSAkcGFyYW1OYW1lID0gKGRlZmluZWQoJDMp
ID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLQotICAg
ICAgICAgIG15ICRwYXJhbURhdGFOb2RlID0gbmV3IGRvbVNpZ25hdHVyZSgpOwotICAgICAgICAg
ICRwYXJhbURhdGFOb2RlLT5uYW1lKCRwYXJhbU5hbWUpOwotICAgICAgICAgICRwYXJhbURhdGFO
b2RlLT50eXBlKCRwYXJhbVR5cGUpOwotICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1
dGVzKSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNp
Z25hdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFt
ZSgkbWV0aG9kTmFtZSk7CisgICAgICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
PnR5cGUoJG1ldGhvZFR5cGUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJG1ldGhvZEV4
dGVuZGVkQXR0cmlidXRlcykpOwogCi0gICAgICAgICAgbXkgJGFycmF5UmVmID0gJG5ld0RhdGFO
b2RlLT5wYXJhbWV0ZXJzOwotICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJHBhcmFtRGF0YU5v
ZGUpOworICAgICAgICAgICAgICAgIHByaW50ICIgIHwgIHwtICBNZXRob2Q7IFRZUEUgXCIkbWV0
aG9kVHlwZVwiIE5BTUUgXCIkbWV0aG9kTmFtZVwiIEVYQ0VQVElPTj8gXCIkbWV0aG9kRXhjZXB0
aW9uXCIiIC4KKyAgICAgICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4g
IHwgICAgICAgICAgICAgICIsICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMpIC4gIlxuIiB1bmxlc3MgJGJlUXVpZXQ7CiAKLSAgICAgICAgICBwcmludCAiICB8ICAg
fD4gIFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIiIC4gCi0g
ICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAgICAgIiwg
JHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIGlmKCEkYmVRdWlldCk7
ICAgICAgICAgIAotICAgICAgICB9CisgICAgICAgICAgICAgICAgJG1ldGhvZEV4Y2VwdGlvbiA9
fiBzL1xzKy8vZzsKKyAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0
aW9uc30gPSBzcGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwogCi0gICAgICAgIG15ICRhcnJh
eVJlZiA9ICRkYXRhTm9kZS0+ZnVuY3Rpb25zOwotICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRu
ZXdEYXRhTm9kZSk7Ci0gICAgICB9IGVsc2lmKCRsaW5lID1+IC9eXHMrY29uc3QvKSB7Ci0gICAg
ICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpjb25zdGFudFNlbGVjdG9yLzsKLSAgICAgICAg
bXkgJGNvbnN0VHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxu
U291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgIG15ICRjb25zdE5hbWUgPSAoZGVmaW5lZCgk
MikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAg
ICAgICBteSAkY29uc3RWYWx1ZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVy
cm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0KLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0g
bmV3IGRvbUNvbnN0YW50KCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgkY29uc3ROYW1l
KTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT50eXBlKCRjb25zdFR5cGUpOwotICAgICAgICAkbmV3
RGF0YU5vZGUtPnZhbHVlKCRjb25zdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBteSBAcGFyYW1z
ID0gc3BsaXQoLywvLCAkbWV0aG9kU2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNo
KEBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsKIAotICAgICAg
ICBteSAkYXJyYXlSZWYgPSAkZGF0YU5vZGUtPmNvbnN0YW50czsKLSAgICAgICAgcHVzaChAJGFy
cmF5UmVmLCAkbmV3RGF0YU5vZGUpOworICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElE
TFN0cnVjdHVyZTo6aW50ZXJmYWNlUGFyYW1ldGVyU2VsZWN0b3IvOworICAgICAgICAgICAgICAg
ICAgICBteSAkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIg
Iik7IGNob3AoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJHBhcmFtVHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxu
U291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUg
PSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOwogCi0gICAgICAgIHByaW50ICIgIHwgICB8PiAgQ29uc3RhbnQ7IFRZUEUgXCIkY29u
c3RUeXBlXCIgTkFNRSBcIiRjb25zdE5hbWVcIiBWQUxVRSBcIiRjb25zdFZhbHVlXCJcbiIgaWYo
ISRiZVF1aWV0KTsKLSAgICAgIH0KLSAgICB9CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJh
bURhdGFOb2RlID0gbmV3IGRvbVNpZ25hdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAkcGFy
YW1EYXRhTm9kZS0+bmFtZSgkcGFyYW1OYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFt
RGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbURh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFt
RXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVm
ID0gJG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAk
YXJyYXlSZWYsICRwYXJhbURhdGFOb2RlKTsKKworICAgICAgICAgICAgICAgICAgICBwcmludCAi
ICB8ICAgfD4gIFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIi
IC4gCisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAg
fCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAi
XG4iIHVubGVzcyAkYmVRdWlldDsgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5mdW5jdGlvbnM7CisgICAgICAg
ICAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbmV3RGF0YU5vZGUpOworICAgICAgICAgICAgfSBl
bHNpZiAoJGxpbmUgPX4gL15ccytjb25zdC8pIHsKKyAgICAgICAgICAgICAgICAkbGluZSA9fiAv
JElETFN0cnVjdHVyZTo6Y29uc3RhbnRTZWxlY3Rvci87CisgICAgICAgICAgICAgICAgbXkgJGNv
bnN0VHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNl
OlxuJGxpbmVcbikiKSk7CisgICAgICAgICAgICAgICAgbXkgJGNvbnN0TmFtZSA9IChkZWZpbmVk
KCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Cisg
ICAgICAgICAgICAgICAgbXkgJGNvbnN0VmFsdWUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgi
UGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworCisgICAgICAgICAgICAgICAg
bXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUNvbnN0YW50KCk7CisgICAgICAgICAgICAgICAgJG5l
d0RhdGFOb2RlLT5uYW1lKCRjb25zdE5hbWUpOworICAgICAgICAgICAgICAgICRuZXdEYXRhTm9k
ZS0+dHlwZSgkY29uc3RUeXBlKTsKKyAgICAgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnZhbHVl
KCRjb25zdFZhbHVlKTsKIAotICAgIHByaW50ICIgIHwtLS0tPiBJbnRlcmZhY2U7IE5BTUUgXCIk
aW50ZXJmYWNlTmFtZVwiIiAuCi0gICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4g
IHwgICAgICAgICAgICAgICAgICIsICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJc
biB8LVxuIHxcbiIgaWYoISRiZVF1aWV0KTsKLSAgfQorICAgICAgICAgICAgICAgIG15ICRhcnJh
eVJlZiA9ICRkYXRhTm9kZS0+Y29uc3RhbnRzOworICAgICAgICAgICAgICAgIHB1c2goQCRhcnJh
eVJlZiwgJG5ld0RhdGFOb2RlKTsKKworICAgICAgICAgICAgICAgIHByaW50ICIgIHwgICB8PiAg
Q29uc3RhbnQ7IFRZUEUgXCIkY29uc3RUeXBlXCIgTkFNRSBcIiRjb25zdE5hbWVcIiBWQUxVRSBc
IiRjb25zdFZhbHVlXCJcbiIgdW5sZXNzICRiZVF1aWV0OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgcHJpbnQgIiAgfC0tLS0+IEludGVyZmFjZTsgTkFNRSBcIiRpbnRlcmZh
Y2VOYW1lXCIiIC4KKyAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAg
ICAgICAgICAgICAgICAiLCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4gfC1c
biB8XG4iIHVubGVzcyAkYmVRdWlldDsKKyAgICB9CiB9CiAKICMgSW50ZXJuYWwgaGVscGVyCiBz
dWIgRGV0ZXJtaW5lUGFyc2VNb2RlCiB7Ci0gIG15ICRvYmplY3QgPSBzaGlmdDsgIAotICBteSAk
bGluZSA9IHNoaWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsgIAorICAgIG15ICRsaW5lID0g
c2hpZnQ7CiAKLSAgbXkgJG1vZGUgPSBNT0RFX1VOREVGOwotICBpZigkXyA9fiAvbW9kdWxlLykg
ewotICAgICRtb2RlID0gTU9ERV9NT0RVTEU7Ci0gIH0gZWxzaWYoJF8gPX4gL2ludGVyZmFjZS8p
IHsKLSAgICAkbW9kZSA9IE1PREVfSU5URVJGQUNFOwotICB9IGVsc2lmKCRfID1+IC9leGNlcHRp
b24vKSB7Ci0gICAgJG1vZGUgPSBNT0RFX0VYQ0VQVElPTjsKLSAgfSBlbHNpZigkXyA9fiAvYWxp
YXMvKSB7Ci0gICAgJG1vZGUgPSBNT0RFX0FMSUFTOwotICB9CisgICAgbXkgJG1vZGUgPSBNT0RF
X1VOREVGOworICAgIGlmICgkXyA9fiAvbW9kdWxlLykgeworICAgICAgICAkbW9kZSA9IE1PREVf
TU9EVUxFOworICAgIH0gZWxzaWYgKCRfID1+IC9pbnRlcmZhY2UvKSB7CisgICAgICAgICRtb2Rl
ID0gTU9ERV9JTlRFUkZBQ0U7CisgICAgfSBlbHNpZiAoJF8gPX4gL2V4Y2VwdGlvbi8pIHsKKyAg
ICAgICAgJG1vZGUgPSBNT0RFX0VYQ0VQVElPTjsKKyAgICB9IGVsc2lmICgkXyA9fiAvYWxpYXMv
KSB7CisgICAgICAgICRtb2RlID0gTU9ERV9BTElBUzsKKyAgICB9CiAKLSAgcmV0dXJuICRtb2Rl
OworICAgIHJldHVybiAkbW9kZTsKIH0KIAogIyBJbnRlcm5hbCBoZWxwZXIKIHN1YiBQcm9jZXNz
U2VjdGlvbgogewotICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0
OwogICAKLSAgaWYoJHBhcnNlTW9kZSBlcSBNT0RFX01PRFVMRSkgewotICAgIGRpZSAoIlR3byBt
b2R1bGVzIGluIG9uZSBmaWxlISBGYXRhbCBlcnJvciFcbiIpIGlmKCRkb2N1bWVudCBuZSAwKTsK
LSAgICAkZG9jdW1lbnQgPSBuZXcgaWRsRG9jdW1lbnQoKTsKLSAgICAkb2JqZWN0LT5QYXJzZU1v
ZHVsZSgkZG9jdW1lbnQpOwotICB9IGVsc2lmKCRwYXJzZU1vZGUgZXEgTU9ERV9JTlRFUkZBQ0Up
IHsKLSAgICBteSAkbm9kZSA9IG5ldyBkb21DbGFzcygpOwotICAgICRvYmplY3QtPlBhcnNlSW50
ZXJmYWNlKCRub2RlLCAiaW50ZXJmYWNlIik7CisgICAgaWYgKCRwYXJzZU1vZGUgZXEgTU9ERV9N
T0RVTEUpIHsKKyAgICAgICAgZGllICgiVHdvIG1vZHVsZXMgaW4gb25lIGZpbGUhIEZhdGFsIGVy
cm9yIVxuIikgaWYgKCRkb2N1bWVudCBuZSAwKTsKKyAgICAgICAgJGRvY3VtZW50ID0gbmV3IGlk
bERvY3VtZW50KCk7CisgICAgICAgICRvYmplY3QtPlBhcnNlTW9kdWxlKCRkb2N1bWVudCk7Cisg
ICAgfSBlbHNpZiAoJHBhcnNlTW9kZSBlcSBNT0RFX0lOVEVSRkFDRSkgeworICAgICAgICBteSAk
bm9kZSA9IG5ldyBkb21DbGFzcygpOworICAgICAgICAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgk
bm9kZSwgImludGVyZmFjZSIpOwogICAgIAotICAgIGRpZSAoIk5vIG1vZHVsZSBzcGVjaWZpZWQh
IEZhdGFsIEVycm9yIVxuIikgaWYoJGRvY3VtZW50IGVxIDApOwotICAgIG15ICRhcnJheVJlZiA9
ICRkb2N1bWVudC0+Y2xhc3NlczsKLSAgICBwdXNoKEAkYXJyYXlSZWYsICRub2RlKTsKLSAgfSBl
bHNpZigkcGFyc2VNb2RlIGVxIE1PREVfRVhDRVBUSU9OKSB7Ci0gICAgbXkgJG5vZGUgPSBuZXcg
ZG9tQ2xhc3MoKTsKLSAgICAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkbm9kZSwgImV4Y2VwdGlv
biIpOwotCi0gICAgZGllICgiTm8gbW9kdWxlIHNwZWNpZmllZCEgRmF0YWwgRXJyb3IhXG4iKSBp
ZigkZG9jdW1lbnQgZXEgMCk7Ci0gICAgbXkgJGFycmF5UmVmID0gJGRvY3VtZW50LT5jbGFzc2Vz
OwotICAgIHB1c2goQCRhcnJheVJlZiwgJG5vZGUpOwotICB9IGVsc2lmKCRwYXJzZU1vZGUgZXEg
TU9ERV9BTElBUykgewotICAgIHByaW50ICIgfC0gVHJ5aW5nIHRvIHBhcnNlIGFsaWFzLi4uXG4i
IGlmKCEkYmVRdWlldCk7CisgICAgICAgIGRpZSAoIk5vIG1vZHVsZSBzcGVjaWZpZWQhIEZhdGFs
IEVycm9yIVxuIikgaWYgKCRkb2N1bWVudCBlcSAwKTsKKyAgICAgICAgbXkgJGFycmF5UmVmID0g
JGRvY3VtZW50LT5jbGFzc2VzOworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRub2RlKTsKKyAg
ICB9IGVsc2lmKCRwYXJzZU1vZGUgZXEgTU9ERV9FWENFUFRJT04pIHsKKyAgICAgICAgbXkgJG5v
ZGUgPSBuZXcgZG9tQ2xhc3MoKTsKKyAgICAgICAgJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJG5v
ZGUsICJleGNlcHRpb24iKTsKKworICAgICAgICBkaWUgKCJObyBtb2R1bGUgc3BlY2lmaWVkISBG
YXRhbCBFcnJvciFcbiIpIGlmICgkZG9jdW1lbnQgZXEgMCk7CisgICAgICAgIG15ICRhcnJheVJl
ZiA9ICRkb2N1bWVudC0+Y2xhc3NlczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbm9kZSk7
CisgICAgfSBlbHNpZigkcGFyc2VNb2RlIGVxIE1PREVfQUxJQVMpIHsKKyAgICAgICAgcHJpbnQg
IiB8LSBUcnlpbmcgdG8gcGFyc2UgYWxpYXMuLi5cbiIgdW5sZXNzICRiZVF1aWV0OwogICAgIAot
ICAgIG15ICRsaW5lID0gam9pbigiIiwgQHRlbXBvcmFyeUNvbnRlbnQpOwotICAgICRsaW5lID1+
IC8kSURMU3RydWN0dXJlOjphbGlhc1NlbGVjdG9yLzsKKyAgICAgICAgbXkgJGxpbmUgPSBqb2lu
KCIiLCBAdGVtcG9yYXJ5Q29udGVudCk7CisgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJl
OjphbGlhc1NlbGVjdG9yLzsKIAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gKGRlZmluZWQoJDEp
ID8gJDEgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICBt
eSAkd3JhcHBlck5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IChkZWZp
bmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7
CisgICAgICAgIG15ICR3cmFwcGVyTmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJz
aW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAgICAgCi0gICAgcHJpbnQgIiAgfC0t
LS0+IEFsaWFzOyBJTlRFUkZBQ0UgXCIkaW50ZXJmYWNlTmFtZVwiIFdSQVBQRVIgXCIkd3JhcHBl
ck5hbWVcIlxuIHwtXG4gfFxuIiBpZighJGJlUXVpZXQpOworICAgICAgICBwcmludCAiICB8LS0t
LT4gQWxpYXM7IElOVEVSRkFDRSBcIiRpbnRlcmZhY2VOYW1lXCIgV1JBUFBFUiBcIiR3cmFwcGVy
TmFtZVwiXG4gfC1cbiB8XG4iIHVubGVzcyAkYmVRdWlldDsKIAotICAgICMgRklYTUU6IENoZWNr
IGlmIGFsaWFzIGlzIGFscmVhZHkgaW4gYWxpYXNlcwotICAgIG15ICRhbGlhc2VzID0gJGRvY3Vt
ZW50LT5hbGlhc2VzOwotICAgICRhbGlhc2VzLT57JGludGVyZmFjZU5hbWV9ID0gJHdyYXBwZXJO
YW1lOwotICB9CisgICAgICAgICMgRklYTUU6IENoZWNrIGlmIGFsaWFzIGlzIGFscmVhZHkgaW4g
YWxpYXNlcworICAgICAgICBteSAkYWxpYXNlcyA9ICRkb2N1bWVudC0+YWxpYXNlczsKKyAgICAg
ICAgJGFsaWFzZXMtPnskaW50ZXJmYWNlTmFtZX0gPSAkd3JhcHBlck5hbWU7CisgICAgfQogCi0g
IEB0ZW1wb3JhcnlDb250ZW50ID0gIiI7CisgICAgQHRlbXBvcmFyeUNvbnRlbnQgPSAiIjsKIH0K
IAogMTsKLQpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTm9kZS5pZGwJKHJldmlzaW9uIDE2NDM0KQorKysgV2ViQ29yZS9kb20vTm9kZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICBET01Vc2VyRGF0YSAgICAgICAgZ2V0VXNlckRhdGEoaW4gRE9NU3RyaW5nIGtleSk7CiAjZW5k
aWYgLyogIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICovCiAjZW5kaWYgLyogIWRlZmlu
ZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgKi8KKworI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNU
SVZFX0MpCisgICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbnMKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBpc0NvbnRlbnRFZGl0YWJsZTsKKyNlbmRpZiAv
KiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAqLwogICAgIH07CiAKIH0KSW5kZXg6IFdl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MTY0MzQpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDYtMDktMTggIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSC4KKworICAgICAgICBQYXRjaCBmb3IgaHR0cDovL2J1Z3pp
bGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwMworICAgICAgICBZZXQgQW5v
dGhlciBPYmplY3RpdmUtQyBCaW5kaW5ncyBQYXRjaAorCisgICAgICAgICogTWlncmF0ZUhlYWRl
cnMubWFrZToKKwogMjAwNi0wOS0xNiAgQnJhZHkgRWlkc29uIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dApJbmRleDogV2ViS2l0L01pZ3JhdGVIZWFkZXJz
Lm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pZ3JhdGVIZWFkZXJzLm1ha2UJKHJldmlzaW9u
IDE2NDM0KQorKysgV2ViS2l0L01pZ3JhdGVIZWFkZXJzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAgUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoVEFSR0VUX0JVSUxEX0RJUgog
LlBIT05ZIDogYWxsCiBhbGwgOiBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTS5oIFwK
KyAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NQWJzdHJhY3RWaWV3LmggXAogICAgICQoUFVC
TElDX0hFQURFUlNfRElSKS9ET01BdHRyLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9E
T01DREFUQVNlY3Rpb24uaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUNTUy5oIFwK
QEAgLTY0LDkgKzY1LDExIEBAIGFsbCA6IFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9N
RW50aXR5LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01FbnRpdHlSZWZlcmVuY2Uu
aCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUV2ZW50LmggXAorICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01FdmVudEV4Y2VwdGlvbi5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJT
X0RJUikvRE9NRXZlbnRMaXN0ZW5lci5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9N
RXZlbnRUYXJnZXQuaCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUV2ZW50cy5oIFwK
KyAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NRXhjZXB0aW9uLmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01FeHRlbnNpb25zLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElS
KS9ET01IVE1MLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01IVE1MQW5jaG9yRWxl
bWVudC5oIFwKQEAgLTE2MCw2ICsxNjMsNyBAQCBhbGwgOiBcCiAgICAgJChQUklWQVRFX0hFQURF
UlNfRElSKS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25Qcml2YXRlLmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01SR0JDb2xvci5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikv
RE9NUmFuZ2UuaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVJhbmdlRXhjZXB0aW9u
LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01SZWN0LmggXAogICAgICQoUFVCTElD
X0hFQURFUlNfRElSKS9ET01TdHlsZVNoZWV0LmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElS
KS9ET01TdHlsZVNoZWV0TGlzdC5oIFwKQEAgLTE3Myw2ICsxNzcsNyBAQCBhbGwgOiBcCiAgICAg
JChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVdoZWVsRXZlbnQuaCBcCiAgICAgJChQUklWQVRFX0hF
QURFUlNfRElSKS9ET01XaGVlbEV2ZW50UHJpdmF0ZS5oIFwKICAgICAkKFBVQkxJQ19IRUFERVJT
X0RJUikvRE9NWFBhdGguaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVhQYXRoRXhj
ZXB0aW9uLmggXAogICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01YUGF0aEV4cHJlc3Npb24u
aCBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTVhQYXRoTlNSZXNvbHZlci5oIFwKICAg
ICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NWFBhdGhSZXN1bHQuaCBcCg==
</data>
<flag name="review"
          id="3470"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>