<?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>10869</bug_id>
          
          <creation_ts>2006-09-15 08:48:29 -0700</creation_ts>
          <short_desc>Auto-generate the internal methods for the Objective-C bindings</short_desc>
          <delta_ts>2006-09-15 15:17:36 -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>55589</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-15 08:48:29 -0700</bug_when>
    <thetext>Generate the internal methods (ie. _fooBar and _fooBarWith methods) where possible.  Adding [ObjCNoInternal] extended attribute for interfaces where a custom set of internal methods is still required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55598</commentid>
    <comment_count>1</comment_count>
      <attachid>10576</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-15 09:45:02 -0700</bug_when>
    <thetext>Created attachment 10576
patch

- Auto-generates the internal method (ie. the _fooBar and _fooBarWith methods) implementations where standard.  For cases where a custom implementation was needed, added a [ObjCNoInternal] extended attribute to the corresponding IDL.

- Some general cleanup of some of the non-generated bindings, to bring them inline with what the generated bindings look like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55620</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-09-15 15:17:36 -0700</bug_when>
    <thetext>Landed in r16374.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10576</attachid>
            <date>2006-09-15 09:45:02 -0700</date>
            <delta_ts>2006-09-15 11:53:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>autoInternal.diff</filename>
            <type>text/plain</type>
            <size>75702</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTM5IEBACisyMDA2LTA5LTE1ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA4NjkKKyAgICAgICAgQXV0by1nZW5lcmF0ZSB0aGUgaW50ZXJuYWwgbWV0aG9kcyBmb3IgdGhl
IE9iamVjdGl2ZS1DIGJpbmRpbmdzCisKKyAgICAgICAgLSBBdXRvLWdlbmVyYXRlcyB0aGUgaW50
ZXJuYWwgbWV0aG9kIChpZS4gdGhlIF9mb29CYXIgYW5kIF9mb29CYXJXaXRoIG1ldGhvZHMpCisg
ICAgICAgICAgaW1wbGVtZW50YXRpb25zIHdoZXJlIHN0YW5kYXJkLiAgRm9yIGNhc2VzIHdoZXJl
IGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHdhcworICAgICAgICAgIG5lZWRlZCwgYWRkZWQgYSBb
T2JqQ05vSW50ZXJuYWxdIGV4dGVuZGVkIGF0dHJpYnV0ZSB0byB0aGUgY29ycmVzcG9uZGluZyBJ
REwuCisKKyAgICAgICAgLSBTb21lIGdlbmVyYWwgY2xlYW51cCBvZiBzb21lIG9mIHRoZSBub24t
Z2VuZXJhdGVkIGJpbmRpbmdzLCB0byBicmluZyB0aGVtIGluLQorICAgICAgICAgIGxpbmUgd2l0
aCB3aGF0IHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgbG9vayBsaWtlLgorCisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZGVzY3JpcHRpb25dKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNTUy5tbToKKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0
aXZlVmFsdWUgV2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGdldENvbXB1dGVk
U3R5bGU6Ol0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBnZXRNYXRjaGVkQ1NTUnVsZXM6Ol0p
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tOgorICAgICAgICAoLVtET01F
dmVudCBXZWJDb3JlOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06Cisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01IVE1MRG9jdW1lbnQubW06CisgICAgICAgICgtW0RP
TUhUTUxEb2N1bWVudCB0aXRsZV0pOgorICAgICAgICAoLVtET01IVE1MRG9jdW1lbnQgc2V0VGl0
bGU6XSk6CisgICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCByZWZlcnJlcl0pOgorICAgICAgICAo
LVtET01IVE1MRG9jdW1lbnQgZG9tYWluXSk6CisgICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBV
UkxdKToKKyAgICAgICAgKC1bRE9NSFRNTERvY3VtZW50IGJvZHldKToKKyAgICAgICAgKC1bRE9N
SFRNTERvY3VtZW50IHNldEJvZHk6XSk6CisgICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBpbWFn
ZXNdKToKKyAgICAgICAgKC1bRE9NSFRNTERvY3VtZW50IGFwcGxldHNdKToKKyAgICAgICAgKC1b
RE9NSFRNTERvY3VtZW50IGxpbmtzXSk6CisgICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBmb3Jt
c10pOgorICAgICAgICAoLVtET01IVE1MRG9jdW1lbnQgYW5jaG9yc10pOgorICAgICAgICAoLVtE
T01IVE1MRG9jdW1lbnQgY29va2llXSk6CisgICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBzZXRD
b29raWU6XSk6CisgICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCBvcGVuXSk6CisgICAgICAgICgt
W0RPTUhUTUxEb2N1bWVudCBjbG9zZV0pOgorICAgICAgICAoLVtET01IVE1MRG9jdW1lbnQgd3Jp
dGU6XSk6CisgICAgICAgICgtW0RPTUhUTUxEb2N1bWVudCB3cml0ZWxuOl0pOgorICAgICAgICAo
LVtET01IVE1MRG9jdW1lbnQgZ2V0RWxlbWVudEJ5SWQ6XSk6CisgICAgICAgICgtW0RPTUhUTUxE
b2N1bWVudCBnZXRFbGVtZW50c0J5TmFtZTpdKToKKyAgICAgICAgKC1bRE9NSFRNTERvY3VtZW50
IFdlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01IVE1MRG9jdW1lbnQgX0hUTUxEb2N1bWVudFdp
dGg6V2ViQ29yZTo6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01IVE1MT3B0aW9uRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTE9wdGlvbkVsZW1lbnQgZm9ybV0pOgorICAgICAg
ICAoLVtET01IVE1MT3B0aW9uRWxlbWVudCBkZWZhdWx0U2VsZWN0ZWRdKToKKyAgICAgICAgKC1b
RE9NSFRNTE9wdGlvbkVsZW1lbnQgc2V0RGVmYXVsdFNlbGVjdGVkOl0pOgorICAgICAgICAoLVtE
T01IVE1MT3B0aW9uRWxlbWVudCB0ZXh0XSk6CisgICAgICAgICgtW0RPTUhUTUxPcHRpb25FbGVt
ZW50IGluZGV4XSk6CisgICAgICAgICgtW0RPTUhUTUxPcHRpb25FbGVtZW50IGRpc2FibGVkXSk6
CisgICAgICAgICgtW0RPTUhUTUxPcHRpb25FbGVtZW50IHNldERpc2FibGVkOl0pOgorICAgICAg
ICAoLVtET01IVE1MT3B0aW9uRWxlbWVudCBsYWJlbF0pOgorICAgICAgICAoLVtET01IVE1MT3B0
aW9uRWxlbWVudCBzZXRMYWJlbDpdKToKKyAgICAgICAgKC1bRE9NSFRNTE9wdGlvbkVsZW1lbnQg
c2VsZWN0ZWRdKToKKyAgICAgICAgKC1bRE9NSFRNTE9wdGlvbkVsZW1lbnQgc2V0U2VsZWN0ZWQ6
XSk6CisgICAgICAgICgtW0RPTUhUTUxPcHRpb25FbGVtZW50IHZhbHVlXSk6CisgICAgICAgICgt
W0RPTUhUTUxPcHRpb25FbGVtZW50IHNldFZhbHVlOl0pOgorICAgICAgICAoLVtET01IVE1MT3B0
aW9uRWxlbWVudCBXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NSFRNTE9wdGlvbkVsZW1lbnQg
X0hUTUxPcHRpb25FbGVtZW50V2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTUludGVybmFsLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tOgor
ICAgICAgICAoLVtET01Ob2RlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bRE9NTm9kZSBmaW5hbGl6
ZV0pOgorICAgICAgICAoLVtET01Ob2RlIG5vZGVOYW1lXSk6CisgICAgICAgICgtW0RPTU5vZGUg
bm9kZVZhbHVlXSk6CisgICAgICAgICgtW0RPTU5vZGUgc2V0Tm9kZVZhbHVlOl0pOgorICAgICAg
ICAoLVtET01Ob2RlIG5vZGVUeXBlXSk6CisgICAgICAgICgtW0RPTU5vZGUgcGFyZW50Tm9kZV0p
OgorICAgICAgICAoLVtET01Ob2RlIGNoaWxkTm9kZXNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBm
aXJzdENoaWxkXSk6CisgICAgICAgICgtW0RPTU5vZGUgbGFzdENoaWxkXSk6CisgICAgICAgICgt
W0RPTU5vZGUgcHJldmlvdXNTaWJsaW5nXSk6CisgICAgICAgICgtW0RPTU5vZGUgbmV4dFNpYmxp
bmddKToKKyAgICAgICAgKC1bRE9NTm9kZSBhdHRyaWJ1dGVzXSk6CisgICAgICAgICgtW0RPTU5v
ZGUgb3duZXJEb2N1bWVudF0pOgorICAgICAgICAoLVtET01Ob2RlIGluc2VydEJlZm9yZTo6XSk6
CisgICAgICAgICgtW0RPTU5vZGUgcmVwbGFjZUNoaWxkOjpdKToKKyAgICAgICAgKC1bRE9NTm9k
ZSByZW1vdmVDaGlsZDpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBhcHBlbmRDaGlsZDpdKToKKyAg
ICAgICAgKC1bRE9NTm9kZSBoYXNDaGlsZE5vZGVzXSk6CisgICAgICAgICgtW0RPTU5vZGUgY2xv
bmVOb2RlOl0pOgorICAgICAgICAoLVtET01Ob2RlIG5vcm1hbGl6ZV0pOgorICAgICAgICAoLVtE
T01Ob2RlIGlzU3VwcG9ydGVkOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBuYW1lc3BhY2VVUkld
KToKKyAgICAgICAgKC1bRE9NTm9kZSBwcmVmaXhdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXRQ
cmVmaXg6XSk6CisgICAgICAgICgtW0RPTU5vZGUgbG9jYWxOYW1lXSk6CisgICAgICAgICgtW0RP
TU5vZGUgaGFzQXR0cmlidXRlc10pOgorICAgICAgICAoLVtET01Ob2RlIGlzU2FtZU5vZGU6XSk6
CisgICAgICAgICgtW0RPTU5vZGUgaXNFcXVhbE5vZGU6XSk6CisgICAgICAgICgtW0RPTU5vZGUg
aXNEZWZhdWx0TmFtZXNwYWNlOl0pOgorICAgICAgICAoLVtET01Ob2RlIGxvb2t1cFByZWZpeDpd
KToKKyAgICAgICAgKC1bRE9NTm9kZSBsb29rdXBOYW1lc3BhY2VVUkk6XSk6CisgICAgICAgICgt
W0RPTU5vZGUgdGV4dENvbnRlbnRdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXRUZXh0Q29udGVu
dDpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBib3VuZGluZ0JveF0pOgorICAgICAgICAoLVtET01O
b2RlIGxpbmVCb3hSZWN0c10pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1t
OgorICAgICAgICAoLVtET01PYmplY3QgX2luaXRdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTVhQYXRoLm1tOgorICAgICAgICAoLVtET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgZGVhbGxv
Y10pOgorICAgICAgICAoLVtET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgZmluYWxpemVdKToKKyAg
ICAgICAgKC1bRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIFdlYkNvcmU6Ol0pOgorICAgICAgICAo
LVtET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgX2luaXRXaXRoWFBhdGhOU1Jlc29sdmVyOldlYkNv
cmU6Ol0pOgorICAgICAgICAoK1tET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgX3hwYXRoTlNSZXNv
bHZlcldpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciBsb29rdXBOYW1lc3BhY2VVUkk6XSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRn
ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdlIHJlcGxhY2VTZWxlY3Rpb25XaXRo
RnJhZ21lbnQ6c2VsZWN0UmVwbGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6Cisg
ICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBtb3ZlU2VsZWN0aW9uVG9EcmFnQ2FyZXQ6c21h
cnRNb3ZlOl0pOgorICAgICAgICAqIGNzcy9DU1NDaGFyc2V0UnVsZS5pZGw6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU0ltcG9ydFJ1bGUuaWRs
OgorICAgICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9DU1NQYWdl
UnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbDoKKyAgICAgICAg
KiBjc3MvQ1NTUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5pZGw6CisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaWRsOgorICAgICAgICAqIGNzcy9DU1NVbmtub3duUnVs
ZS5pZGw6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmlkbDoKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5pZGw6CisgICAgICAgICogZG9t
L0V2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkV2ZW50LmlkbDoKKyAg
ICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmlkbDoKKyAgICAgICAgKiBkb20vT3ZlcmZsb3dFdmVu
dC5pZGw6CisgICAgICAgICogZG9tL1RyZWVXYWxrZXIuaWRsOgorICAgICAgICAqIGRvbS9VSUV2
ZW50LmlkbDoKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5pZGw6CisKIDIwMDYtMDktMTUgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2llZGVsCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlzaW9uIDE2MzY5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk3LDE5ICsxOTcs
NiBAQCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogCiAKIC8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01PYmplY3QKLQotQGltcGxlbWVudGF0aW9uIERP
TU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdAotewotICAgIHJldHVybiBb
c3VwZXIgX2luaXRdOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIC8vIERPTU5vZGUKIAogc3RhdGljIHZvaWQgYWRkRWxlbWVudENsYXNzKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZywgQ2xhc3Mgb2JqQ0NsYXNzKQpAQCAtMzAzLDE3ICsyOTAsMTUg
QEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogLy8gRklYTUU6IHNo
b3VsZCB0aGlzIGdvIGluIHRoZSBtYWluIGltcGxlbWVudGF0aW9uPwogLSAoTlNTdHJpbmcgKilk
ZXNjcmlwdGlvbgogewotICAgIGlmICghX2ludGVybmFsKSB7Ci0gICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4iLAotICAgICAgICAgICAgW1tzZWxm
IGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZdOwotICAgIH0KKyAgICBpZiAoIV9pbnRlcm5hbCkK
KyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBudWxsPiIs
IFtbc2VsZiBjbGFzc10gZGVzY3JpcHRpb25dLCBzZWxmXTsKKyAgICAKICAgICBOU1N0cmluZyAq
dmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOwotICAgIGlmICh2YWx1ZSkgeworICAgIGlmICh2YWx1
ZSkKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06
ICVwICclQCc+IiwKICAgICAgICAgICAgIFtbc2VsZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2Vs
ZiBub2RlTmFtZV0sIF9pbnRlcm5hbCwgdmFsdWVdOwotICAgIH0KLSAgICByZXR1cm4gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXA+IiwKLSAgICAgICAgW1tzZWxmIGNs
YXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsXTsKKworICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4iLCBbW3NlbGYg
Y2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOwogfQogCiAt
IChpZClfaW5pdFdpdGhOb2RlOihOb2RlICopaW1wbApAQCAtNDUxLDEzOCArNDM2LDkgQEAgc3Rh
dGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiAKIC8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01OYW1lZE5vZGVNYXAKLQotQGltcGxlbWVudGF0
aW9uIERPTU5hbWVkTm9kZU1hcCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhO
YW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1hcCAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0K
LSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdElu
dGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2Vs
ZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5hbWVkTm9kZU1hcCAqKV9u
YW1lZE5vZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNh
Y2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFu
Y2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOYW1lZE5vZGVNYXA6
aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTU5vZGVMaXN0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2Rl
TGlzdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlTGlzdDooTm9kZUxp
c3QgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBp
bXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBz
ZWxmOwotfQotCi0rIChET01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KE5vZGVMaXN0ICopaW1w
bAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBj
YWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7
Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5j
ZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10g
X2luaXRXaXRoTm9kZUxpc3Q6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLQotLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUltcGxlbWVudGF0aW9uCi0g
Ci1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLQot
LSAoaWQpX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJvbnQg
KilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBf
aW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBs
LT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KERP
TUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3Rh
bmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAg
ICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAot
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBs
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1w
bGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9u
dCAqPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBET01Eb2N1bWVudAogCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1l
bnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRXaXRoOihE
b2N1bWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4o
W0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRG9jdW1lbnQgKilfZG9jdW1lbnQK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihf
aW50ZXJuYWwpKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoV2ViQ29yZUludGVy
bmFsRXh0ZW5zaW9uKQogCiAtIChET01FbGVtZW50ICopX293bmVyRWxlbWVudAogewpAQCAtNTkz
LDQwICs0NDksNiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAK
IAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUF0dHIKLQotQGlt
cGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NQXR0ciAqKV9h
dHRyV2l0aDooQXR0ciAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQXR0ciAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChBdHRyICopX2F0dHIKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkp
OwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBE
T01Eb2N1bWVudFR5cGUKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZSAoV2ViQ29y
ZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlV2l0aDooV2Vi
Q29yZTo6RG9jdW1lbnRUeXBlICopaW1wbDsKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RG9jdW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKFdlYkNv
cmU6OkRvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGU7Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRvY3VtZW50VHlwZSAqPihET01fY2FzdDxXZWJDb3JlOjpOb2RlICo+KF9p
bnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyBET01FbGVtZW50CiAKIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhdXRvLWdlbmVu
ZXJhdGUgaW4gRE9NRWxlbWVudC5tbQpAQCAtNjQ1LDIwICs0NjcsNiBAQCBzdGF0aWMgQ2xhc3Mg
ZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERP
TUVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRWxlbWVudCAqKV9lbGVtZW50V2l0
aDooRWxlbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChFbGVtZW50ICopX2VsZW1lbnQK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihET01fY2FzdDxOb2RlICo+KF9p
bnRlcm5hbCkpOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChXZWJQ
cml2YXRlKQogCiAtIChOU0ZvbnQgKilfZm9udApAQCAtNzA5LDcxICs1MTcsNiBAQCBzdGF0aWMg
Q2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIAogLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTVRleHQKLQotQGltcGxlbWVudGF0aW9uIERPTVRleHQg
KFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NVGV4dCAqKV90ZXh0V2l0aDooV2ViQ29yZTo6VGV4
dCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6aW1wbF0pOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUNvbW1lbnQg
KFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NQ29tbWVudCAqKV9jb21tZW50V2l0aDooV2ViQ29y
ZTo6Q29tbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQ29tbWVudCAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNEQVRBU2VjdGlvbgotCi1AaW1wbGVtZW50
YXRpb24gRE9NQ0RBVEFTZWN0aW9uIChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTUNEQVRBU2Vj
dGlvbiAqKV9DREFUQVNlY3Rpb25XaXRoOihXZWJDb3JlOjpDREFUQVNlY3Rpb24gKilpbXBsOwot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01DREFUQVNlY3Rpb24gKj4oW0RPTU5vZGUgX25v
ZGVXaXRoOmltcGxdKTsKLX0KLQotQGVuZAotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotQGltcGxlbWVudGF0aW9u
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24gKilfcHJvY2Vzc2luZ0luc3RydWN0aW9uV2l0aDooV2ViQ29yZTo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uICopaW1wbDsKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19
Ci0KLUBlbmQKLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRpdHlSZWZlcmVu
Y2UgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRW50aXR5UmVmZXJlbmNlICopX2VudGl0eVJl
ZmVyZW5jZVdpdGg6KFdlYkNvcmU6OkVudGl0eVJlZmVyZW5jZSAqKWltcGw7Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
aW1wbF0pOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC8vIERPTVJhbmdlCiAKIEBpbXBsZW1lbnRhdGlvbiBET01SYW5nZQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQ1NTLm1tCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01DU1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbXBvcnQgIlN0
eWxlU2hlZXQuaCIKICNpbXBvcnQgIlN0eWxlU2hlZXRMaXN0LmgiCiAKKyNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC05NiwzNiArOTcsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogCiAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NU3R5bGVTaGVldExpc3QKLQot
QGltcGxlbWVudGF0aW9uIERPTVN0eWxlU2hlZXRMaXN0IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0g
KGlkKV9pbml0V2l0aFN0eWxlU2hlZXRMaXN0OihTdHlsZVNoZWV0TGlzdCAqKWltcGwKLXsKLSAg
ICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBp
bXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NU3R5bGVTaGVldExpc3QgKilfc3R5
bGVTaGVldExpc3RXaXRoOihTdHlsZVNoZWV0TGlzdCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAg
Y2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0
YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFz
ZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFN0eWxlU2hlZXRM
aXN0OmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0KLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01DU1NTdHlsZVNoZWV0CiAKIEBpbXBsZW1lbnRhdGlv
biBET01DU1NTdHlsZVNoZWV0IChXZWJDb3JlSW50ZXJuYWwpCkBAIC0xMzksNjYgKzExMCw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01NZWRpYUxpc3QKLQotQGltcGxlbWVudGF0aW9uIERPTU1lZGlhTGlz
dCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhNZWRpYUxpc3Q6KE1lZGlhTGlz
dCAqKWltcGwKLXsKLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0
PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9N
V3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NTWVkaWFM
aXN0ICopX21lZGlhTGlzdFdpdGg6KE1lZGlhTGlzdCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAg
Y2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0
YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFz
ZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE1lZGlhTGlzdDpp
bXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gRE9NQ1NTUnVsZUxpc3QKLQotQGltcGxlbWVudGF0aW9uIERPTUNT
U1J1bGVMaXN0IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aFJ1bGVMaXN0OihD
U1NSdWxlTGlzdCAqKWltcGwKLXsKLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9
IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0g
ICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAo
RE9NQ1NTUnVsZUxpc3QgKilfQ1NTUnVsZUxpc3RXaXRoOihDU1NSdWxlTGlzdCAqKWltcGwKLXsK
LSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVk
SW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAg
IGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0
YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0
V2l0aFJ1bGVMaXN0OmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01DU1NSdWxlCiAKIEBpbXBsZW1lbnRh
dGlvbiBET01DU1NSdWxlIChXZWJDb3JlSW50ZXJuYWwpCkBAIC0yNTMsNDAgKzE2NCw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBET01DU1NTdHlsZURlY2xhcmF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01D
U1NTdHlsZURlY2xhcmF0aW9uIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aFN0
eWxlRGVjbGFyYXRpb246KENTU1N0eWxlRGVjbGFyYXRpb24gKilpbXBsCi17Ci0gICAgW3N1cGVy
IF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGlt
cGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilfQ1NTU3R5
bGVEZWNsYXJhdGlvbldpdGg6KENTU1N0eWxlRGVjbGFyYXRpb24gKilpbXBsCi17Ci0gICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNl
OwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2Fj
aGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhTdHls
ZURlY2xhcmF0aW9uOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKV9DU1NTdHlsZURlY2xhcmF0aW9uCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PENTU1N0
eWxlRGVjbGFyYXRpb24qPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01DU1NWYWx1ZQogCiBAaW1wbGVtZW50YXRpb24g
RE9NQ1NTVmFsdWUgKFdlYkNvcmVJbnRlcm5hbCkKQEAgLTMzNiw2ICsyMTMsMTEgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBET01DU1NQcmltaXRpdmVWYWx1
ZSAoV2ViQ29yZUludGVybmFsKQogCistIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZSAqKV9D
U1NQcmltaXRpdmVWYWx1ZQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTVmFsdWUqPihfaW50
ZXJuYWwpKTsKK30KKwogKyAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilfQ1NTUHJpbWl0aXZlVmFs
dWVXaXRoOihDU1NWYWx1ZSAqKWltcGwKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQ1NT
UHJpbWl0aXZlVmFsdWUqPihbRE9NQ1NTVmFsdWUgX0NTU1ZhbHVlV2l0aDppbXBsXSk7CkBAIC0z
NTgsNjQgKzI0MCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAKIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01SZWN0Ci0KLUBpbXBsZW1lbnRhdGlvbiBE
T01SZWN0IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aFJlY3Q6KFJlY3RJbXBs
ICopaW1wbAotewotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01SZWN0ICop
X3JlY3RXaXRoOihSZWN0SW1wbCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFu
Y2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAg
ICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0g
ICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFJlY3Q6aW1wbF0gYXV0b3JlbGVhc2Vd
OwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBE
T01Db3VudGVyCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Db3VudGVyIChXZWJDb3JlSW50ZXJuYWwp
Ci0KLS0gKGlkKV9pbml0V2l0aENvdW50ZXI6KENvdW50ZXIgKilpbXBsCi17Ci0gICAgW3N1cGVy
IF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGlt
cGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTUNvdW50ZXIgKilfY291bnRlcldpdGg6KENvdW50
ZXIgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBl
cihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hl
ZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxm
IGFsbG9jXSBfaW5pdFdpdGhDb3VudGVyOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAot
Ci0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBAaW1wbGVtZW50YXRpb24g
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAoRE9NQ1NTMlByb3BlcnRpZXMpCiAKQEAgLTE2NTEsMjIg
KzE0NzUsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBlbmQKIAorCiAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NRG9jdW1lbnQgQ1NTIEV4dGVuc2lv
bnMKIAogQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01WaWV3Q1NTKQogCiAtIChET01D
U1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6
KE5TU3RyaW5nICopcHNldWRvRWx0CiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IFtlbHQgX2Vs
ZW1lbnRdOwogICAgIEFic3RyYWN0VmlldyogZHYgPSBbc2VsZiBfZG9jdW1lbnRdLT5kZWZhdWx0
VmlldygpOwotICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICAKKwog
ICAgIGlmICghZHYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJuIFtET01D
U1NTdHlsZURlY2xhcmF0aW9uIF9DU1NTdHlsZURlY2xhcmF0aW9uV2l0aDpkdi0+Z2V0Q29tcHV0
ZWRTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHRTdHJpbmcuaW1wbCgpKS5nZXQoKV07CisgICAgcmV0
dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9DU1NTdHlsZURlY2xhcmF0aW9uV2l0aDpXVEY6
OmdldFB0cihkdi0+Z2V0Q29tcHV0ZWRTdHlsZShbZWx0IF9lbGVtZW50XSwgcHNldWRvRWx0KSld
OwogfQogCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRD
U1NFeHRlbnNpb25zKQorCiAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczoo
RE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5nICopcHNldWRvRWx0CiB7CiAgICAgQWJzdHJhY3RW
aWV3KiBkdiA9IFtzZWxmIF9kb2N1bWVudF0tPmRlZmF1bHRWaWV3KCk7CkBAIC0xNjc1LDcgKzE1
MDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICAKICAgICAvLyBUaGUgcGFyYW1ldGVyIG9mICJmYWxzZSIgaXMgaGFuZHkgZm9yIHRoZSBET00g
aW5zcGVjdG9yIGFuZCBsZXRzIHVzIHNlZSB1c2VyIGFnZW50IGFuZCB1c2VyIHJ1bGVzLgotICAg
IHJldHVybiBbRE9NQ1NTUnVsZUxpc3QgX0NTU1J1bGVMaXN0V2l0aDpkdi0+Z2V0TWF0Y2hlZENT
U1J1bGVzKFtlbHQgX2VsZW1lbnRdLCBTdHJpbmcocHNldWRvRWx0KS5pbXBsKCksIGZhbHNlKS5n
ZXQoKV07CisgICAgcmV0dXJuIFtET01DU1NSdWxlTGlzdCBfQ1NTUnVsZUxpc3RXaXRoOldURjo6
Z2V0UHRyKGR2LT5nZXRNYXRjaGVkQ1NTUnVsZXMoW2VsdCBfZWxlbWVudF0sIHBzZXVkb0VsdCwg
ZmFsc2UpKV07CiB9CiAKIEBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVu
dHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQko
cmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEFMTE9XX0RPTV9DQVNUKEV2ZW50KQogCiAt
IChXZWJDb3JlOjpFdmVudCAqKV9ldmVudAogewotICAgIHJldHVybiBET01fY2FzdDxXZWJDb3Jl
OjpFdmVudCAqPihfaW50ZXJuYWwpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OkV2ZW50Kj4oX2ludGVybmFsKTsKIH0KIAogLSAoaWQpX2luaXRXaXRoRXZlbnQ6KFdlYkNv
cmU6OkV2ZW50ICopaW1wbApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHJldmlzaW9u
IDE2MzY5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDg4ICs1Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIAogLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUhUTUxDb2xsZWN0aW9uCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01IVE1MQ29sbGVjdGlvbiAoV2ViQ29yZUludGVybmFsKQotCi0t
IChpZClfaW5pdFdpdGhDb2xsZWN0aW9uOihIVE1MQ29sbGVjdGlvbiAqKWltcGwKLXsKLSAgICBB
U1NFUlQoaW1wbCk7Ci0gICAgCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBE
T01fY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAg
IGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERP
TUhUTUxDb2xsZWN0aW9uICopX0hUTUxDb2xsZWN0aW9uV2l0aDooSFRNTENvbGxlY3Rpb24gKilp
bXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlk
IGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBs
KTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3Rh
bmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9j
XSBfaW5pdFdpdGhDb2xsZWN0aW9uOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0K
LS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24KLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAoV2Vi
Q29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhPcHRpb25zQ29sbGVjdGlvbjooSFRNTE9w
dGlvbnNDb2xsZWN0aW9uICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsKLSAgICAKLSAgICBb
c3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFs
Kj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBs
KTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uICop
X0hUTUxPcHRpb25zQ29sbGVjdGlvbldpdGg6KEhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKWltcGwK
LXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2Fj
aGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwot
ICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2Ug
cmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9p
bml0V2l0aE9wdGlvbnNDb2xsZWN0aW9uOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAot
Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01IVE1MRWxlbWVu
dAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTEVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQot
KyAoRE9NSFRNTEVsZW1lbnQgKilfSFRNTEVsZW1lbnRXaXRoOihIVE1MRWxlbWVudCAqKWltcGwK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTEVsZW1lbnQqPihbRE9NTm9kZSBfbm9k
ZVdpdGg6aW1wbF0pOwotfQotCi0tIChIVE1MRWxlbWVudCAqKV9IVE1MRWxlbWVudAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJu
YWwpKTsKLX0KLQotQGVuZAotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBET01IVE1MRG9jdW1lbnQKIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxEb2N1bWVudCAo
V2ViUHJpdmF0ZSkKQEAgLTE1NiwyOCArNzQsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MRG9jdW1lbnQgKFdlYkNvcmVJbnRl
cm5hbCkKLQotKyAoRE9NSFRNTERvY3VtZW50ICopX0hUTUxEb2N1bWVudFdpdGg6KFdlYkNvcmU6
OkhUTUxEb2N1bWVudCAqKWltcGw7Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxE
b2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi1AZW5kCi0KLQotLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUhUTUxGb3JtRWxlbWVudAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NSFRNTEZvcm1FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0K
LSsgKERPTUhUTUxGb3JtRWxlbWVudCAqKV9IVE1MRm9ybUVsZW1lbnRXaXRoOihIVE1MRm9ybUVs
ZW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxGb3JtRWxlbWVu
dCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLUBlbmQKLQogCiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NSFRNTElucHV0RWxlbWVudApAQCAtMTkz
LDI4ICs4OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEBlbmQKIAotQGltcGxl
bWVudGF0aW9uIERPTUhUTUxJbnB1dEVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudCAqKV9IVE1MSW5wdXRFbGVtZW50Ci17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQgKj4oRE9NX2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0KLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01IVE1MSW1hZ2VFbGVtZW50Ci0KLUBpbXBsZW1lbnRh
dGlvbiBET01IVE1MSW1hZ2VFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKFdlYkNvcmU6
OkhUTUxJbWFnZUVsZW1lbnQgKilfSFRNTEltYWdlRWxlbWVudAotewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Kj4oRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC8vIERPTUhUTUxPYmplY3RFbGVtZW50CkBAIC0yMzAsODcgKzEwNCw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERP
TUhUTUxPYmplY3RFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKFdlYkNvcmU6OkhUTUxP
YmplY3RFbGVtZW50ICopX0hUTUxPYmplY3RFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Kj4oRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlv
biBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01I
VE1MVGFibGVDYXB0aW9uRWxlbWVudCAqKV9IVE1MVGFibGVDYXB0aW9uRWxlbWVudFdpdGg6KEhU
TUxUYWJsZUNhcHRpb25FbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
T01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19
Ci0KLS0gKEhUTUxUYWJsZUNhcHRpb25FbGVtZW50ICopX0hUTUxUYWJsZUNhcHRpb25FbGVtZW50
Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Kj4oRE9N
X2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ci0KLUBp
bXBsZW1lbnRhdGlvbiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAoV2ViQ29yZUludGVybmFs
KQotCi0rIChET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAqKV9IVE1MVGFibGVTZWN0aW9uRWxl
bWVudFdpdGg6KEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0
aDppbXBsXSk7Ci19Ci0KLS0gKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICopX0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLQotLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUhUTUxUYWJsZUVsZW1lbnQK
LQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxUYWJsZUVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkK
LQotKyAoRE9NSFRNTFRhYmxlRWxlbWVudCAqKV9IVE1MVGFibGVFbGVtZW50V2l0aDooSFRNTFRh
YmxlRWxlbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTFRhYmxl
RWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEhUTUxUYWJsZUVs
ZW1lbnQgKilfSFRNTFRhYmxlRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
VGFibGVFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0K
LQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUhUTUxUYWJsZUNl
bGxFbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MVGFibGVDZWxsRWxlbWVudCAoV2Vi
Q29yZUludGVybmFsKQotCi0rIChET01IVE1MVGFibGVDZWxsRWxlbWVudCAqKV9IVE1MVGFibGVD
ZWxsRWxlbWVudFdpdGg6KEhUTUxUYWJsZUNlbGxFbGVtZW50ICopaW1wbAotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01IVE1MVGFibGVDZWxsRWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0
aDppbXBsXSk7Ci19Ci0KLS0gKEhUTUxUYWJsZUNlbGxFbGVtZW50ICopX0hUTUxUYWJsZUNlbGxF
bGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4o
RE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KIAogI3ByYWdtYSBtYXJr
IERPTSBFWFRFTlNJT05TCiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRG9j
dW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxEb2N1
bWVudC5tbQkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRN
TERvY3VtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMTEgKzQyLDEwOCBAQAogCiBAaW1w
bGVtZW50YXRpb24gRE9NSFRNTERvY3VtZW50CiAKLS0gKFdlYkNvcmU6OkhUTUxEb2N1bWVudCAq
KV9IVE1MRG9jdW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERv
Y3VtZW50ICo+KERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKSk7Ci19CisjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERvY3VtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIAogLSAoTlNTdHJpbmcgKil0aXRsZQog
ewotICAgIHJldHVybiBbc2VsZiBfSFRNTERvY3VtZW50XS0+dGl0bGUoKTsKKyAgICByZXR1cm4g
SU1QTC0+dGl0bGUoKTsKIH0KIAogLSAodm9pZClzZXRUaXRsZTooTlNTdHJpbmcgKil0aXRsZQog
ewotICAgIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT5zZXRUaXRsZSh0aXRsZSk7CisgICAgSU1QTC0+
c2V0VGl0bGUodGl0bGUpOwogfQogCiAtIChOU1N0cmluZyAqKXJlZmVycmVyCiB7Ci0gICAgIHJl
dHVybiBbc2VsZiBfSFRNTERvY3VtZW50XS0+cmVmZXJyZXIoKTsKKyAgICAgcmV0dXJuIElNUEwt
PnJlZmVycmVyKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopZG9tYWluCiB7Ci0gICAgIHJldHVybiBb
c2VsZiBfSFRNTERvY3VtZW50XS0+ZG9tYWluKCk7CisgICAgIHJldHVybiBJTVBMLT5kb21haW4o
KTsKIH0KIAogLSAoTlNTdHJpbmcgKilVUkwKIHsKLSAgICByZXR1cm4gW3NlbGYgX0hUTUxEb2N1
bWVudF0tPlVSTCgpLmdldE5TU3RyaW5nKCk7CisgICAgcmV0dXJuIElNUEwtPlVSTCgpLmdldE5T
U3RyaW5nKCk7CiB9CiAKIC0gKERPTUhUTUxFbGVtZW50ICopYm9keQogewotICAgIHJldHVybiBb
RE9NSFRNTEVsZW1lbnQgX0hUTUxFbGVtZW50V2l0aDpbc2VsZiBfSFRNTERvY3VtZW50XS0+Ym9k
eSgpXTsKKyAgICByZXR1cm4gW0RPTUhUTUxFbGVtZW50IF9IVE1MRWxlbWVudFdpdGg6SU1QTC0+
Ym9keSgpXTsKIH0KIAogLSAodm9pZClzZXRCb2R5OihET01IVE1MRWxlbWVudCAqKWJvZHkKIHsK
ICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfSFRNTERvY3Vt
ZW50XS0+c2V0Qm9keShbYm9keSBfSFRNTEVsZW1lbnRdLCBlYyk7CisgICAgSU1QTC0+c2V0Qm9k
eShbYm9keSBfSFRNTEVsZW1lbnRdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0K
IAogLSAoRE9NSFRNTENvbGxlY3Rpb24gKilpbWFnZXMKIHsKLSAgICByZXR1cm4gW0RPTUhUTUxD
b2xsZWN0aW9uIF9IVE1MQ29sbGVjdGlvbldpdGg6W3NlbGYgX0hUTUxEb2N1bWVudF0tPmltYWdl
cygpLmdldCgpXTsKKyAgICByZXR1cm4gW0RPTUhUTUxDb2xsZWN0aW9uIF9IVE1MQ29sbGVjdGlv
bldpdGg6SU1QTC0+aW1hZ2VzKCkuZ2V0KCldOwogfQogCiAtIChET01IVE1MQ29sbGVjdGlvbiAq
KWFwcGxldHMKIHsKLSAgICByZXR1cm4gW0RPTUhUTUxDb2xsZWN0aW9uIF9IVE1MQ29sbGVjdGlv
bldpdGg6W3NlbGYgX0hUTUxEb2N1bWVudF0tPmFwcGxldHMoKS5nZXQoKV07CisgICAgcmV0dXJu
IFtET01IVE1MQ29sbGVjdGlvbiBfSFRNTENvbGxlY3Rpb25XaXRoOklNUEwtPmFwcGxldHMoKS5n
ZXQoKV07CiB9CiAKIC0gKERPTUhUTUxDb2xsZWN0aW9uICopbGlua3MKIHsKLSAgICByZXR1cm4g
W0RPTUhUTUxDb2xsZWN0aW9uIF9IVE1MQ29sbGVjdGlvbldpdGg6W3NlbGYgX0hUTUxEb2N1bWVu
dF0tPmxpbmtzKCkuZ2V0KCldOworICAgIHJldHVybiBbRE9NSFRNTENvbGxlY3Rpb24gX0hUTUxD
b2xsZWN0aW9uV2l0aDpJTVBMLT5saW5rcygpLmdldCgpXTsKIH0KIAogLSAoRE9NSFRNTENvbGxl
Y3Rpb24gKilmb3JtcwogewotICAgIHJldHVybiBbRE9NSFRNTENvbGxlY3Rpb24gX0hUTUxDb2xs
ZWN0aW9uV2l0aDpbc2VsZiBfSFRNTERvY3VtZW50XS0+Zm9ybXMoKS5nZXQoKV07CisgICAgcmV0
dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfSFRNTENvbGxlY3Rpb25XaXRoOklNUEwtPmZvcm1zKCku
Z2V0KCldOwogfQogCiAtIChET01IVE1MQ29sbGVjdGlvbiAqKWFuY2hvcnMKIHsKLSAgICByZXR1
cm4gW0RPTUhUTUxDb2xsZWN0aW9uIF9IVE1MQ29sbGVjdGlvbldpdGg6W3NlbGYgX0hUTUxEb2N1
bWVudF0tPmFuY2hvcnMoKS5nZXQoKV07CisgICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBf
SFRNTENvbGxlY3Rpb25XaXRoOklNUEwtPmFuY2hvcnMoKS5nZXQoKV07CiB9CiAKIC0gKE5TU3Ry
aW5nICopY29va2llCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT5jb29raWUo
KTsKKyAgICByZXR1cm4gSU1QTC0+Y29va2llKCk7CiB9CiAKIC0gKHZvaWQpc2V0Q29va2llOihO
U1N0cmluZyAqKWNvb2tpZQogewotICAgIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT5zZXRDb29raWUo
Y29va2llKTsKKyAgICBJTVBMLT5zZXRDb29raWUoY29va2llKTsKIH0KIAogLSAodm9pZClvcGVu
CiB7Ci0gICAgW3NlbGYgX0hUTUxEb2N1bWVudF0tPm9wZW4oKTsKKyAgICBJTVBMLT5vcGVuKCk7
CiB9CiAKIC0gKHZvaWQpY2xvc2UKIHsKLSAgICBbc2VsZiBfSFRNTERvY3VtZW50XS0+Y2xvc2Uo
KTsKKyAgICBJTVBMLT5jbG9zZSgpOwogfQogCiAtICh2b2lkKXdyaXRlOihOU1N0cmluZyAqKXRl
eHQKIHsKLSAgICBbc2VsZiBfSFRNTERvY3VtZW50XS0+d3JpdGUodGV4dCk7CisgICAgSU1QTC0+
d3JpdGUodGV4dCk7CiB9CiAKIC0gKHZvaWQpd3JpdGVsbjooTlNTdHJpbmcgKil0ZXh0CiB7Ci0g
ICAgW3NlbGYgX0hUTUxEb2N1bWVudF0tPndyaXRlbG4odGV4dCk7CisgICAgSU1QTC0+d3JpdGVs
bih0ZXh0KTsKIH0KIAogLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAq
KWVsZW1lbnRJZAogewotICAgIHJldHVybiBbRE9NRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYg
X0hUTUxEb2N1bWVudF0tPmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCldOworICAgIHJldHVybiBb
RE9NRWxlbWVudCBfZWxlbWVudFdpdGg6SU1QTC0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV07
CiB9CiAKIC0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeU5hbWU6KE5TU3RyaW5nICopZWxl
bWVudE5hbWUKIHsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYg
X0hUTUxEb2N1bWVudF0tPmdldEVsZW1lbnRzQnlOYW1lKGVsZW1lbnROYW1lKS5nZXQoKV07Cisg
ICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOklNUEwtPmdldEVsZW1lbnRzQnlO
YW1lKGVsZW1lbnROYW1lKS5nZXQoKV07CiB9CiAKIEBlbmQKQEAgLTE2NSwzICsxNjIsMTggQEAK
IH0KIAogQGVuZAorCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MRG9jdW1lbnQgKFdlYkNvcmVJ
bnRlcm5hbCkKKworLSAoV2ViQ29yZTo6SFRNTERvY3VtZW50ICopX0hUTUxEb2N1bWVudAorewor
ICAgIHJldHVybiBJTVBMOworfQorCisrIChET01IVE1MRG9jdW1lbnQgKilfSFRNTERvY3VtZW50
V2l0aDooV2ViQ29yZTo6SFRNTERvY3VtZW50ICopaW1wbDsKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RE9NSFRNTERvY3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Cit9CisK
K0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MT3B0aW9uRWxlbWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTE9wdGlvbkVsZW1l
bnQubW0JKHJldmlzaW9uIDE2MzY5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxP
cHRpb25FbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3NCArMzcsODUgQEAKIC8vIGRp
ZmZlcmVuZWNlcyBiZXR3ZWVuIHRoZSBvbGQgYmluZGluZ3MgYW5kIHRoZSBpZGwuCiBAaW1wbGVt
ZW50YXRpb24gRE9NSFRNTE9wdGlvbkVsZW1lbnQKIAotLSAoV2ViQ29yZTo6SFRNTE9wdGlvbkVs
ZW1lbnQgKilfb3B0aW9uRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MT3B0aW9uRWxlbWVudCAqPihET01fY2FzdDxXZWJDb3JlOjpOb2RlICo+KF9pbnRlcm5h
bCkpOwotfQorI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIAogLSAo
RE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybQogewotICAgIHJldHVybiBbRE9NSFRNTEZvcm1FbGVt
ZW50IF9IVE1MRm9ybUVsZW1lbnRXaXRoOltzZWxmIF9vcHRpb25FbGVtZW50XS0+Zm9ybSgpXTsK
KyAgICByZXR1cm4gW0RPTUhUTUxGb3JtRWxlbWVudCBfSFRNTEZvcm1FbGVtZW50V2l0aDpJTVBM
LT5mb3JtKCldOwogfQogCiAtIChCT09MKWRlZmF1bHRTZWxlY3RlZAogewotICAgIHJldHVybiBb
c2VsZiBfb3B0aW9uRWxlbWVudF0tPmRlZmF1bHRTZWxlY3RlZCgpOworICAgIHJldHVybiBJTVBM
LT5kZWZhdWx0U2VsZWN0ZWQoKTsKIH0KIAogLSAodm9pZClzZXREZWZhdWx0U2VsZWN0ZWQ6KEJP
T0wpZGVmYXVsdFNlbGVjdGVkCiB7Ci0gICAgW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5zZXREZWZh
dWx0U2VsZWN0ZWQoZGVmYXVsdFNlbGVjdGVkKTsKKyAgICBJTVBMLT5zZXREZWZhdWx0U2VsZWN0
ZWQoZGVmYXVsdFNlbGVjdGVkKTsKIH0KIAogLSAoTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgcmV0
dXJuIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+dGV4dCgpOworICAgIHJldHVybiBJTVBMLT50ZXh0
KCk7CiB9CiAKIC0gKGludClpbmRleAogewotICAgIHJldHVybiBbc2VsZiBfb3B0aW9uRWxlbWVu
dF0tPmluZGV4KCk7CisgICAgcmV0dXJuIElNUEwtPmluZGV4KCk7CiB9CiAKIC0gKEJPT0wpZGlz
YWJsZWQKIHsKLSAgICByZXR1cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5kaXNhYmxlZCgpOwor
ICAgIHJldHVybiBJTVBMLT5kaXNhYmxlZCgpOwogfQogCiAtICh2b2lkKXNldERpc2FibGVkOihC
T09MKWRpc2FibGVkCiB7Ci0gICAgW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5zZXREaXNhYmxlZChk
aXNhYmxlZCk7CisgICAgSU1QTC0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCiAtIChOU1N0
cmluZyAqKWxhYmVsCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+bGFiZWwo
KTsKKyAgICByZXR1cm4gSU1QTC0+bGFiZWwoKTsKIH0KIAogLSAodm9pZClzZXRMYWJlbDooTlNT
dHJpbmcgKilsYWJlbAogewotICAgIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+c2V0TGFiZWwobGFi
ZWwpOworICAgIElNUEwtPnNldExhYmVsKGxhYmVsKTsKIH0KIAogLSAoQk9PTClzZWxlY3RlZAog
ewotICAgIHJldHVybiBbc2VsZiBfb3B0aW9uRWxlbWVudF0tPnNlbGVjdGVkKCk7CisgICAgcmV0
dXJuIElNUEwtPnNlbGVjdGVkKCk7CiB9CiAKIC0gKHZvaWQpc2V0U2VsZWN0ZWQ6KEJPT0wpc2Vs
ZWN0ZWQKIHsKLSAgICBbc2VsZiBfb3B0aW9uRWxlbWVudF0tPnNldFNlbGVjdGVkKHNlbGVjdGVk
KTsKKyAgICBJTVBMLT5zZXRTZWxlY3RlZChzZWxlY3RlZCk7CiB9CiAKIC0gKE5TU3RyaW5nICop
dmFsdWUKIHsKLSAgICByZXR1cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT52YWx1ZSgpOworICAg
IHJldHVybiBJTVBMLT52YWx1ZSgpOwogfQogCiAtICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAq
KXZhbHVlCiB7Ci0gICAgW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5zZXRWYWx1ZSh2YWx1ZSk7Cisg
ICAgSU1QTC0+c2V0VmFsdWUodmFsdWUpOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBE
T01IVE1MT3B0aW9uRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQorCistIChXZWJDb3JlOjpIVE1M
T3B0aW9uRWxlbWVudCAqKV9IVE1MT3B0aW9uRWxlbWVudAoreworICAgIHJldHVybiBJTVBMOwor
fQorCisrIChET01IVE1MT3B0aW9uRWxlbWVudCAqKV9IVE1MT3B0aW9uRWxlbWVudFdpdGg6KFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50ICopaW1wbAoreworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01IVE1MT3B0aW9uRWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAK
IEBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCShyZXZpc2lvbiAxNjM2
OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDMsMzAgKzE0MywzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEBpbnRlcmZhY2Ug
RE9NTmFtZWROb2RlTWFwIChXZWJDb3JlSW50ZXJuYWwpCiArIChET01OYW1lZE5vZGVNYXAgKilf
bmFtZWROb2RlTWFwV2l0aDooV2ViQ29yZTo6TmFtZWROb2RlTWFwICopaW1wbDsKKy0gKFdlYkNv
cmU6Ok5hbWVkTm9kZU1hcCAqKV9uYW1lZE5vZGVNYXA7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9N
Tm9kZUxpc3QgKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTU5vZGVMaXN0ICopX25vZGVMaXN0V2l0
aDooV2ViQ29yZTo6Tm9kZUxpc3QgKilpbXBsOworLSAoV2ViQ29yZTo6Tm9kZUxpc3QgKilfbm9k
ZUxpc3Q7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NVGV4dCAoV2ViQ29yZUludGVybmFsKQogKyAo
RE9NVGV4dCAqKV90ZXh0V2l0aDooV2ViQ29yZTo6VGV4dCAqKWltcGw7CistIChXZWJDb3JlOjpU
ZXh0ICopX3RleHQ7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NQ29tbWVudCAoV2ViQ29yZUludGVy
bmFsKQogKyAoRE9NQ29tbWVudCAqKV9jb21tZW50V2l0aDooV2ViQ29yZTo6Q29tbWVudCAqKWlt
cGw7CistIChXZWJDb3JlOjpDb21tZW50ICopX2NvbW1lbnQ7CiBAZW5kCiAKIEBpbnRlcmZhY2Ug
RE9NQ0RBVEFTZWN0aW9uIChXZWJDb3JlSW50ZXJuYWwpCiArIChET01DREFUQVNlY3Rpb24gKilf
Q0RBVEFTZWN0aW9uV2l0aDooV2ViQ29yZTo6Q0RBVEFTZWN0aW9uICopaW1wbDsKKy0gKFdlYkNv
cmU6OkNEQVRBU2VjdGlvbiAqKV9DREFUQVNlY3Rpb247CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uIChXZWJDb3JlSW50ZXJuYWwpCiArIChET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24gKilfcHJvY2Vzc2luZ0luc3RydWN0aW9uV2l0aDooV2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uICopaW1wbDsKKy0gKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlv
biAqKV9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb247CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRW50aXR5
UmVmZXJlbmNlIChXZWJDb3JlSW50ZXJuYWwpCiArIChET01FbnRpdHlSZWZlcmVuY2UgKilfZW50
aXR5UmVmZXJlbmNlV2l0aDooV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlICopaW1wbDsKKy0gKFdl
YkNvcmU6OkVudGl0eVJlZmVyZW5jZSAqKV9lbnRpdHlSZWZlcmVuY2U7CiBAZW5kCiAKIEBpbnRl
cmZhY2UgRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQpAQCAtMTkyLDI2ICsxOTksMzcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQGludGVyZmFjZSBET01Eb2N1bWVudCAoV2ViQ29yZUludGVy
bmFsKQogKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRXaXRoOihXZWJDb3JlOjpEb2N1bWVudCAq
KWltcGw7CiAtIChXZWJDb3JlOjpEb2N1bWVudCAqKV9kb2N1bWVudDsKK0BlbmQKKworQGludGVy
ZmFjZSBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsRXh0ZW5zaW9uKQogLSAoRE9NRWxlbWVu
dCAqKV9vd25lckVsZW1lbnQ7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVu
dCAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZy
YWdtZW50V2l0aDooV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCAqKWltcGw7Ci0tIChXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50OworLSAoV2ViQ29yZTo6RG9jdW1lbnRGcmFn
bWVudCAqKV9kb2N1bWVudEZyYWdtZW50OwogQGVuZAogCiAvLyBIVE1MIEludGVybmFsIEludGVy
ZmFjZXMKIAotQGludGVyZmFjZSBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKFdlYkNvcmVJbnRl
cm5hbCkKLSsgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKV9IVE1MT3B0aW9uc0NvbGxlY3Rp
b25XaXRoOihXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24gKilpbXBsOworQGludGVyZmFj
ZSBET01IVE1MT3B0aW9uRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NSFRNTE9wdGlv
bkVsZW1lbnQgKilfSFRNTE9wdGlvbkVsZW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudCAqKWltcGw7CistIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudCAqKV9IVE1MT3B0aW9u
RWxlbWVudDsKIEBlbmQKIAotQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQgKFdlYkNvcmVJbnRl
cm5hbCkKLSsgKERPTUhUTUxEb2N1bWVudCAqKV9IVE1MRG9jdW1lbnRXaXRoOihXZWJDb3JlOjpI
VE1MRG9jdW1lbnQgKilpbXBsOworQGludGVyZmFjZSBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24g
KFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKV9IVE1MT3B0
aW9uc0NvbGxlY3Rpb25XaXRoOihXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24gKilpbXBs
OworLSAoV2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uICopX0hUTUxPcHRpb25zQ29sbGVj
dGlvbjsKIEBlbmQKIAogQGludGVyZmFjZSBET01IVE1MQ29sbGVjdGlvbiAoV2ViQ29yZUludGVy
bmFsKQogKyAoRE9NSFRNTENvbGxlY3Rpb24gKilfSFRNTENvbGxlY3Rpb25XaXRoOihXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbiAqKWltcGw7CistIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbiAqKV9I
VE1MQ29sbGVjdGlvbjsKK0BlbmQKKworQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQgKFdlYkNv
cmVJbnRlcm5hbCkKKysgKERPTUhUTUxEb2N1bWVudCAqKV9IVE1MRG9jdW1lbnRXaXRoOihXZWJD
b3JlOjpIVE1MRG9jdW1lbnQgKilpbXBsOworLSAoV2ViQ29yZTo6SFRNTERvY3VtZW50ICopX0hU
TUxEb2N1bWVudDsKIEBlbmQKIAogQGludGVyZmFjZSBET01IVE1MRWxlbWVudCAoV2ViQ29yZUlu
dGVybmFsKQpAQCAtMjIxLDYgKzIzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQGludGVy
ZmFjZSBET01IVE1MRm9ybUVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTUhUTUxGb3Jt
RWxlbWVudCAqKV9IVE1MRm9ybUVsZW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQg
KilpbXBsOworLSAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50ICopX0hUTUxGb3JtRWxlbWVudDsK
IEBlbmQKIAogQGludGVyZmFjZSBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCAoV2ViQ29yZUlu
dGVybmFsKQpAQCAtMjQ0LDE4ICsyNjMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQGVuZAog
CiBAaW50ZXJmYWNlIERPTUhUTUxJbWFnZUVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERP
TUhUTUxJbWFnZUVsZW1lbnQgKilfSFRNTEltYWdlRWxlbWVudFdpdGg6KFdlYkNvcmU6OkhUTUxJ
bWFnZUVsZW1lbnQgKilpbXBsOwogLSAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCAqKV9IVE1M
SW1hZ2VFbGVtZW50OwogQGVuZAogCiBAaW50ZXJmYWNlIERPTUhUTUxPYmplY3RFbGVtZW50IChX
ZWJDb3JlSW50ZXJuYWwpCisrIChET01IVE1MT2JqZWN0RWxlbWVudCAqKV9IVE1MT2JqZWN0RWxl
bWVudFdpdGg6KFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50ICopaW1wbDsKIC0gKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50ICopX0hUTUxPYmplY3RFbGVtZW50OwogQGVuZAogCi1AaW50ZXJm
YWNlIERPTUhUTUxPcHRpb25FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0tIChXZWJDb3JlOjpI
VE1MT3B0aW9uRWxlbWVudCAqKV9IVE1MT3B0aW9uRWxlbWVudDsKLUBlbmQKLQogQGludGVyZmFj
ZSBET01IVE1MSW5wdXRFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01IVE1MSW5wdXRF
bGVtZW50ICopX0hUTUxJbnB1dEVsZW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
ICopaW1wbDsKIC0gKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQgKilfSFRNTElucHV0RWxlbWVu
dDsKIEBlbmQKIApAQCAtMjYzLDYgKzI4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQGlu
dGVyZmFjZSBET01DU1NSdWxlTGlzdCAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NQ1NTUnVsZUxp
c3QgKilfQ1NTUnVsZUxpc3RXaXRoOihXZWJDb3JlOjpDU1NSdWxlTGlzdCAqKWltcGw7CistIChX
ZWJDb3JlOjpDU1NSdWxlTGlzdCAqKV9DU1NSdWxlTGlzdDsKIEBlbmQKIAogQGludGVyZmFjZSBE
T01DU1NSdWxlIChXZWJDb3JlSW50ZXJuYWwpCkBAIC0yODMsMTAgKzMwMiwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEBpbnRlcmZhY2UgRE9NUmVjdCAoV2ViQ29yZUludGVybmFsKQogKyAo
RE9NUmVjdCAqKV9yZWN0V2l0aDooV2ViQ29yZTo6UmVjdEltcGwgKilpbXBsOworLSAoV2ViQ29y
ZTo6UmVjdEltcGwgKilfcmVjdDsKIEBlbmQKIAogQGludGVyZmFjZSBET01Db3VudGVyIChXZWJD
b3JlSW50ZXJuYWwpCiArIChET01Db3VudGVyICopX2NvdW50ZXJXaXRoOihXZWJDb3JlOjpDb3Vu
dGVyICopaW1wbDsKKy0gKFdlYkNvcmU6OkNvdW50ZXIgKilfY291bnRlcjsKIEBlbmQKIAogQGlu
dGVyZmFjZSBET01DU1NTdHlsZURlY2xhcmF0aW9uIChXZWJDb3JlSW50ZXJuYWwpCkBAIC0zMDYs
MTAgKzMyNywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEBpbnRlcmZhY2UgRE9NU3R5bGVT
aGVldExpc3QgKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTVN0eWxlU2hlZXRMaXN0ICopX3N0eWxl
U2hlZXRMaXN0V2l0aDooV2ViQ29yZTo6U3R5bGVTaGVldExpc3QgKilpbXBsOworLSAoV2ViQ29y
ZTo6U3R5bGVTaGVldExpc3QgKilfc3R5bGVTaGVldExpc3Q7CiBAZW5kCiAKIEBpbnRlcmZhY2Ug
RE9NTWVkaWFMaXN0IChXZWJDb3JlSW50ZXJuYWwpCiArIChET01NZWRpYUxpc3QgKilfbWVkaWFM
aXN0V2l0aDooV2ViQ29yZTo6TWVkaWFMaXN0ICopaW1wbDsKKy0gKFdlYkNvcmU6Ok1lZGlhTGlz
dCAqKV9tZWRpYUxpc3Q7CiBAZW5kCiAKIC8vIEV2ZW50cyBJbnRlcm5hbCBJbnRlcmZhY2VzCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNDggKzI4LDQ5
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRPTU5vZGUuaCIKIAotI2ltcG9ydCAi
RE9NSW50ZXJuYWwuaCIgLy8gbmVlZGVkIGZvciBET01fY2FzdDw+Ci0jaW1wb3J0ICJOb2RlLmgi
IC8vIGltcGxlbWVudGF0aW9uIGNsYXNzCi0KICNpbXBvcnQgIkF0b21pY1N0cmluZy5oIgogI2lt
cG9ydCAiRE9NRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJE
T01OYW1lZE5vZGVNYXAuaCIKICNpbXBvcnQgIkRPTU5vZGVMaXN0LmgiCi0jaW1wb3J0ICJEZXBy
ZWNhdGVkVmFsdWVMaXN0LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJOYW1lZEF0
dHJNYXAuaCIKICNpbXBvcnQgIk5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiTm9kZS5oIgogI2lt
cG9ydCAiTm9kZUxpc3QuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW1wb3J0ICJS
ZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYv
VmVjdG9yLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCiAKKyNkZWZpbmUgSU1QTCByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpCisKIC0gKHZvaWQpZGVhbGxv
YwogewogICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUg
Kj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKICAgICBpZiAoX2ludGVybmFs
KQotICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpOb2RlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7
CisgICAgICAgIElNUEwtPmRlcmVmKCk7CiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIAogLSAo
TlNTdHJpbmcgKilub2RlTmFtZQogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVOYW1l
KCk7CisgICAgcmV0dXJuIElNUEwtPm5vZGVOYW1lKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbm9k
ZVZhbHVlCiB7CiAgICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdlIGNhbiByYWlzZSBhIERPTVNU
UklOR19TSVpFX0VSUi4KICAgICAvLyBIb3dldmVyLCB0aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3Qg
cmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9k
ZVZhbHVlKCk7CisgICAgcmV0dXJuIElNUEwtPm5vZGVWYWx1ZSgpOwogfQogCiAtICh2b2lkKXNl
dE5vZGVWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmcKQEAgLTc3LDUzICs3OCw1MyBAQAogICAgIEFT
U0VSVChzdHJpbmcpOwogICAgIAogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFtzZWxmIF9ub2RlXS0+c2V0Tm9kZVZhbHVlKHN0cmluZywgZWMpOworICAgIElNUEwtPnNl
dE5vZGVWYWx1ZShzdHJpbmcsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiAt
ICh1bnNpZ25lZCBzaG9ydClub2RlVHlwZQogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5v
ZGVUeXBlKCk7CisgICAgcmV0dXJuIElNUEwtPm5vZGVUeXBlKCk7CiB9CiAKIC0gKERPTU5vZGUg
KilwYXJlbnROb2RlCiB7Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9k
ZV0tPnBhcmVudE5vZGUoKV07CisgICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpJTVBMLT5w
YXJlbnROb2RlKCldOwogfQogCiAtIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKIHsKLSAgICBy
ZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVz
KCkuZ2V0KCldOworICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpJTVBMLT5j
aGlsZE5vZGVzKCkuZ2V0KCldOwogfQogCiAtIChET01Ob2RlICopZmlyc3RDaGlsZAogewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOwor
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6SU1QTC0+Zmlyc3RDaGlsZCgpXTsKIH0KIAog
LSAoRE9NTm9kZSAqKWxhc3RDaGlsZAogewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX25vZGVdLT5sYXN0Q2hpbGQoKV07CisgICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpJTVBMLT5sYXN0Q2hpbGQoKV07CiB9CiAKIC0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmcK
IHsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+cHJldmlvdXNT
aWJsaW5nKCldOworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6SU1QTC0+cHJldmlvdXNT
aWJsaW5nKCldOwogfQogCiAtIChET01Ob2RlICopbmV4dFNpYmxpbmcKIHsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+bmV4dFNpYmxpbmcoKV07CisgICAgcmV0
dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpJTVBMLT5uZXh0U2libGluZygpXTsKIH0KIAogLSAoRE9N
TmFtZWROb2RlTWFwICopYXR0cmlidXRlcwogewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFw
IF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9ub2RlXS0+YXR0cmlidXRlcygpXTsKKyAgICByZXR1
cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpJTVBMLT5hdHRyaWJ1dGVzKCld
OwogfQogCiAtIChET01Eb2N1bWVudCAqKW93bmVyRG9jdW1lbnQKIHsKLSAgICByZXR1cm4gW0RP
TURvY3VtZW50IF9kb2N1bWVudFdpdGg6W3NlbGYgX25vZGVdLT5kb2N1bWVudCgpXTsKKyAgICBy
ZXR1cm4gW0RPTURvY3VtZW50IF9kb2N1bWVudFdpdGg6SU1QTC0+ZG9jdW1lbnQoKV07CiB9CiAK
IC0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUg
KilyZWZDaGlsZApAQCAtMTMyLDcgKzEzMyw3IEBACiAgICAgQVNTRVJUKHJlZkNoaWxkKTsKIAog
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0t
Pmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCisg
ICAgaWYgKElNUEwtPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25v
ZGVdLCBlYykpCiAgICAgICAgIHJldHVybiBuZXdDaGlsZDsKICAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwogICAgIHJldHVybiBuaWw7CkBAIC0xNDQsNyArMTQ1LDcgQEAKICAgICBBU1NFUlQob2xk
Q2hpbGQpOwogCiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtz
ZWxmIF9ub2RlXS0+cmVwbGFjZUNoaWxkKFtuZXdDaGlsZCBfbm9kZV0sIFtvbGRDaGlsZCBfbm9k
ZV0sIGVjKSkKKyAgICBpZiAoSU1QTC0+cmVwbGFjZUNoaWxkKFtuZXdDaGlsZCBfbm9kZV0sIFtv
bGRDaGlsZCBfbm9kZV0sIGVjKSkKICAgICAgICAgcmV0dXJuIG9sZENoaWxkOwogICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTE1NSw3ICsxNTYsNyBAQAogICAg
IEFTU0VSVChvbGRDaGlsZCk7CiAKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpZiAoW3NlbGYgX25vZGVdLT5yZW1vdmVDaGlsZChbb2xkQ2hpbGQgX25vZGVdLCBlYykp
CisgICAgaWYgKElNUEwtPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKICAgICAg
ICAgcmV0dXJuIG9sZENoaWxkOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJu
IG5pbDsKQEAgLTE2Niw3ICsxNjcsNyBAQAogICAgIEFTU0VSVChuZXdDaGlsZCk7CiAKICAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYgX25vZGVdLT5hcHBl
bmRDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBlYykpCisgICAgaWYgKElNUEwtPmFwcGVuZENoaWxk
KFtuZXdDaGlsZCBfbm9kZV0sIGVjKSkKICAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwogICAgIHJh
aXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTE3NCwxNyArMTc1LDE3IEBA
CiAKIC0gKEJPT0wpaGFzQ2hpbGROb2RlcwogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhh
c0NoaWxkTm9kZXMoKTsKKyAgICByZXR1cm4gSU1QTC0+aGFzQ2hpbGROb2RlcygpOwogfQogCiAt
IChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXAKIHsKLSAgICByZXR1cm4gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9ub2RlXS0+Y2xvbmVOb2RlKGRlZXApLmdldCgpXTsKKyAgICByZXR1
cm4gW0RPTU5vZGUgX25vZGVXaXRoOklNUEwtPmNsb25lTm9kZShkZWVwKS5nZXQoKV07CiB9CiAK
IC0gKHZvaWQpbm9ybWFsaXplCiB7Ci0gICAgW3NlbGYgX25vZGVdLT5ub3JtYWxpemUoKTsKKyAg
ICBJTVBMLT5ub3JtYWxpemUoKTsKIH0KIAogLSAoQk9PTClpc1N1cHBvcnRlZDooTlNTdHJpbmcg
KilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCkBAIC0xOTIsMTcgKzE5MywxNyBAQAogICAg
IEFTU0VSVChmZWF0dXJlKTsKICAgICBBU1NFUlQodmVyc2lvbik7CiAKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKKyAgICByZXR1cm4gSU1Q
TC0+aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbik7CiB9CiAKIC0gKE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bmFtZXNwYWNlVVJJKCk7Cisg
ICAgcmV0dXJuIElNUEwtPm5hbWVzcGFjZVVSSSgpOwogfQogCiAtIChOU1N0cmluZyAqKXByZWZp
eAogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnByZWZpeCgpOworICAgIHJldHVybiBJTVBM
LT5wcmVmaXgoKTsKIH0KIAogLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4CkBA
IC0yMTAsNTUgKzIxMSw1NCBAQAogICAgIEFTU0VSVChwcmVmaXgpOwogCiAgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgV2ViQ29yZTo6U3RyaW5nIHByZWZpeFN0cihwcmVm
aXgpOwotICAgIFtzZWxmIF9ub2RlXS0+c2V0UHJlZml4KHByZWZpeFN0ci5pbXBsKCksIGVjKTsK
KyAgICBJTVBMLT5zZXRQcmVmaXgocHJlZml4LCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKIH0KIAogLSAoTlNTdHJpbmcgKilsb2NhbE5hbWUKIHsKLSAgICByZXR1cm4gW3NlbGYgX25v
ZGVdLT5sb2NhbE5hbWUoKTsKKyAgICByZXR1cm4gSU1QTC0+bG9jYWxOYW1lKCk7CiB9CiAKIC0g
KEJPT0wpaGFzQXR0cmlidXRlcwogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0F0dHJp
YnV0ZXMoKTsKKyAgICByZXR1cm4gSU1QTC0+aGFzQXR0cmlidXRlcygpOwogfQogCiAtIChCT09M
KWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
PmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7CisgICAgcmV0dXJuIElNUEwtPmlzU2FtZU5vZGUo
W290aGVyIF9ub2RlXSk7CiB9CiAKIC0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhl
cgogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzRXF1YWxOb2RlKFtvdGhlciBfbm9kZV0p
OworICAgIHJldHVybiBJTVBMLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsKIH0KIAogLSAo
Qk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCiB7Ci0gICAg
cmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVSSSk7Cisg
ICAgcmV0dXJuIElNUEwtPmlzRGVmYXVsdE5hbWVzcGFjZShuYW1lc3BhY2VVUkkpOwogfQogCiAt
IChOU1N0cmluZyAqKWxvb2t1cFByZWZpeDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKIHsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBQcmVmaXgobmFtZXNwYWNlVVJJKTsKKyAgICBy
ZXR1cm4gSU1QTC0+bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7CiB9CiAKIC0gKE5TU3RyaW5n
ICopbG9va3VwTmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAogewotICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOworICAgIHJldHVybiBJTVBM
LT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsKIH0KIAogLSAoTlNTdHJpbmcgKil0ZXh0Q29u
dGVudAogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnRleHRDb250ZW50KCk7CisgICAgcmV0
dXJuIElNUEwtPnRleHRDb250ZW50KCk7CiB9CiAKIC0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5T
U3RyaW5nICopdGV4dAogewogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFtzZWxmIF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOworICAgIElNUEwtPnNldFRl
eHRDb250ZW50KHRleHQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCkBAIC0y
NjgsNyArMjY4LDcgQEAKIAogLSAoTlNSZWN0KWJvdW5kaW5nQm94CiB7Ci0gICAgV2ViQ29yZTo6
UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKKyAgICBX
ZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gSU1QTC0+cmVuZGVyZXIoKTsKICAgICBp
ZiAocmVuZGVyZXIpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKICAgICByZXR1cm4gTlNaZXJvUmVjdDsKQEAgLTI3Niw3ICsyNzYsNyBAQAogCiAt
IChOU0FycmF5ICopbGluZUJveFJlY3RzCiB7Ci0gICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpy
ZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJP
YmplY3QgKnJlbmRlcmVyID0gSU1QTC0+cmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXIpIHsK
ICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzOwogICAgICAgICByZW5kZXJl
ci0+bGluZUJveFJlY3RzKHJlY3RzKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01P
YmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5t
bQkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNSArMjgsMTYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiRE9NT2JqZWN0LmgiCiAKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0
ICJET01IVE1MTGlua0VsZW1lbnQuaCIKICNpbXBvcnQgIkRPTUhUTUxTdHlsZUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCIKICNpbXBvcnQgIkRPTVN0eWxlU2hlZXQuaCIKICNpbXBvcnQgIkhUTUxMaW5rRWxlbWVu
dC5oIgogI2ltcG9ydCAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2ltcG9ydCAiUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmgiCiAjaW1wb3J0ICJTdHlsZVNoZWV0LmgiCisjaW1wb3J0ICJXZWJTY3JpcHRP
YmplY3RQcml2YXRlLmgiCiAKIEBpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKIApAQCAtODgsMyAr
ODksMTIgQEAKIH0KIAogQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NT2JqZWN0IChXZWJDb3Jl
SW50ZXJuYWwpCisKKy0gKGlkKV9pbml0Cit7CisgICAgcmV0dXJuIFtzdXBlciBfaW5pdF07Cit9
CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGgubW0JKHJldmlzaW9uIDE2MzY5
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw0MyArMzEsMzYgQEAKICNpbXBvcnQgIkRPTVhQYXRoLmgiCiAKICNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiWFBhdGhFeHByZXNzaW9u
LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgogI2ltcG9ydCAiWFBhdGhOU1Jlc29sdmVy
LmgiCi0jaW1wb3J0ICJYUGF0aFJlc3VsdC5oIgotCi11c2luZyBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlOwotdXNpbmcgV2ViQ29yZTo6WFBhdGhFeHByZXNzaW9uOwotdXNpbmcgV2ViQ29yZTo6WFBh
dGhOU1Jlc29sdmVyOwotdXNpbmcgV2ViQ29yZTo6WFBhdGhSZXN1bHQ7CiAKIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIKIAog
QGltcGxlbWVudGF0aW9uIERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlcgogCisjZGVmaW5lIElNUEwg
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqPihfaW50ZXJuYWwpCisK
IC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nh
c3Q8WFBhdGhOU1Jlc29sdmVyKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYg
KF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAg
IERPTV9jYXN0PFhQYXRoTlNSZXNvbHZlcio+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQor
ICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CiAgICAgW3N1cGVyIGZp
bmFsaXplXTsKIH0KIAotLSAoWFBhdGhOU1Jlc29sdmVyICopX3hwYXRoTlNSZXNvbHZlcgorLSAo
V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyICopX3hwYXRoTlNSZXNvbHZlcgogewotICAgIHJldHVy
biBET01fY2FzdDxYUGF0aE5TUmVzb2x2ZXIgKj4oX2ludGVybmFsKTsKKyAgICByZXR1cm4gSU1Q
TDsKIH0KIAotLSAoaWQpX2luaXRXaXRoWFBhdGhOU1Jlc29sdmVyOihYUGF0aE5TUmVzb2x2ZXIg
KilpbXBsCistIChpZClfaW5pdFdpdGhYUGF0aE5TUmVzb2x2ZXI6KFdlYkNvcmU6OlhQYXRoTlNS
ZXNvbHZlciAqKWltcGwKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAgICAgCkBAIC03OCw3ICs3MSw3
IEBAIHVzaW5nIFdlYkNvcmU6OlhQYXRoUmVzdWx0OwogICAgIHJldHVybiBzZWxmOyAgICAKIH0K
IAotKyAoRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyICopX3hwYXRoTlNSZXNvbHZlcldpdGg6KFhQ
YXRoTlNSZXNvbHZlciAqKWltcGwKKysgKERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqKV94cGF0
aE5TUmVzb2x2ZXJXaXRoOihXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIgKilpbXBsCiB7CiAgICAg
aWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTMsODEgKzg2LDcgQEAgdXNpbmcg
V2ViQ29yZTo6WFBhdGhSZXN1bHQ7CiAKIC0gKE5TU3RyaW5nICopbG9va3VwTmFtZXNwYWNlVVJJ
OihOU1N0cmluZyAqKXByZWZpeAogewotICAgIHJldHVybiBbc2VsZiBfeHBhdGhOU1Jlc29sdmVy
XS0+bG9va3VwTmFtZXNwYWNlVVJJKHByZWZpeCk7Ci19Ci0KLUBlbmQKLQotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NWFBhdGhSZXN1bHQKLQotQGltcGxlbWVu
dGF0aW9uIERPTVhQYXRoUmVzdWx0IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKFhQYXRoUmVzdWx0
ICopX3hwYXRoUmVzdWx0Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PFhQYXRoUmVzdWx0ICo+KF9p
bnRlcm5hbCk7Ci19Ci0KLS0gKGlkKV9pbml0V2l0aFhQYXRoUmVzdWx0OihYUGF0aFJlc3VsdCAq
KWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0gICAgCi0gICAgW3N1cGVyIF9pbml0XTsKLSAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBp
bXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBz
ZWxmOwotfQotCi0rIChET01YUGF0aFJlc3VsdCAqKV94cGF0aFJlc3VsdFdpdGg6KFhQYXRoUmVz
dWx0ICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBw
ZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNo
ZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbRE9N
WFBhdGhSZXN1bHQgYWxsb2NdIF9pbml0V2l0aFhQYXRoUmVzdWx0OmltcGxdIGF1dG9yZWxlYXNl
XTsKLX0KLQotQGVuZAotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01YUGF0aFJlc3VsdAotCi1AaW1wbGVtZW50YXRpb24gRE9NWFBhdGhFeHByZXNzaW9uIChX
ZWJDb3JlSW50ZXJuYWwpCi0KLS0gKFhQYXRoRXhwcmVzc2lvbiAqKV94cGF0aEV4cHJlc3Npb24K
LXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8WFBhdGhFeHByZXNzaW9uICo+KF9pbnRlcm5hbCk7Ci19
Ci0KLS0gKGlkKV9pbml0V2l0aFhQYXRoRXhwcmVzc2lvbjooWFBhdGhFeHByZXNzaW9uICopaW1w
bAotewotICAgIEFTU0VSVChpbXBsKTsKLSAgICAKLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9p
bnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwt
PnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLSsgKERPTVhQYXRoRXhwcmVzc2lvbiAqKV94cGF0aEV4cHJlc3Npb25XaXRoOihYUGF0
aEV4cHJlc3Npb24gKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0
RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVy
biBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVy
biBbW1tET01YUGF0aEV4cHJlc3Npb24gYWxsb2NdIF9pbml0V2l0aFhQYXRoRXhwcmVzc2lvbjpp
bXBsXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIElNUEwtPmxvb2t1cE5hbWVzcGFjZVVSSShw
cmVmaXgpOwogfQogCiBAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvck9iakMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQs
NyBAQCBwYWNrYWdlIENvZGVHZW5lcmF0b3JPYmpDOwogCiB1c2UgRmlsZTo6c3RhdDsKIAorIyBH
bG9iYWwgVmFyaWFibGVzCiBteSAkbW9kdWxlID0gIiI7CiBteSAkb3V0cHV0RGlyID0gIiI7CiBt
eSAlaW1wbEluY2x1ZGVzID0gKCk7CkBAIC0zOCw2ICszOSwxMSBAQCBteSBAaXZhcnMgPSAoKTsK
IG15ICRidWlsZGluZ0ZvclRpZ2VyT3JFYXJsaWVyID0gMSBpZiAkRU5WeyJNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQifSBhbmQgJEVOVnsiTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIn0gPD0gMTAu
NDsKIG15ICRidWlsZGluZ0Zvckxlb3BhcmRPckxhdGVyID0gMSBpZiAkRU5WeyJNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVQifSBhbmQgJEVOVnsiTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIn0gPj0g
MTAuNTsKIAorIyBIYXNoZXMKK215ICVwcm90b2NvbFR5cGVIYXNoID0gKCJYUGF0aE5TUmVzb2x2
ZXIiID0+IDEsICJFdmVudExpc3RlbmVyIiA9PiAxLCAiRXZlbnRUYXJnZXQiID0+IDEsICJOb2Rl
RmlsdGVyIiA9PiAxKTsKK215ICVzdHJpbmdUeXBlSGFzaCA9ICgiRE9NU3RyaW5nIiA9PiAxLCAi
QXRvbWljU3RyaW5nIiA9PiAxKTsKKworIyBDb25zdGFudHMKIG15ICRleGNlcHRpb25Jbml0ID0g
IldlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOyI7CiBteSAkZXhjZXB0aW9uUmFpc2VPbkVy
cm9yID0gInJhaXNlT25ET01FcnJvcihlYyk7IjsKIApAQCAtMjQ1LDcgKzI1MSw3IEBAIHN1YiBJ
c1Byb3RvY29sVHlwZQogewogICAgICR0eXBlID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIiBvciAkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIgb3Ig
JHR5cGUgZXEgIkV2ZW50VGFyZ2V0IiBvciAkdHlwZSBlcSAiTm9kZUZpbHRlciI7CisgICAgcmV0
dXJuIDEgaWYgJHByb3RvY29sVHlwZUhhc2h7JHR5cGV9OwogICAgIHJldHVybiAwOwogfQogCkBA
IC0yNTMsNyArMjU5LDcgQEAgc3ViIElzU3RyaW5nVHlwZQogewogICAgICR0eXBlID0gc2hpZnQ7
CiAKLSAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlwZSBlcSAiQXRv
bWljU3RyaW5nIjsKKyAgICByZXR1cm4gMSBpZiAkc3RyaW5nVHlwZUhhc2h7JHR5cGV9OwogICAg
IHJldHVybiAwOwogfQogCkBAIC0yOTIsMTggKzI5OCwzOCBAQCBzdWIgR2V0T2JqQ1R5cGVNYWtl
cgogICAgIHJldHVybiAkdHlwZU1ha2VyOwogfQogCitzdWIgR2V0T2JqQ1R5cGVHZXR0ZXJOYW1l
Cit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOwor
CisgICAgcmV0dXJuICIiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUp
IG9yIElzU3RyaW5nVHlwZSgkdHlwZSkgb3IgJHR5cGUgZXEgIlVSTCIgb3IgJHR5cGUgZXEgIkRP
TVRpbWVTdGFtcCI7CisKKyAgICBteSAkdHlwZUdldHRlciA9ICIiOworICAgIGlmICgkdHlwZSA9
fiAvXihIVE1MfENTUykvIG9yICR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlvbiIgb3IgJHR5cGUg
ZXEgIkNEQVRBU2VjdGlvbiIpIHsKKyAgICAgICAgJHR5cGVHZXR0ZXIgPSAkdHlwZTsKKyAgICB9
IGVsc2lmICgkdHlwZSA9fiAvXlhQYXRoKC4rKS8pIHsKKyAgICAgICAgJHR5cGVHZXR0ZXIgPSAi
eHBhdGgiIC4gJDE7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAg
ICAgJHR5cGVHZXR0ZXIgPSAiYWJzdHJhY3RWaWV3IjsKKyAgICB9IGVsc2UgeworICAgICAgICAk
dHlwZUdldHRlciA9IGxjZmlyc3QoJHR5cGUpOworICAgIH0KKworICAgICMgcHV0IGludG8gdGhl
IGZvcm0gIl9mb29CYXIiIGZvciB0eXBlIEZvb0Jhci4KKyAgICByZXR1cm4gIl8iIC4gJHR5cGVH
ZXR0ZXI7Cit9CisKIHN1YiBHZXRPYmpDVHlwZUdldHRlcgogewogICAgIG15ICRhcmdOYW1lID0g
c2hpZnQ7CiAgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQp
OworICAgIG15ICR0eXBlR2V0dGVyTWV0aG9kTmFtZSA9IEdldE9iakNUeXBlR2V0dGVyTmFtZSgk
dHlwZSk7CiAKICAgICByZXR1cm4gJGFyZ05hbWUgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0
aXZlVHlwZSgkdHlwZSkgb3IgSXNTdHJpbmdUeXBlKCR0eXBlKSBvciAkdHlwZSBlcSAiVVJMIjsK
ICAgICByZXR1cm4gJGFyZ05hbWUgLiAiRXZlbnRUYXJnZXQiIGlmICR0eXBlIGVxICJFdmVudFRh
cmdldCI7Ci0gICAgcmV0dXJuICJbbmF0aXZlUmVzb2x2ZXIgX3hwYXRoTlNSZXNvbHZlcl0iIGlm
ICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgIHJldHVybiAiWyIgLiAkYXJnTmFtZSAu
ICIgX3hwYXRoUmVzdWx0XSIgaWYgJHR5cGUgZXEgIlhQYXRoUmVzdWx0IjsKLSAgICByZXR1cm4g
IlsiIC4gJGFyZ05hbWUgLiAiIF9hYnN0cmFjdFZpZXddIiBpZiAkdHlwZSBlcSAiRE9NV2luZG93
IjsKLSAgICByZXR1cm4gIlsiIC4gJGFyZ05hbWUgLiAiIF8iIC4gJHR5cGUgLiAiXSIgaWYgJHR5
cGUgPX4gL14oSFRNTHxDU1MpLzsKLSAgICByZXR1cm4gIlsiIC4gJGFyZ05hbWUgLiAiIF8iIC4g
bGNmaXJzdCgkdHlwZSkgLiAiXSI7CisgICAgcmV0dXJuICJbbmF0aXZlUmVzb2x2ZXIgJHR5cGVH
ZXR0ZXJNZXRob2ROYW1lXSIgaWYgJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciI7CisKKyAgICBy
ZXR1cm4gIlskYXJnTmFtZSAkdHlwZUdldHRlck1ldGhvZE5hbWVdIjsKIH0KIAogc3ViIEFkZEZv
cndhcmREZWNsYXJhdGlvbnNGb3JUeXBlCkBAIC02MTksMTAgKzY0NSwxMCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgIG15ICRjbGFzc05hbWUgPSBHZXRDbGFzc05hbWUoJGludGVy
ZmFjZU5hbWUpOwogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFtZSgkaW50
ZXJmYWNlTmFtZSk7CiAgICAgbXkgJHBhcmVudEltcGxDbGFzc05hbWUgPSBHZXRQYXJlbnRJbXBs
Q2xhc3NOYW1lKCRkYXRhTm9kZSk7CisgICAgbXkgJGltcGxDbGFzc05hbWVXaXRoTmFtZXNwYWNl
ID0gIldlYkNvcmU6OiIgLiAkaW1wbENsYXNzTmFtZTsKIAogICAgIG15ICRudW1BdHRyaWJ1dGVz
ID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OwogICAgIG15ICRudW1GdW5jdGlvbnMgPSBAeyRk
YXRhTm9kZS0+ZnVuY3Rpb25zfTsKLSAgICBteSAkaGFzRnVuY3Rpb25zT3JBdHRyaWJ1dGVzID0g
JG51bUF0dHJpYnV0ZXMgKyAkbnVtRnVuY3Rpb25zOwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhl
YWRlciB0ZW1wbGF0ZS4KICAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaW1w
bGVtZW50YXRpb25MaWNlbmNlVGVtcGxhdGUpOwpAQCAtNjMzLDgwICs2NTksNzIgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBteSAkY2xhc3NIZWFkZXJOYW1lID0gR2V0Q2xhc3NI
ZWFkZXJOYW1lKCRjbGFzc05hbWUpOwogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2lt
cG9ydCBcIiRjbGFzc0hlYWRlck5hbWUuaFwiXG5cbiIpOwogCi0gICAgaWYgKCRoYXNGdW5jdGlv
bnNPckF0dHJpYnV0ZXMpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAi
I2ltcG9ydCA8d3RmL0dldFB0ci5oPlxuXG4iKTsKIAotICAgICAgICAkaW1wbEluY2x1ZGVzeyIk
aW1wbENsYXNzTmFtZS5oIn0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01JbnRlcm5h
bC5oIn0gPSAxOwotICAgIH0KKyAgICAkaW1wbEluY2x1ZGVzeyIkaW1wbENsYXNzTmFtZS5oIn0g
PSAxOworICAgICRpbXBsSW5jbHVkZXN7IkRPTUludGVybmFsLmgifSA9IDE7CiAKICAgICBAaW1w
bENvbnRlbnQgPSAoKTsKIAogICAgICMgU1RBUlQgaW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxAaW1wbGVtZW50YXRpb24gJGNsYXNzTmFtZVxuXG4iKTsKIAotICAgIGlm
ICgkaGFzRnVuY3Rpb25zT3JBdHRyaWJ1dGVzKSB7Ci0gICAgICAgICMgQWRkIG5hbWVzcGFjZSB0
byBpbXBsZW1lbnRhdGlvbiBjbGFzcyBuYW1lIAotICAgICAgICBteSAkaW1wbENsYXNzTmFtZVdp
dGhOYW1lc3BhY2UgPSAiV2ViQ29yZTo6IiAuICRpbXBsQ2xhc3NOYW1lOwotCi0gICAgICAgIGlm
ICgkcGFyZW50SW1wbENsYXNzTmFtZSBlcSAiT2JqZWN0IikgewotICAgICAgICAgICAgIyBPbmx5
IGdlbmVyYXRlICdkZWFsbG9jJyBhbmQgJ2ZpbmFsaXplJyBtZXRob2RzIGZvciBkaXJlY3Qgc3Vi
Y2xhc3NlcyBvZiBET01PYmplY3QuCi0KLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8JGltcGxDbGFzc05hbWVXaXRoTmFtZXNwYWNl
Kj4oX2ludGVybmFsKVxuXG4iKTsKLQotICAgICAgICAgICAgbXkgQGl2YXJzVG9SZWxlYXNlID0g
KCk7Ci0gICAgICAgICAgICBpZiAoQGl2YXJzID4gMCkgewotICAgICAgICAgICAgICAgIGZvcmVh
Y2ggJGF0dHJpYnV0ZSAoQGl2YXJzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0g
Im1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaXZhcnNUb1JlbGVhc2UsICIgICAgWyRuYW1lIHJlbGVhc2VdO1xuIik7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICMgYWRkIGltcGxlbWVudGF0aW9uIGFjY2Vz
c29yCisgICAgIyBGSVhNRTogQ1NTU3R5bGVTaGVldCBzaG91bGQgbm90IG5lZWQgc3BlY2lhbCBj
YXNpbmcgbGlrZSB0aGlzLgorICAgIGlmICgkcGFyZW50SW1wbENsYXNzTmFtZSBlcSAiT2JqZWN0
IiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTU3R5bGVTaGVldCIpIHsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDwkaW1wbENsYXNzTmFt
ZVdpdGhOYW1lc3BhY2UqPihfaW50ZXJuYWwpXG5cbiIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG15ICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6OiI7CisgICAgICAgIGlmICgkcGFyZW50
SW1wbENsYXNzTmFtZSBlcSAiQ1NTVmFsdWUiIG9yICRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJD
U1NSdWxlIikgeworICAgICAgICAgICAgJGludGVybmFsQmFzZVR5cGUgLj0gJHBhcmVudEltcGxD
bGFzc05hbWU7CisgICAgICAgIH0gZWxzaWYgKCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJFdmVu
dCIgb3IgJHBhcmVudEltcGxDbGFzc05hbWUgZXEgIlVJRXZlbnQiKSB7CisgICAgICAgICAgICAk
aW50ZXJuYWxCYXNlVHlwZSAuPSAiRXZlbnQiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgJGludGVybmFsQmFzZVR5cGUgLj0gIk5vZGUiOworICAgICAgICB9CiAKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiLSAodm9pZClkZWFsbG9jXG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
QGl2YXJzVG9SZWxlYXNlKTsKLSAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9k
ZUl0ZXJhdG9yIikgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChfaW50ZXJuYWwpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBbc2VsZiBkZXRhY2hdO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIElNUEwtPmRlcmVmKCk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB9O1xuIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChfaW50ZXJuYWwpXG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSU1QTC0+ZGVyZWYoKTtc
biIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
W3N1cGVyIGRlYWxsb2NdO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PCRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8JGludGVy
bmFsQmFzZVR5cGUqPihfaW50ZXJuYWwpKVxuXG4iKTsKKyAgICB9CiAKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiLSAodm9pZClmaW5hbGl6ZVxuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJOb2RlSXRlcmF0b3IiKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKF9pbnRlcm5hbCkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIFtzZWxmIGRldGFjaF07XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgSU1QTC0+ZGVyZWYoKTtcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbClcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBJTVBMLT5kZXJl
ZigpO1xuIik7CisgICAgIyBPbmx5IGdlbmVyYXRlICdkZWFsbG9jJyBhbmQgJ2ZpbmFsaXplJyBt
ZXRob2RzIGZvciBkaXJlY3Qgc3ViY2xhc3NlcyBvZiBET01PYmplY3QuCisgICAgaWYgKCRwYXJl
bnRJbXBsQ2xhc3NOYW1lIGVxICJPYmplY3QiKSB7CisgICAgICAgIG15IEBpdmFyc1RvUmVsZWFz
ZSA9ICgpOworICAgICAgICBpZiAoQGl2YXJzID4gMCkgeworICAgICAgICAgICAgZm9yZWFjaCAk
YXR0cmlidXRlIChAaXZhcnMpIHsKKyAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICJtXyIgLiAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICAgICAgcHVzaChAaXZhcnNU
b1JlbGVhc2UsICIgICAgWyRuYW1lIHJlbGVhc2VdO1xuIik7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBbc3VwZXIgZmluYWxpemVdO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIH0gZWxzaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJDU1NTdHlsZVNoZWV0IikgewotICAgICAgICAgICAgIyBTcGVj
aWFsIGNhc2UgZm9yIENTU1N0eWxlU2hlZXQKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8JGltcGxDbGFzc05hbWVXaXRoTmFtZXNw
YWNlKj4oX2ludGVybmFsKVxuXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiLSAodm9pZClkZWFsbG9jXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBpdmFyc1RvUmVsZWFzZSk7Cisg
ICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZUl0ZXJhdG9yIikgeworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbCkge1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgW3NlbGYgZGV0YWNoXTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElNUEwtPmRlcmVmKCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG15ICRpbnRlcm5hbEJhc2VUeXBlOwotICAgICAgICAgICAgaWYg
KCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJDU1NWYWx1ZSIpIHsKLSAgICAgICAgICAgICAgICAk
aW50ZXJuYWxCYXNlVHlwZSA9ICJXZWJDb3JlOjpDU1NWYWx1ZSIKLSAgICAgICAgICAgIH0gZWxz
aWYgKCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJDU1NSdWxlIikgewotICAgICAgICAgICAgICAg
ICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6OkNTU1J1bGUiCi0gICAgICAgICAgICB9IGVs
c2lmICgkcGFyZW50SW1wbENsYXNzTmFtZSBlcSAiRXZlbnQiIG9yICRwYXJlbnRJbXBsQ2xhc3NO
YW1lIGVxICJVSUV2ZW50IikgewotICAgICAgICAgICAgICAgICRpbnRlcm5hbEJhc2VUeXBlID0g
IldlYkNvcmU6OkV2ZW50IgotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAk
aW50ZXJuYWxCYXNlVHlwZSA9ICJXZWJDb3JlOjpOb2RlIgotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbClcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElNUEwtPmRlcmVmKCk7XG4iKTsKKyAg
ICAgICAgfQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBbc3VwZXIgZGVhbGxvY107
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDwkaW1wbENsYXNz
TmFtZVdpdGhOYW1lc3BhY2UqPihyZWludGVycHJldF9jYXN0PCRpbnRlcm5hbEJhc2VUeXBlKj4o
X2ludGVybmFsKSlcblxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLSAodm9pZClm
aW5hbGl6ZVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZUl0ZXJhdG9yIikgeworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbCkge1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgW3NlbGYgZGV0YWNoXTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElNUEwtPmRlcmVmKCk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChfaW50ZXJuYWwpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBJTVBMLT5kZXJlZigpO1xu
Iik7CiAgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgW3N1cGVyIGZp
bmFsaXplXTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAg
ICAgIAogICAgIH0KIAogICAgICVhdHRyaWJ1dGVOYW1lcyA9ICgpOwpAQCAtOTkzLDYgKzEwMTEs
NTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEBkZXByZWNhdGVkRnVuY3Rpb25zKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJc
QGVuZFxuIik7CiAgICAgfQorCisgICAgdW5sZXNzICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e09iakNOb0ludGVybmFsfSkgeworICAgICAgICAjIC0gQkVHSU4gV2ViQ29yZUludGVy
bmFsIGNhdGVnb3J5IEBpbXBsZW1lbnRhdGlvbgorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuXEBpbXBsZW1lbnRhdGlvbiAkY2xhc3NOYW1lIChXZWJDb3JlSW50ZXJuYWwpXG5cbiIpOwor
CisgICAgICAgICMgLSBUeXBlLUdldHRlcgorICAgICAgICAjIC0gKFdlYkNvcmU6OkZvb0JhciAq
KV9mb29CYXIgZm9yIGltcGxlbWVudGF0aW9uIGNsYXNzIEZvb0JhcgorICAgICAgICBteSAkdHlw
ZUdldHRlck5hbWUgPSBHZXRPYmpDVHlwZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi0gKCRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSAq
KSR0eXBlR2V0dGVyTmFtZVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBJTVBMO1xuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsgICAgICAgICAgICAKKworICAgICAgICAj
IC0gVHlwZS1NYWtlcgorICAgICAgICBpZiAoJHBhcmVudEltcGxDbGFzc05hbWUgZXEgIk9iamVj
dCIpIHsgICAgICAgIAorICAgICAgICAgICAgIyAtIChpZClfaW5pdFdpdGhGb29CYXI6KFdlYkNv
cmU6OkZvb0JhciAqKWltcGwgZm9yIGltcGxlbWVudGF0aW9uIGNsYXNzIEZvb0JhcgorICAgICAg
ICAgICAgbXkgJGluaXRXaXRoSW1wbE5hbWUgPSAiX2luaXRXaXRoIiAuICRpbXBsQ2xhc3NOYW1l
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICItIChpZCkkaW5pdFdpdGhJbXBsTmFt
ZTooJGltcGxDbGFzc05hbWVXaXRoTmFtZXNwYWNlICopaW1wbFxuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgW3N1cGVyIF9pbml0XTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wbC0+cmVmKCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGFkZERPTVdyYXBwZXIoc2VsZiwg
aW1wbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBz
ZWxmO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAg
CisgICAgICAgICAgICAjIC0gKERPTUZvb0JhcilfRm9vQmFyV2l0aDooV2ViQ29yZTo6Rm9vQmFy
ICopaW1wbCBmb3IgaW1wbGVtZW50YXRpb24gY2xhc3MgRm9vQmFyCisgICAgICAgICAgICBteSAk
dHlwZU1ha2VyTmFtZSA9IEdldE9iakNUeXBlTWFrZXIoJGludGVyZmFjZU5hbWUpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIrICgkY2xhc3NOYW1lICopJHR5cGVNYWtlck5hbWU6
KCRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSAqKWltcGxcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghaW1wbClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBuaWw7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlkIGNhY2hlZEluc3RhbmNlO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChjYWNoZWRJbnN0YW5jZSlcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBbW2NhY2hlZEluc3Rh
bmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gJGluaXRXaXRoSW1wbE5hbWU6aW1wbF0g
YXV0b3JlbGVhc2VdO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAjIC0gKERPTUZvb0JhcilfRm9vQmFy
V2l0aDooV2ViQ29yZTo6Rm9vQmFyICopaW1wbCBmb3IgaW1wbGVtZW50YXRpb24gY2xhc3MgRm9v
QmFyCisgICAgICAgICAgICBteSAkdHlwZU1ha2VyTmFtZSA9IEdldE9iakNUeXBlTWFrZXIoJGlu
dGVyZmFjZU5hbWUpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIrICgkY2xhc3NO
YW1lICopJHR5cGVNYWtlck5hbWU6KCRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSAqKWltcGxc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4o
W0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOworICAgICAgICB9CisKKyAgICAgICAgIyBFTkQgV2ViQ29yZUludGVy
bmFsIGNhdGVnb3J5CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXEBlbmRcbiIpOworICAg
IH0KIH0KIAogIyBJbnRlcm5hbCBoZWxwZXIKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJD
b3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNv
cmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMv
V2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTk2LDcgKzE5OTYsNyBA
QCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50ICpmb3JtRWxlbWVudEZyb21ECiAgICAgaWYgKCFtX2Zy
YW1lLT5oYXNTZWxlY3Rpb24oKSB8fCAhZnJhZ21lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBhcHBseUNvbW1hbmQobmV3IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKG1fZnJhbWUtPmRv
Y3VtZW50KCksIFtmcmFnbWVudCBfZnJhZ21lbnRdLCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRS
ZXBsYWNlLCBtYXRjaFN0eWxlKSk7CisgICAgYXBwbHlDb21tYW5kKG5ldyBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBbZnJhZ21lbnQgX2RvY3VtZW50RnJhZ21l
bnRdLCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKSk7CiAgICAg
W3NlbGYgZW5zdXJlU2VsZWN0aW9uVmlzaWJsZV07CiB9CiAKQEAgLTIxMTIsNyArMjExMiw3IEBA
IHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZvcm1FbGVtZW50RnJvbUQKIAogLSAodm9pZCltb3Zl
U2VsZWN0aW9uVG9EcmFnQ2FyZXQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilzZWxlY3Rpb25GcmFn
bWVudCBzbWFydE1vdmU6KEJPT0wpc21hcnRNb3ZlCiB7Ci0gICAgYXBwbHlDb21tYW5kKG5ldyBN
b3ZlU2VsZWN0aW9uQ29tbWFuZChbc2VsZWN0aW9uRnJhZ21lbnQgX2ZyYWdtZW50XSwgbV9mcmFt
ZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5iYXNlKCksIHNtYXJ0TW92ZSkpOworICAgIGFwcGx5
Q29tbWFuZChuZXcgTW92ZVNlbGVjdGlvbkNvbW1hbmQoW3NlbGVjdGlvbkZyYWdtZW50IF9kb2N1
bWVudEZyYWdtZW50XSwgbV9mcmFtZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5iYXNlKCksIHNt
YXJ0TW92ZSkpOwogfQogCiAtIChWaXNpYmxlUG9zaXRpb24pX3Zpc2libGVQb3NpdGlvbkZvclBv
aW50OihOU1BvaW50KXBvaW50CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsCShyZXZpc2lvbiAx
NjM2OSkKKysrIFdlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjEsNyArMjEsNyBAQAogbW9kdWxlIGNzcyB7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERP
TSBMZXZlbCAyOgotICAgIGludGVyZmFjZSBDU1NDaGFyc2V0UnVsZSA6IENTU1J1bGUgeworICAg
IGludGVyZmFjZSBbT2JqQ05vSW50ZXJuYWxdIENTU0NoYXJzZXRSdWxlIDogQ1NTUnVsZSB7CiAK
ICAgICAgICAgLy8gRklYTUU6IHRoZSBET00gc3BlYyBzYXlzIHRoYXQgdGhpcyBhdHRyaWJ1dGUK
ICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSByZWFkb25seS4gIFRoZSBjb3JyZWN0IGRlY2xhcmF0
aW9uCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGwJKHJldmlzaW9uIDE2MzY5KQorKysgV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEs
NyBAQAogbW9kdWxlIGNzcyB7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgot
ICAgIGludGVyZmFjZSBDU1NGb250RmFjZVJ1bGUgOiBDU1NSdWxlIHsKKyAgICBpbnRlcmZhY2Ug
W09iakNOb0ludGVybmFsXSBDU1NGb250RmFjZVJ1bGUgOiBDU1NSdWxlIHsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gIHN0eWxlOwogICAgIH07CiAKSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU0ltcG9ydFJ1bGUuaWRsCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvY3NzL0NT
U0ltcG9ydFJ1bGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiBtb2R1bGUg
Y3NzIHsKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6Ci0gICAgaW50ZXJmYWNl
IENTU0ltcG9ydFJ1bGUgOiBDU1NSdWxlIHsKKyAgICBpbnRlcmZhY2UgW09iakNOb0ludGVybmFs
XSBDU1NJbXBvcnRSdWxlIDogQ1NTUnVsZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgICAgICAgIGhyZWY7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzdHlsZXNo
ZWV0czo6TWVkaWFMaXN0ICBtZWRpYTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0
eWxlU2hlZXQgICAgc3R5bGVTaGVldDsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmlkbAkocmV2aXNpb24g
MTYzNjkpCisrKyBXZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw3ICsyMSw3IEBACiBtb2R1bGUgY3NzIHsKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9N
IExldmVsIDI6Ci0gICAgaW50ZXJmYWNlIENTU01lZGlhUnVsZSA6IENTU1J1bGUgeworICAgIGlu
dGVyZmFjZSBbT2JqQ05vSW50ZXJuYWxdIENTU01lZGlhUnVsZSA6IENTU1J1bGUgewogCiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzdHlsZXNoZWV0czo6TWVkaWFMaXN0ICBtZWRpYTsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0ICAgICAgY3NzUnVsZXM7CkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTUGFnZVJ1bGUuaWRsCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvY3NzL0NTU1BhZ2VS
dWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogbW9kdWxlIGNzcyB7CiAK
ICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgotICAgIGludGVyZmFjZSBDU1NQYWdl
UnVsZSA6IENTU1J1bGUgeworICAgIGludGVyZmFjZSBbT2JqQ05vSW50ZXJuYWxdIENTU1BhZ2VS
dWxlIDogQ1NTUnVsZSB7CiAKICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IERPTSBzcGVjIHNh
eXMgdGhhdCB0aGlzIGNhbiByYWlzZSBhbgogICAgICAgICAgICAgICAgICAvLyBleGNlcHRpb24g
b24gc2V0dGluZy4KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5pZGwJKHJldmlzaW9uIDE2
MzY5KQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSw3ICsxOSw3IEBACiAKIG1vZHVsZSBjc3MgewogCi0gICAgaW50ZXJmYWNlIFtHZW5l
cmF0ZUNvbnN0cnVjdG9yXSBDU1NQcmltaXRpdmVWYWx1ZSA6IENTU1ZhbHVlIHsKKyAgICBpbnRl
cmZhY2UgW0dlbmVyYXRlQ29uc3RydWN0b3IsIE9iakNOb0ludGVybmFsXSBDU1NQcmltaXRpdmVW
YWx1ZSA6IENTU1ZhbHVlIHsKIAogICAgICAgICAvLyBVbml0VHlwZXMKICAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgQ1NTX1VOS05PV04gICAgPSAwOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
UnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJKHJldmlzaW9u
IDE2MzY5KQorKysgV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDcgQEAKIG1vZHVsZSBjc3MgewogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2
ZWwgMjoKLSAgICBpbnRlcmZhY2UgW0xlZ2FjeVBhcmVudD1LSlM6OkRPTUNTU1J1bGUsIEdlbmVy
YXRlQ29uc3RydWN0b3JdIENTU1J1bGUgeworICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtK
Uzo6RE9NQ1NTUnVsZSwgR2VuZXJhdGVDb25zdHJ1Y3RvciwgT2JqQ05vSW50ZXJuYWxdIENTU1J1
bGUgewogCiAgICAgICAgIC8vIFJ1bGVUeXBlCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFVOS05PV05fUlVMRSA9IDA7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5pZGwJKHJldmlzaW9uIDE2MzY5
KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEs
NyArMjEsNyBAQAogbW9kdWxlIGNzcyB7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZl
bCAyOgotICAgIGludGVyZmFjZSBDU1NTdHlsZVJ1bGUgOiBDU1NSdWxlIHsKKyAgICBpbnRlcmZh
Y2UgW09iakNOb0ludGVybmFsXSBDU1NTdHlsZVJ1bGUgOiBDU1NSdWxlIHsKIAogICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogRE9NIHNwZWMgc2F5cyB0aGF0IHRoaXMgY2FuIHJhaXNlIGFuCiAg
ICAgICAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiBvbiBzZXR0aW5nLgpJbmRleDogV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5pZGwJKHJldmlzaW9uIDE2MzY5KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIG1vZHVsZSBjc3MgewogCiAgICAg
Ly8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKLSAgICBpbnRlcmZhY2UgQ1NTU3R5bGVTaGVl
dCA6IHN0eWxlc2hlZXRzOjpTdHlsZVNoZWV0IHsKKyAgICBpbnRlcmZhY2UgW09iakNOb0ludGVy
bmFsXSBDU1NTdHlsZVNoZWV0IDogc3R5bGVzaGVldHM6OlN0eWxlU2hlZXQgewogCiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlICAgICAgICAgIG93bmVyUnVsZTsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0ICAgICAgY3NzUnVsZXM7CkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NVbmtub3duUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
VW5rbm93blJ1bGUuaWRsCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvY3NzL0NTU1Vua25v
d25SdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogbW9kdWxlIGNzcyB7
CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgotICAgIGludGVyZmFjZSBDU1NV
bmtub3duUnVsZSA6IENTU1J1bGUgeworICAgIGludGVyZmFjZSBbT2JqQ05vSW50ZXJuYWxdIENT
U1Vua25vd25SdWxlIDogQ1NTUnVsZSB7CiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ZhbHVlLmlkbAkocmV2
aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTIwLDcgKzIwLDcgQEAKIAogbW9kdWxlIGNzcyB7CiAKLSAgICBpbnRlcmZhY2UgW0xlZ2Fj
eVBhcmVudD1LSlM6OkRPTUNTU1ZhbHVlLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBDU1NWYWx1ZSB7
CisgICAgaW50ZXJmYWNlIFtMZWdhY3lQYXJlbnQ9S0pTOjpET01DU1NWYWx1ZSwgR2VuZXJhdGVD
b25zdHJ1Y3RvciwgT2JqQ05vSW50ZXJuYWxdIENTU1ZhbHVlIHsKIAogICAgICAgICAvLyBVbml0
VHlwZXMKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX0lOSEVSSVQgICAgICAgICA9
IDA7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5pZGwJKHJldmlzaW9uIDE2MzY5KQorKysgV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogbW9k
dWxlIGNzcyB7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgotICAgIGludGVy
ZmFjZSBbSGFzSW5kZXhHZXR0ZXJdIENTU1ZhbHVlTGlzdCA6IENTU1ZhbHVlIHsKKyAgICBpbnRl
cmZhY2UgW0hhc0luZGV4R2V0dGVyLCBPYmpDTm9JbnRlcm5hbF0gQ1NTVmFsdWVMaXN0IDogQ1NT
VmFsdWUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgICBsZW5n
dGg7CiAgICAgICAgIENTU1ZhbHVlICAgICAgICAgICBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmlkbAkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAog
bW9kdWxlIHN0eWxlc2hlZXRzIHsKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6
Ci0gICAgaW50ZXJmYWNlIFN0eWxlU2hlZXQgeworICAgIGludGVyZmFjZSBbT2JqQ05vSW50ZXJu
YWxdIFN0eWxlU2hlZXQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAg
ICAgICB0eXBlOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBk
aXNhYmxlZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgb3du
ZXJOb2RlOwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0V2ZW50LmlkbAkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIG1vZHVsZSBldmVudHMgewogCiAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKLSAgICBpbnRlcmZhY2UgW0xlZ2FjeVBh
cmVudD1LSlM6OkRPTUV2ZW50LCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBFdmVudCB7CisgICAgaW50
ZXJmYWNlIFtMZWdhY3lQYXJlbnQ9S0pTOjpET01FdmVudCwgR2VuZXJhdGVDb25zdHJ1Y3Rvciwg
T2JqQ05vSW50ZXJuYWxdIEV2ZW50IHsKIAogICAgICAgICAvLyBET00gUGhhc2VUeXBlCiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENBUFRVUklOR19QSEFTRSAgICAgPSAxOwpJbmRleDog
V2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
S2V5Ym9hcmRFdmVudC5pZGwJKHJldmlzaW9uIDE2MzY5KQorKysgV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIG1vZHVsZSBldmVu
dHMgewogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMzoKLSAgICBpbnRlcmZhY2Ug
S2V5Ym9hcmRFdmVudCA6IFVJRXZlbnQgeworICAgIGludGVyZmFjZSBbT2JqQ05vSW50ZXJuYWxd
IEtleWJvYXJkRXZlbnQgOiBVSUV2ZW50IHsKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFT
Q1JJUFQpCiAgICAgICAgIC8vIEtleUxvY2F0aW9uQ29kZQpJbmRleDogV2ViQ29yZS9kb20vTW91
c2VFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwJKHJl
dmlzaW9uIDE2MzY5KQorKysgV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDcgKzIwLDcgQEAKIG1vZHVsZSBldmVudHMgewogCiAgICAgLy8gSW50cm9kdWNl
ZCBpbiBET00gTGV2ZWwgMjoKLSAgICBpbnRlcmZhY2UgTW91c2VFdmVudCA6IFVJRXZlbnQgewor
ICAgIGludGVyZmFjZSBbT2JqQ05vSW50ZXJuYWxdIE1vdXNlRXZlbnQgOiBVSUV2ZW50IHsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgc2NyZWVuWDsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgc2NyZWVuWTsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgY2xpZW50WDsKSW5kZXg6IFdlYkNv
cmUvZG9tL011dGF0aW9uRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL011dGF0
aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvZG9tL011dGF0aW9uRXZl
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiBtb2R1bGUgZXZlbnRzIHsK
IAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6Ci0gICAgaW50ZXJmYWNlIFtHZW5l
cmF0ZUNvbnN0cnVjdG9yXSBNdXRhdGlvbkV2ZW50IDogRXZlbnQgeworICAgIGludGVyZmFjZSBb
R2VuZXJhdGVDb25zdHJ1Y3RvciwgT2JqQ05vSW50ZXJuYWxdIE11dGF0aW9uRXZlbnQgOiBFdmVu
dCB7CiAKICAgICAgICAgLy8gYXR0ckNoYW5nZVR5cGUKICAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgTU9ESUZJQ0FUSU9OID0gMTsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlkbAkocmV2aXNpb24g
MTYzNjkpCisrKyBXZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw3ICsyMSw3IEBACiBtb2R1bGUgdHJhdmVyc2FsIHsKIAogICAgIC8vIEludHJvZHVjZWQg
aW4gRE9NIExldmVsIDI6Ci0gICAgaW50ZXJmYWNlIFtDdXN0b21NYXJrRnVuY3Rpb25dIE5vZGVJ
dGVyYXRvciB7CisgICAgaW50ZXJmYWNlIFtDdXN0b21NYXJrRnVuY3Rpb24sIE9iakNOb0ludGVy
bmFsXSBOb2RlSXRlcmF0b3IgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSByb290
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93Owog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNJdmFyXSBOb2RlRmlsdGVyIGZpbHRlcjsK
SW5kZXg6IFdlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL092ZXJmbG93RXZlbnQuaWRsCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvZG9t
L092ZXJmbG93RXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8K
IG1vZHVsZSBldmVudHMgewogCi0gICAgaW50ZXJmYWNlIE92ZXJmbG93RXZlbnQgOiBFdmVudCB7
CisgICAgaW50ZXJmYWNlIFtPYmpDTm9JbnRlcm5hbF0gT3ZlcmZsb3dFdmVudCA6IEV2ZW50IHsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSE9SSVpPTlRBTCA9IDA7CiAgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IFZFUlRJQ0FMICAgPSAxOwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBCT1RIICAgICAgID0gMjsKSW5kZXg6IFdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCShyZXZpc2lvbiAxNjM2
OSkKKysrIFdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3
ICsyMSw3IEBACiBtb2R1bGUgdHJhdmVyc2FsIHsKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9N
IExldmVsIDI6Ci0gICAgaW50ZXJmYWNlIFtDdXN0b21NYXJrRnVuY3Rpb25dIFRyZWVXYWxrZXIg
eworICAgIGludGVyZmFjZSBbQ3VzdG9tTWFya0Z1bmN0aW9uLCBPYmpDTm9JbnRlcm5hbF0gVHJl
ZVdhbGtlciB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlIHJvb3Q7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3c7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ0l2YXJdIE5vZGVGaWx0ZXIgZmlsdGVyOwpJbmRleDogV2Vi
Q29yZS9kb20vVUlFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVUlFdmVudC5p
ZGwJKHJldmlzaW9uIDE2MzY5KQorKysgV2ViQ29yZS9kb20vVUlFdmVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDcgKzIwLDcgQEAKIG1vZHVsZSBldmVudHMgewogCiAgICAgLy8gSW50cm9k
dWNlZCBpbiBET00gTGV2ZWwgMjoKLSAgICBpbnRlcmZhY2UgVUlFdmVudCA6IEV2ZW50IHsKKyAg
ICBpbnRlcmZhY2UgW09iakNOb0ludGVybmFsXSBVSUV2ZW50IDogRXZlbnQgewogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93ICAgICAgICAgICAgdmlldzsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgICAgIGRldGFpbDsKICAgICAgICAgCklu
ZGV4OiBXZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9XaGVlbEV2ZW50LmlkbAkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogbW9kdWxlIGV2ZW50cyB7
CiAKICAgICAvLyBCYXNlZCBvZmYgb2YgcHJvcG9zZWQgSURMIGludGVyZmFjZSBmb3IgV2hlZWxF
dmVudDoKLSAgICBpbnRlcmZhY2UgV2hlZWxFdmVudCA6IFVJRXZlbnQgeworICAgIGludGVyZmFj
ZSBbT2JqQ05vSW50ZXJuYWxdIFdoZWVsRXZlbnQgOiBVSUV2ZW50IHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgICAgc2NyZWVuWDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgICAgc2NyZWVuWTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgY2xp
ZW50WDsK
</data>
<flag name="review"
          id="3430"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>