<?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>43966</bug_id>
          
          <creation_ts>2010-08-13 05:57:47 -0700</creation_ts>
          <short_desc>Web Inspector: rename InspectorValue::push and set to push{Value|Object|Array} and set{...}.</short_desc>
          <delta_ts>2010-08-13 06:22:55 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>264314</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-13 05:57:47 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264315</commentid>
    <comment_count>1</comment_count>
      <attachid>64329</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-13 05:59:39 -0700</bug_when>
    <thetext>Created attachment 64329
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264317</commentid>
    <comment_count>2</comment_count>
      <attachid>64329</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-08-13 06:06:10 -0700</bug_when>
    <thetext>Comment on attachment 64329
[PATCH] Proposed change.

WebCore/inspector/CodeGeneratorInspector.pm: 
 +          my $argumentType = $typeTransform{$type}-&gt;{$typeTransform{$typetype}-&gt;{&quot;retVal&quot;} ? &quot;retVal&quot; : &quot;variable&quot;};
Looks like retVal argument is not used any more.

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264318</commentid>
    <comment_count>3</comment_count>
      <attachid>64331</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-13 06:06:25 -0700</bug_when>
    <thetext>Created attachment 64331
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264320</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-13 06:13:06 -0700</bug_when>
    <thetext>Attachment 64329 did not build on mac:
Build output: http://queues.webkit.org/results/3759118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264321</commentid>
    <comment_count>5</comment_count>
      <attachid>64331</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-08-13 06:15:04 -0700</bug_when>
    <thetext>Comment on attachment 64331
[PATCH] Review comments addressed.

WebCore/inspector/InspectorValues.cpp:513
 +  bool InspectorValue::asObject(RefPtr&lt;InspectorObject&gt;* output)
will not compile on MAC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264322</commentid>
    <comment_count>6</comment_count>
      <attachid>64332</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-13 06:16:44 -0700</bug_when>
    <thetext>Created attachment 64332
[PATCH] Proposed change.

Thanks for the hint, Ilya!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264327</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-13 06:22:07 -0700</bug_when>
    <thetext>Attachment 64331 did not build on mac:
Build output: http://queues.webkit.org/results/3706112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264329</commentid>
    <comment_count>8</comment_count>
      <attachid>64332</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-13 06:22:43 -0700</bug_when>
    <thetext>Comment on attachment 64332
[PATCH] Proposed change.

Clearing flags on attachment: 64332

Committed r65320: &lt;http://trac.webkit.org/changeset/65320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264331</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-13 06:22:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64329</attachid>
            <date>2010-08-13 05:59:39 -0700</date>
            <delta_ts>2010-08-13 06:06:25 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>gen</filename>
            <type>text/plain</type>
            <size>46677</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTA0NzE2Mi4uM2RhZGMwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAxMC0wOC0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgSW5zcGVjdG9yVmFsdWU6
OnB1c2ggYW5kIHNldCB0bworICAgICAgICBwdXNoe1ZhbHVlfE9iamVjdHxBcnJheX0gYW5kIHNl
dHsuLi59LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM5NjYKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3IpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVG9JbnNwZWN0b3JWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEluc3BlY3Rv
ck9iamVjdEZvcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6djhUb0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0
aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0RE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTdHlsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFsbFN0eWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0UnVsZVJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDU1NSdWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBz
ZXVkb0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
b3B1bGF0ZU9iamVjdFdpdGhTdHlsZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JEaXNhYmxlZFN0eWxlUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZVNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
clJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNhdmVCcmVha3BvaW50
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0b3JhZ2VBZ2VudDo6ZXhlY3V0ZVNR
TCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEdDRXZlbnRSZWNvcmRz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEluc3RhbGxU
aW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZW1v
dmVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRT
Y2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsU2VuZFJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTWFya1RpbWVsaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxl
dGVDdXJyZW50UmVjb3JkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JWYWx1
ZTo6YXNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JWYWx1ZTo6YXNPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVmFsdWU6OmFzQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0Ojphc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcnJheTo6YXNBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRCb29sKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdDo6c2V0TnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck9iamVjdDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2Jq
ZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRB
cnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheTo6cHVzaFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5OjpwdXNoT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFycmF5OjpwdXNoQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRCcmVha3BvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJyZWFrcG9pbnQ6
Omluc3BlY3Rvck9iamVjdEZyb21Tb3VyY2VCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQpOgorCiAyMDEwLTA4LTEzICBHYXZp
biBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCAx
ZmJkMDQwLi4wZWIyODE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKQEAg
LTg0LDggKzg0LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZElu
c3BlY3Rvck9iamVjdEZvcihjb25zdCBKU0M6OlByb2ZpbGVOb2QKICAgICBjb25zdCBQcm9maWxl
Tm9kZXNMaXN0JiBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuKCk7CiAgICAgUHJvZmlsZU5vZGVz
TGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChQcm9m
aWxlTm9kZXNMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gY2hpbGRyZW4uYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgY2hpbGRyZW5BcnJheS0+cHVzaChidWlsZEluc3Bl
Y3Rvck9iamVjdEZvcihpdGVyLT5nZXQoKSkpOwotICAgIHJlc3VsdC0+c2V0KCJjaGlsZHJlbiIs
IGNoaWxkcmVuQXJyYXkpOworICAgICAgICBjaGlsZHJlbkFycmF5LT5wdXNoT2JqZWN0KGJ1aWxk
SW5zcGVjdG9yT2JqZWN0Rm9yKGl0ZXItPmdldCgpKSk7CisgICAgcmVzdWx0LT5zZXRBcnJheSgi
Y2hpbGRyZW4iLCBjaGlsZHJlbkFycmF5KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IGI0ZGRhMTIuLmE1OGUwYzcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUsIEoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnRWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluc3BlY3RvckFycmF5LT5wdXNo
KGVsZW1lbnRWYWx1ZSk7CisgICAgICAgICAgICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2hWYWx1
ZShlbGVtZW50VmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGluc3Bl
Y3RvckFycmF5OwogICAgICAgICB9CkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIEoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbnNwZWN0b3JPYmplY3QtPnNldChTdHJpbmcobmFtZS5jaGFy
YWN0ZXJzKCksIG5hbWUubGVuZ3RoKCkpLCBpbnNwZWN0b3JWYWx1ZSk7CisgICAgICAgICAgICBp
bnNwZWN0b3JPYmplY3QtPnNldFZhbHVlKFN0cmluZyhuYW1lLmNoYXJhY3RlcnMoKSwgbmFtZS5s
ZW5ndGgoKSksIGluc3BlY3RvclZhbHVlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gaW5z
cGVjdG9yT2JqZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNw
cAppbmRleCA5OGRkYjkwLi43YzA3ODI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxs
U3RhY2suY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNr
VHJhY2UoaW50IGZyYW1lTGltaXQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHMKICAg
ICAgICAgZnJhbWVPYmplY3QtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgZnVuY3Rpb25OYW1l
LklzRW1wdHkoKSA/ICIiIDogdG9XZWJDb3JlU3RyaW5nKGZ1bmN0aW9uTmFtZSkpOwogICAgICAg
ICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgZnJhbWUtPkdldExpbmVOdW1i
ZXIoKSk7CiAgICAgICAgIGZyYW1lT2JqZWN0LT5zZXROdW1iZXIoImNvbHVtbiIsIGZyYW1lLT5H
ZXRDb2x1bW4oKSk7Ci0gICAgICAgIHN0YWNrVHJhY2UtPnB1c2goZnJhbWVPYmplY3QpOworICAg
ICAgICBzdGFja1RyYWNlLT5wdXNoT2JqZWN0KGZyYW1lT2JqZWN0KTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5jcHAKaW5kZXgg
MzJlMDA2Ni4uOTVhYzBkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuY3BwCkBA
IC03Miw5ICs3Miw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJ
bnNwZWN0b3JPYmplY3RGb3IoY29uc3Qgdjg6OkNwdVByb2ZpbGVOCiAgICAgY29uc3QgaW50IGNo
aWxkcmVuQ291bnQgPSBub2RlLT5HZXRDaGlsZHJlbkNvdW50KCk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjaGlsZHJlbkNvdW50OyBpKyspIHsKICAgICAgICAgY29uc3Qgdjg6OkNwdVByb2Zp
bGVOb2RlKiBjaGlsZCA9IG5vZGUtPkdldENoaWxkKGkpOwotICAgICAgICBjaGlsZHJlbi0+cHVz
aChidWlsZEluc3BlY3Rvck9iamVjdEZvcihjaGlsZCkpOworICAgICAgICBjaGlsZHJlbi0+cHVz
aE9iamVjdChidWlsZEluc3BlY3Rvck9iamVjdEZvcihjaGlsZCkpOwogICAgIH0KLSAgICByZXN1
bHQtPnNldCgiY2hpbGRyZW4iLCBjaGlsZHJlbik7CisgICAgcmVzdWx0LT5zZXRBcnJheSgiY2hp
bGRyZW4iLCBjaGlsZHJlbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRWYWx1ZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFZhbHVlLmNwcAppbmRleCA2ZDNmZTIwLi5jNDVjODUxIDEwMDc1NQotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFZhbHVlLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gdjhUb0luc3BlY3RvclZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2goZWxlbWVudCk7CisgICAgICAgICAgICBpbnNwZWN0
b3JBcnJheS0+cHVzaFZhbHVlKGVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBp
bnNwZWN0b3JBcnJheTsKICAgICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHY4VG9JbnNwZWN0b3JWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluc3BlY3Rvck9i
amVjdC0+c2V0KHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobmFtZSksIHByb3BlcnR5VmFs
dWUpOworICAgICAgICAgICAgaW5zcGVjdG9yT2JqZWN0LT5zZXRWYWx1ZSh0b1dlYkNvcmVTdHJp
bmdXaXRoTnVsbENoZWNrKG5hbWUpLCBwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gaW5zcGVjdG9yT2JqZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9XZWJDb3JlL2luc3BlY3Rvci9Db2Rl
R2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDQ3N2JkY2UuLjQ2Y2JhNGIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpAQCAtNTIsNyArNTIsNyBAQCAk
dHlwZVRyYW5zZm9ybXsiT2JqZWN0In0gPSB7CiAgICAgImRlZmF1bHRWYWx1ZSIgPT4gIkluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCkiLAogICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yT2JqZWN0
IiwKICAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yVmFsdWVzLmgiLAotICAgICJhY2Nlc3NvclN1
ZmZpeCIgPT4gIiIKKyAgICAiYWNjZXNzb3JTdWZmaXgiID0+ICJPYmplY3QiCiB9OwogJHR5cGVU
cmFuc2Zvcm17IkFycmF5In0gPSB7CiAgICAgInBhcmFtIiA9PiAiUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4iLApAQCAtNjEsNyArNjEsNyBAQCAkdHlwZVRyYW5zZm9ybXsiQXJyYXkifSA9IHsK
ICAgICAiZGVmYXVsdFZhbHVlIiA9PiAiSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpIiwKICAgICAi
Zm9yd2FyZCIgPT4gIkluc3BlY3RvckFycmF5IiwKICAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9y
VmFsdWVzLmgiLAotICAgICJhY2Nlc3NvclN1ZmZpeCIgPT4gIiIKKyAgICAiYWNjZXNzb3JTdWZm
aXgiID0+ICJBcnJheSIKIH07CiAkdHlwZVRyYW5zZm9ybXsiVmFsdWUifSA9IHsKICAgICAicGFy
YW0iID0+ICJQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiIsCkBAIC03MCw3ICs3MCw3IEBAICR0
eXBlVHJhbnNmb3JteyJWYWx1ZSJ9ID0gewogICAgICJkZWZhdWx0VmFsdWUiID0+ICJJbnNwZWN0
b3JWYWx1ZTo6bnVsbCgpIiwKICAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvclZhbHVlIiwKICAg
ICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yVmFsdWVzLmgiLAotICAgICJhY2Nlc3NvclN1ZmZpeCIg
PT4gIiIKKyAgICAiYWNjZXNzb3JTdWZmaXgiID0+ICJWYWx1ZSIKIH07CiAkdHlwZVRyYW5zZm9y
bXsiU3RyaW5nIn0gPSB7CiAgICAgInBhcmFtIiA9PiAiY29uc3QgU3RyaW5nJiIsCkBAIC0zMjQs
NyArMzI0LDcgQEAgc3ViIGdlbmVyYXRlQmFja2VuZEZ1bmN0aW9uCiAgICAgbXkgJGkgPSAxOyAj
IHplcm8gZWxlbWVudCBpcyB0aGUgbWV0aG9kIG5hbWUuCiAgICAgZm9yZWFjaCBteSAkcGFyYW1l
dGVyIChAaW5BcmdzKSB7CiAgICAgICAgIG15ICR0eXBlID0gJHBhcmFtZXRlci0+dHlwZTsKLSAg
ICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9ICR0eXBlVHJhbnNmb3JteyR0eXBlfS0+eyR0eXBlVHJh
bnNmb3JteyR0eXBlfS0+eyJyZXRWYWwifSA/ICJyZXRWYWwiIDogInZhcmlhYmxlIn07CisgICAg
ICAgIG15ICRhcmd1bWVudFR5cGUgPSAkdHlwZVRyYW5zZm9ybXskdHlwZX0tPnsidmFyaWFibGUi
fTsKICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgJGFyZ3VtZW50VHlwZSAiIC4gJHBhcmFt
ZXRlci0+bmFtZSAuICI7IikgaWYgISgkcGFyYW1ldGVyLT5uYW1lIGVxICJjYWxsSWQiKTsKICAg
ICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgaWYgKCFhcmdzLT5nZXQoJGkpLT5hcyIgLiAkdHlw
ZVRyYW5zZm9ybXskdHlwZX0tPnsiYWNjZXNzb3JTdWZmaXgifSAuICIoJiIgLiAkcGFyYW1ldGVy
LT5uYW1lIC4gIikpIHsiKTsKICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4
IDA1OWRlYTQuLmVhMTY4ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAg
LTEzNCwxNSArMTM0LDE1IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoUmVt
b3RlSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjCiAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAganNvbkFyZ3MtPnB1c2goaW5zcGVjdG9yVmFsdWUpOworICAg
ICAgICAgICAganNvbkFyZ3MtPnB1c2hWYWx1ZShpbnNwZWN0b3JWYWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAganNvbk9iai0+c2V0KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOworICAgICAgICBq
c29uT2JqLT5zZXRBcnJheSgicGFyYW1ldGVycyIsIGpzb25BcmdzKTsKICAgICB9CiAgICAgaWYg
KCFtX2ZyYW1lcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBm
cmFtZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIGZyYW1lcy0+cHVz
aChtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKLSAgICAgICAganNvbk9i
ai0+c2V0KCJzdGFja1RyYWNlIiwgZnJhbWVzKTsKKyAgICAgICAgICAgIGZyYW1lcy0+cHVzaE9i
amVjdChtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKKyAgICAgICAganNv
bk9iai0+c2V0QXJyYXkoInN0YWNrVHJhY2UiLCBmcmFtZXMpOwogICAgIH0KICAgICBmcm9udGVu
ZC0+YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9iaik7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApp
bmRleCA5ZDNkMTAyLi4zYzY1OTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTIxNiw2
ICsyMTYsNSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZv
aWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgc3RvcmFnZUlkLCBp
biBTdHJpbmcga2V5LCBpbiBTdHJpbmcgdmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOwogICAg
ICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxv
bmcgY2FsbElkLCBpbiBsb25nIHN0b3JhZ2VJZCwgaW4gU3RyaW5nIGtleSwgb3V0IGJvb2xlYW4g
c3VjY2Vzcyk7CiAjZW5kaWYKLQogICAgIH07CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBiOTVjMGUxLi4xMjA2
MTg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWMK
ICAgICB2YWx1ZS0+c2V0U3RyaW5nKCJsYXN0UGF0aENvbXBvbmVudCIsIGFwcGxpY2F0aW9uQ2Fj
aGVJbmZvLm1fbWFuaWZlc3QubGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAgdmFsdWUtPnNldE51
bWJlcigiY3JlYXRpb25UaW1lIiwgYXBwbGljYXRpb25DYWNoZUluZm8ubV9jcmVhdGlvblRpbWUp
OwogICAgIHZhbHVlLT5zZXROdW1iZXIoInVwZGF0ZVRpbWUiLCBhcHBsaWNhdGlvbkNhY2hlSW5m
by5tX3VwZGF0ZVRpbWUpOwotICAgIHZhbHVlLT5zZXQoInJlc291cmNlcyIsIGJ1aWxkQXJyYXlG
b3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpKTsK
KyAgICB2YWx1ZS0+c2V0QXJyYXkoInJlc291cmNlcyIsIGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VzKGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpKTsKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKQEAgLTkzLDcgKzkzLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXQKICAg
ICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gYXBwbGljYXRpb25DYWNoZVJlc291cmNlcy5lbmQoKTsKICAgICBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VzLmJlZ2luKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGl0ICE9IGVuZDsg
KytpdCwgaSsrKQotICAgICAgICByZXNvdXJjZXMtPnB1c2goYnVpbGRPYmplY3RGb3JBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UoKml0KSk7CisgICAgICAgIHJlc291cmNlcy0+cHVzaE9iamVjdChi
dWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSgqaXQpKTsKIAogICAgIHJldHVy
biByZXNvdXJjZXM7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDk5M2ZlZDQuLjhhNmE0YTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNl
dAogICAgIExpc3RIYXNoU2V0PENvb2tpZT46Oml0ZXJhdG9yIGVuZCA9IGNvb2tpZXNMaXN0LmVu
ZCgpOwogICAgIExpc3RIYXNoU2V0PENvb2tpZT46Oml0ZXJhdG9yIGl0ID0gY29va2llc0xpc3Qu
YmVnaW4oKTsKICAgICBmb3IgKGludCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCBpKyspCi0gICAg
ICAgIGNvb2tpZXMtPnB1c2goYnVpbGRPYmplY3RGb3JDb29raWUoKml0KSk7CisgICAgICAgIGNv
b2tpZXMtPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JDb29raWUoKml0KSk7CiAKICAgICByZXR1
cm4gY29va2llczsKIH0KQEAgLTE0MTYsNyArMTQxNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Z2V0RE9NU3RvcmFnZUVudHJpZXMobG9uZyBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0
b3JBCiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGVudHJ5ID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgZW50cnktPnB1c2hTdHJpbmcobmFtZSk7CiAg
ICAgICAgICAgICBlbnRyeS0+cHVzaFN0cmluZyh2YWx1ZSk7Ci0gICAgICAgICAgICAoKmVudHJp
ZXMpLT5wdXNoKGVudHJ5KTsKKyAgICAgICAgICAgICgqZW50cmllcyktPnB1c2hBcnJheShlbnRy
eSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGVIZWFkZXJzKFJlZlB0cjxJbnNwZWN0b3JBcnJheT4q
IGhlYWRlcnMpCiB7CiAgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIHByb2ZpbGVzRW5kID0gbV9w
cm9maWxlcy5lbmQoKTsKICAgICBmb3IgKFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9IG1fcHJv
ZmlsZXMuYmVnaW4oKTsgaXQgIT0gcHJvZmlsZXNFbmQ7ICsraXQpCi0gICAgICAgICgqaGVhZGVy
cyktPnB1c2goY3JlYXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCkpOworICAgICAgICAoKmhl
YWRlcnMpLT5wdXNoT2JqZWN0KGNyZWF0ZVByb2ZpbGVIZWFkZXIoKml0LT5zZWNvbmQpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRQcm9maWxlKHVuc2lnbmVkIHVpZCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIHByb2ZpbGVPYmplY3QpCkBAIC0xNTExLDcgKzE1MTEsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUodW5zaWduZWQgdWlkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogcHJvZgogICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9
IG1fcHJvZmlsZXMuZmluZCh1aWQpOwogICAgIGlmIChpdCAhPSBtX3Byb2ZpbGVzLmVuZCgpKSB7
CiAgICAgICAgICpwcm9maWxlT2JqZWN0ID0gY3JlYXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29u
ZCk7Ci0gICAgICAgICgqcHJvZmlsZU9iamVjdCktPnNldCgiaGVhZCIsIGl0LT5zZWNvbmQtPmJ1
aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCgpKTsKKyAgICAgICAgKCpwcm9maWxlT2JqZWN0KS0+
c2V0T2JqZWN0KCJoZWFkIiwgaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFk
KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IDE3YmM1OWIuLjA3NGFhYjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVu
dExpc3RlbmVyc0Zvck5vZGUobG9uZyBub2RlSWQsIGxvbmcqIG91dE5vZGVJZCwgUgogICAgICAg
ICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHZlY3Rvci5zaXplKCk7ICsraikgewogICAgICAgICAg
ICAgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gdmVjdG9yW2pdOwog
ICAgICAgICAgICAgaWYgKGxpc3RlbmVyLnVzZUNhcHR1cmUpCi0gICAgICAgICAgICAgICAgKCps
aXN0ZW5lcnNBcnJheSktPnB1c2goYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVy
LCBpbmZvLmV2ZW50VHlwZSwgaW5mby5ub2RlKSk7CisgICAgICAgICAgICAgICAgKCpsaXN0ZW5l
cnNBcnJheSktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVy
LCBpbmZvLmV2ZW50VHlwZSwgaW5mby5ub2RlKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTYx
MSw3ICs2MTEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zv
ck5vZGUobG9uZyBub2RlSWQsIGxvbmcqIG91dE5vZGVJZCwgUgogICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IHZlY3Rvci5zaXplKCk7ICsraikgewogICAgICAgICAgICAgY29uc3QgUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gdmVjdG9yW2pdOwogICAgICAgICAgICAg
aWYgKCFsaXN0ZW5lci51c2VDYXB0dXJlKQotICAgICAgICAgICAgICAgICgqbGlzdGVuZXJzQXJy
YXkpLT5wdXNoKGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaW5mby5ldmVu
dFR5cGUsIGluZm8ubm9kZSkpOworICAgICAgICAgICAgICAgICgqbGlzdGVuZXJzQXJyYXkpLT5w
dXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaW5mby5ldmVu
dFR5cGUsIGluZm8ubm9kZSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzY2LDExICs3NjYs
MTEgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW4KICAgICAgICAgdmFsdWUtPnNldE51bWJlcigi
Y2hpbGROb2RlQ291bnQiLCBub2RlQ291bnQpOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRo
LCBub2Rlc01hcCk7CiAgICAgICAgIGlmIChjaGlsZHJlbi0+bGVuZ3RoKCkgPiAwKQotICAgICAg
ICAgICAgdmFsdWUtPnNldCgiY2hpbGRyZW4iLCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgdmFsdWUtPnNldEFycmF5KCJjaGlsZHJlbiIsIGNoaWxkcmVuLnJlbGVhc2UoKSk7CiAK
ICAgICAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9OT0RFKSB7CiAg
ICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUp
OwotICAgICAgICAgICAgdmFsdWUtPnNldCgiYXR0cmlidXRlcyIsIGJ1aWxkQXJyYXlGb3JFbGVt
ZW50QXR0cmlidXRlcyhlbGVtZW50KSk7CisgICAgICAgICAgICB2YWx1ZS0+c2V0QXJyYXkoImF0
dHJpYnV0ZXMiLCBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoZWxlbWVudCkpOwogICAg
ICAgICAgICAgaWYgKG5vZGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkgewogICAgICAgICAgICAg
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25lciA9IHN0YXRpY19jYXN0PEhUTUxG
cmFtZU93bmVyRWxlbWVudCo+KG5vZGUpOwogICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRTdHJp
bmcoImRvY3VtZW50VVJMIiwgZG9jdW1lbnRVUkxTdHJpbmcoZnJhbWVPd25lci0+Y29udGVudERv
Y3VtZW50KCkpKTsKQEAgLTgxMyw3ICs4MTMsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZAog
ICAgICAgICBpZiAoaW5uZXJDaGlsZE5vZGVDb3VudChjb250YWluZXIpID09IDEpIHsKICAgICAg
ICAgICAgIE5vZGUgKmNoaWxkID0gaW5uZXJGaXJzdENoaWxkKGNvbnRhaW5lcik7CiAgICAgICAg
ICAgICBpZiAoY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQotICAgICAgICAg
ICAgICAgIGNoaWxkcmVuLT5wdXNoKGJ1aWxkT2JqZWN0Rm9yTm9kZShjaGlsZCwgMCwgbm9kZXNN
YXApKTsKKyAgICAgICAgICAgICAgICBjaGlsZHJlbi0+cHVzaE9iamVjdChidWlsZE9iamVjdEZv
ck5vZGUoY2hpbGQsIDAsIG5vZGVzTWFwKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNo
aWxkcmVuLnJlbGVhc2UoKTsKICAgICB9IGVsc2UgaWYgKGRlcHRoID4gMCkgewpAQCAtODIxLDcg
KzgyMSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kCiAgICAgfQogCiAgICAgZm9yIChOb2Rl
ICpjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChjb250YWluZXIpOyBjaGlsZDsgY2hpbGQgPSBpbm5l
ck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAgICAgY2hpbGRyZW4tPnB1c2goYnVpbGRPYmplY3RG
b3JOb2RlKGNoaWxkLCBkZXB0aCwgbm9kZXNNYXApKTsKKyAgICAgICAgY2hpbGRyZW4tPnB1c2hP
YmplY3QoYnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCBkZXB0aCwgbm9kZXNNYXApKTsKICAgICBy
ZXR1cm4gY2hpbGRyZW4ucmVsZWFzZSgpOwogfQogCkBAIC05ODYsMjcgKzk4NiwyNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpnZXRTdHlsZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25s
eSwgUmVmUHRyPEluc3BlY3RvcgogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBpZiAoZWxlbWVudC0+c3R5bGUoKSkK
LSAgICAgICAgcmVzdWx0LT5zZXQoImlubGluZVN0eWxlIiwgYnVpbGRPYmplY3RGb3JTdHlsZShl
bGVtZW50LT5zdHlsZSgpLCB0cnVlKSk7Ci0gICAgcmVzdWx0LT5zZXQoImNvbXB1dGVkU3R5bGUi
LCBidWlsZE9iamVjdEZvclN0eWxlKGNvbXB1dGVkU3R5bGVJbmZvLmdldCgpLCBmYWxzZSkpOwor
ICAgICAgICByZXN1bHQtPnNldE9iamVjdCgiaW5saW5lU3R5bGUiLCBidWlsZE9iamVjdEZvclN0
eWxlKGVsZW1lbnQtPnN0eWxlKCksIHRydWUpKTsKKyAgICByZXN1bHQtPnNldE9iamVjdCgiY29t
cHV0ZWRTdHlsZSIsIGJ1aWxkT2JqZWN0Rm9yU3R5bGUoY29tcHV0ZWRTdHlsZUluZm8uZ2V0KCks
IGZhbHNlKSk7CiAKICAgICBDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciA9IGVsZW1lbnQtPm93
bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4g
bWF0Y2hlZFJ1bGVzID0gc2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIGF1
dGhvck9ubHkpOwotICAgIHJlc3VsdC0+c2V0KCJtYXRjaGVkQ1NTUnVsZXMiLCBidWlsZEFycmF5
Rm9yQ1NTUnVsZXMobm9kZS0+b3duZXJEb2N1bWVudCgpLCBtYXRjaGVkUnVsZXMuZ2V0KCkpKTsK
KyAgICByZXN1bHQtPnNldEFycmF5KCJtYXRjaGVkQ1NTUnVsZXMiLCBidWlsZEFycmF5Rm9yQ1NT
UnVsZXMobm9kZS0+b3duZXJEb2N1bWVudCgpLCBtYXRjaGVkUnVsZXMuZ2V0KCkpKTsKIAotICAg
IHJlc3VsdC0+c2V0KCJzdHlsZUF0dHJpYnV0ZXMiLCBidWlsZE9iamVjdEZvckF0dHJpYnV0ZVN0
eWxlcyhlbGVtZW50KSk7Ci0gICAgcmVzdWx0LT5zZXQoInBzZXVkb0VsZW1lbnRzIiwgYnVpbGRB
cnJheUZvclBzZXVkb0VsZW1lbnRzKGVsZW1lbnQsIGF1dGhvck9ubHkpKTsKKyAgICByZXN1bHQt
PnNldE9iamVjdCgic3R5bGVBdHRyaWJ1dGVzIiwgYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHls
ZXMoZWxlbWVudCkpOworICAgIHJlc3VsdC0+c2V0QXJyYXkoInBzZXVkb0VsZW1lbnRzIiwgYnVp
bGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGVsZW1lbnQsIGF1dGhvck9ubHkpKTsKIAogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGN1cnJlbnRTdHlsZSA9IHJlc3VsdDsKICAgICBFbGVtZW50
KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgIHdoaWxlIChw
YXJlbnRFbGVtZW50KSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmVudFN0
eWxlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgY3VycmVudFN0eWxlLT5z
ZXQoInBhcmVudCIsIHBhcmVudFN0eWxlKTsKKyAgICAgICAgY3VycmVudFN0eWxlLT5zZXRPYmpl
Y3QoInBhcmVudCIsIHBhcmVudFN0eWxlKTsKICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPnN0
eWxlKCkgJiYgcGFyZW50RWxlbWVudC0+c3R5bGUoKS0+bGVuZ3RoKCkpCi0gICAgICAgICAgICBw
YXJlbnRTdHlsZS0+c2V0KCJpbmxpbmVTdHlsZSIsIGJ1aWxkT2JqZWN0Rm9yU3R5bGUocGFyZW50
RWxlbWVudC0+c3R5bGUoKSwgdHJ1ZSkpOworICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldE9i
amVjdCgiaW5saW5lU3R5bGUiLCBidWlsZE9iamVjdEZvclN0eWxlKHBhcmVudEVsZW1lbnQtPnN0
eWxlKCksIHRydWUpKTsKIAogICAgICAgICBDU1NTdHlsZVNlbGVjdG9yKiBwYXJlbnRTZWxlY3Rv
ciA9IHBhcmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwogICAg
ICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFNlbGVj
dG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBhdXRob3JPbmx5KTsKLSAg
ICAgICAgcGFyZW50U3R5bGUtPnNldCgibWF0Y2hlZENTU1J1bGVzIiwgYnVpbGRBcnJheUZvckNT
U1J1bGVzKHBhcmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSwgcGFyZW50TWF0Y2hlZFJ1bGVz
LmdldCgpKSk7CisgICAgICAgIHBhcmVudFN0eWxlLT5zZXRBcnJheSgibWF0Y2hlZENTU1J1bGVz
IiwgYnVpbGRBcnJheUZvckNTU1J1bGVzKHBhcmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSwg
cGFyZW50TWF0Y2hlZFJ1bGVzLmdldCgpKSk7CiAKICAgICAgICAgcGFyZW50RWxlbWVudCA9IHBh
cmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgY3VycmVudFN0eWxlID0gcGFy
ZW50U3R5bGU7CkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpn
ZXRBbGxTdHlsZXMoUmVmUHRyPEluc3BlY3RvckFycmF5Piogc3R5bGVzKQogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAg
U3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGxpc3QtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAo
c3R5bGVTaGVldC0+aXNDU1NTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICAgICAgKCpzdHlsZXMp
LT5wdXNoKGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgoKml0KS5nZXQoKSwgc3RhdGljX2Nhc3Q8
Q1NTU3R5bGVTaGVldCo+KHN0eWxlU2hlZXQpKSk7CisgICAgICAgICAgICAgICAgKCpzdHlsZXMp
LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgoKml0KS5nZXQoKSwgc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0eWxlU2hlZXQpKSk7CiAgICAgICAgIH0KICAgICB9CiB9
CkBAIC0xMDQ0LDkgKzEwNDQsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRSdWxlUmFu
Z2VzKGxvbmcgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KgogICAgICAgICBm
b3IgKEhhc2hNYXA8bG9uZywgU291cmNlUmFuZ2U+OjppdGVyYXRvciBpdCA9IHJ1bGVSYW5nZXMu
YmVnaW4oKTsgaXQgIT0gcnVsZVJhbmdlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgaWYg
KGl0LT5zZWNvbmQuc2Vjb25kKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcnVsZVJhbmdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAg
ICAgICByZXN1bHQtPnNldChTdHJpbmc6Om51bWJlcihpdC0+Zmlyc3QpLnV0ZjgoKS5kYXRhKCks
IHJ1bGVSYW5nZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoU3RyaW5nOjpu
dW1iZXIoaXQtPmZpcnN0KS51dGY4KCkuZGF0YSgpLCBydWxlUmFuZ2UpOwogICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJvZHlSYW5nZSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgICAgICAgICAgICAgcnVsZVJhbmdlLT5zZXQoImJvZHlSYW5nZSIsIGJv
ZHlSYW5nZSk7CisgICAgICAgICAgICAgICAgcnVsZVJhbmdlLT5zZXRPYmplY3QoImJvZHlSYW5n
ZSIsIGJvZHlSYW5nZSk7CiAgICAgICAgICAgICAgICAgYm9keVJhbmdlLT5zZXROdW1iZXIoInN0
YXJ0IiwgaXQtPnNlY29uZC5maXJzdCk7CiAgICAgICAgICAgICAgICAgYm9keVJhbmdlLT5zZXRO
dW1iZXIoImVuZCIsIGl0LT5zZWNvbmQuc2Vjb25kKTsKICAgICAgICAgICAgIH0KQEAgLTEwODUs
NyArMTA4NSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMoRWxlCiAgICAgICAgIEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgaWYgKGF0
dHJpYnV0ZS0+c3R5bGUoKSkgewogICAgICAgICAgICAgU3RyaW5nIGF0dHJpYnV0ZU5hbWUgPSBh
dHRyaWJ1dGUtPmxvY2FsTmFtZSgpOwotICAgICAgICAgICAgc3R5bGVBdHRyaWJ1dGVzLT5zZXQo
YXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpLCBidWlsZE9iamVjdEZvclN0eWxlKGF0dHJpYnV0
ZS0+c3R5bGUoKSwgdHJ1ZSkpOworICAgICAgICAgICAgc3R5bGVBdHRyaWJ1dGVzLT5zZXRPYmpl
Y3QoYXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpLCBidWlsZE9iamVjdEZvclN0eWxlKGF0dHJp
YnV0ZS0+c3R5bGUoKSwgdHJ1ZSkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBzdHls
ZUF0dHJpYnV0ZXM7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNTU1J1bGVzKERvY3VtZW50KiBv
dwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IG1hdGNoZWRSdWxlcyAmJiBpIDwgbWF0Y2hlZFJ1
bGVzLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIENTU1J1bGUqIHJ1bGUgPSBtYXRjaGVkUnVs
ZXMtPml0ZW0oaSk7CiAgICAgICAgIGlmIChydWxlLT50eXBlKCkgPT0gQ1NTUnVsZTo6U1RZTEVf
UlVMRSkKLSAgICAgICAgICAgIG1hdGNoZWRDU1NSdWxlcy0+cHVzaChidWlsZE9iamVjdEZvclJ1
bGUob3duZXJEb2N1bWVudCwgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVsZSkpKTsKKyAg
ICAgICAgICAgIG1hdGNoZWRDU1NSdWxlcy0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvclJ1bGUo
b3duZXJEb2N1bWVudCwgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVsZSkpKTsKICAgICB9
CiAgICAgcmV0dXJuIG1hdGNoZWRDU1NSdWxlcy5yZWxlYXNlKCk7CiB9CkBAIC0xMTEzLDggKzEx
MTMsOCBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKEVsZW1lbgogICAgICAgICBpZiAobWF0Y2hlZFJ1bGVz
ICYmIG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHBzZXVkb1N0eWxlcyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgICAgICBwc2V1ZG9TdHlsZXMtPnNldE51bWJlcigicHNldWRvSWQiLCBzdGF0aWNfY2FzdDxp
bnQ+KHBzZXVkb0lkKSk7Ci0gICAgICAgICAgICBwc2V1ZG9TdHlsZXMtPnNldCgicnVsZXMiLCBi
dWlsZEFycmF5Rm9yQ1NTUnVsZXMoZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLCBtYXRjaGVkUnVs
ZXMuZ2V0KCkpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+cHVzaChwc2V1ZG9TdHlsZXMucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgIHBzZXVkb1N0eWxlcy0+c2V0QXJyYXkoInJ1bGVzIiwgYnVpbGRB
cnJheUZvckNTU1J1bGVzKGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSwgbWF0Y2hlZFJ1bGVzLmdl
dCgpKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1c2hPYmplY3QocHNldWRvU3R5bGVzLnJlbGVh
c2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CkBA
IC0xMzA5LDcgKzEzMDksNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYQogCiAgICAgICAgIERp
c2FibGVkU3R5bGVEZWNsYXJhdGlvbiogZGlzYWJsZWRTdHlsZSA9IGNzc1N0b3JlKCktPmRpc2Fi
bGVkU3R5bGVGb3JJZChzdHlsZUlkLCBmYWxzZSk7CiAgICAgICAgIGlmIChkaXNhYmxlZFN0eWxl
KQotICAgICAgICAgICAgcmVzdWx0LT5zZXQoImRpc2FibGVkIiwgYnVpbGRBcnJheUZvckRpc2Fi
bGVkU3R5bGVQcm9wZXJ0aWVzKGRpc2FibGVkU3R5bGUpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+
c2V0QXJyYXkoImRpc2FibGVkIiwgYnVpbGRBcnJheUZvckRpc2FibGVkU3R5bGVQcm9wZXJ0aWVz
KGRpc2FibGVkU3R5bGUpKTsKICAgICB9CiAgICAgcmVzdWx0LT5zZXRTdHJpbmcoIndpZHRoIiwg
c3R5bGUtPmdldFByb3BlcnR5VmFsdWUoIndpZHRoIikpOwogICAgIHJlc3VsdC0+c2V0U3RyaW5n
KCJoZWlnaHQiLCBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgiaGVpZ2h0IikpOwpAQCAtMTMzNiwx
MCArMTMzNiwxMCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwb3B1bGF0ZU9iamVjdFdpdGhT
dHlsZVByb3BlcnRpZXMoQ1NTU3R5bGVEZWNsYXJhdGlvbiogcwogICAgICAgICAgICAgc2hvcnRo
YW5kVmFsdWVzLT5zZXRTdHJpbmcoc2hvcnRoYW5kLCBzaG9ydGhhbmRWYWx1ZShzdHlsZSwgc2hv
cnRoYW5kKSk7CiAgICAgICAgIH0KICAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygidmFsdWUi
LCBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKSk7Ci0gICAgICAgIHByb3BlcnRpZXMtPnB1
c2gocHJvcGVydHkucmVsZWFzZSgpKTsKKyAgICAgICAgcHJvcGVydGllcy0+cHVzaE9iamVjdChw
cm9wZXJ0eS5yZWxlYXNlKCkpOwogICAgIH0KLSAgICByZXN1bHQtPnNldCgicHJvcGVydGllcyIs
IHByb3BlcnRpZXMpOwotICAgIHJlc3VsdC0+c2V0KCJzaG9ydGhhbmRWYWx1ZXMiLCBzaG9ydGhh
bmRWYWx1ZXMpOworICAgIHJlc3VsdC0+c2V0QXJyYXkoInByb3BlcnRpZXMiLCBwcm9wZXJ0aWVz
KTsKKyAgICByZXN1bHQtPnNldE9iamVjdCgic2hvcnRoYW5kVmFsdWVzIiwgc2hvcnRoYW5kVmFs
dWVzKTsKIH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JEaXNhYmxlZFN0eWxlUHJvcGVydGllcyhEaXNhYmxlZFN0eWxlRGVjbGFy
YXRpb24qIGRlY2xhcmF0aW9uKQpAQCAtMTM1MCw3ICsxMzUwLDcgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JEaXNhYmxlZFN0eWxl
UHJvcGVydGkKICAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygibmFtZSIsIGl0LT5maXJzdCk7
CiAgICAgICAgIHByb3BlcnR5LT5zZXRTdHJpbmcoInZhbHVlIiwgaXQtPnNlY29uZC5maXJzdCk7
CiAgICAgICAgIHByb3BlcnR5LT5zZXRTdHJpbmcoInByaW9yaXR5IiwgaXQtPnNlY29uZC5zZWNv
bmQpOwotICAgICAgICBwcm9wZXJ0aWVzLT5wdXNoKHByb3BlcnR5LnJlbGVhc2UoKSk7CisgICAg
ICAgIHByb3BlcnRpZXMtPnB1c2hPYmplY3QocHJvcGVydHkucmVsZWFzZSgpKTsKICAgICB9CiAg
ICAgcmV0dXJuIHByb3BlcnRpZXMucmVsZWFzZSgpOwogfQpAQCAtMTM3MCwxMCArMTM3MCwxMCBA
QCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yU3R5bGVTaGVldChEb2N1bWVudAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY3NzUnVsZUxpc3QtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgICAgIENTU1J1bGUqIHJ1
bGUgPSBjc3NSdWxlTGlzdC0+aXRlbShpKTsKICAgICAgICAgICAgIGlmIChydWxlLT5pc1N0eWxl
UnVsZSgpKQotICAgICAgICAgICAgICAgIGNzc1J1bGVzLT5wdXNoKGJ1aWxkT2JqZWN0Rm9yUnVs
ZShvd25lckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSkpOworICAg
ICAgICAgICAgICAgIGNzc1J1bGVzLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yUnVsZShvd25l
ckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSkpOwogICAgICAgICB9
CiAgICAgfQotICAgIHJlc3VsdC0+c2V0KCJjc3NSdWxlcyIsIGNzc1J1bGVzLnJlbGVhc2UoKSk7
CisgICAgcmVzdWx0LT5zZXRBcnJheSgiY3NzUnVsZXMiLCBjc3NSdWxlcy5yZWxlYXNlKCkpOwog
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCkBAIC0xMzkwLDcgKzEzOTAsNyBAQCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yUnVsZShEb2N1bWVudCogb3duZQogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBw
YXJlbnRTdHlsZVNoZWV0VmFsdWUgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBwYXJlbnRTdHlsZVNoZWV0VmFsdWUtPnNldFN0cmluZygiaHJlZiIsIHBhcmVudFN0eWxlU2hl
ZXQtPmhyZWYoKSk7CiAgICAgICAgIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS0+c2V0TnVtYmVyKCJp
ZCIsIGNzc1N0b3JlKCktPmJpbmRTdHlsZVNoZWV0KHBhcmVudFN0eWxlU2hlZXQpKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXQoInBhcmVudFN0eWxlU2hlZXQiLCBwYXJlbnRTdHlsZVNoZWV0VmFsdWUu
cmVsZWFzZSgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoInBhcmVudFN0eWxlU2hlZXQi
LCBwYXJlbnRTdHlsZVNoZWV0VmFsdWUucmVsZWFzZSgpKTsKICAgICB9CiAgICAgYm9vbCBpc1Vz
ZXJBZ2VudCA9IHBhcmVudFN0eWxlU2hlZXQgJiYgIXBhcmVudFN0eWxlU2hlZXQtPm93bmVyTm9k
ZSgpICYmIHBhcmVudFN0eWxlU2hlZXQtPmhyZWYoKS5pc0VtcHR5KCk7CiAgICAgYm9vbCBpc1Vz
ZXIgPSBwYXJlbnRTdHlsZVNoZWV0ICYmIHBhcmVudFN0eWxlU2hlZXQtPm93bmVyTm9kZSgpICYm
IHBhcmVudFN0eWxlU2hlZXQtPm93bmVyTm9kZSgpLT5ub2RlTmFtZSgpID09ICIjZG9jdW1lbnQi
OwpAQCAtMTQwMCw3ICsxNDAwLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoRG9jdW1lbnQqIG93bmUKIAogICAgIC8v
IEJpbmQgZWRpdGFibGUgc2NyaXB0cyBvbmx5LgogICAgIGJvb2wgYmluZCA9ICFpc1VzZXJBZ2Vu
dCAmJiAhaXNVc2VyOwotICAgIHJlc3VsdC0+c2V0KCJzdHlsZSIsIGJ1aWxkT2JqZWN0Rm9yU3R5
bGUocnVsZS0+c3R5bGUoKSwgYmluZCkpOworICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJzdHlsZSIs
IGJ1aWxkT2JqZWN0Rm9yU3R5bGUocnVsZS0+c3R5bGUoKSwgYmluZCkpOwogCiAgICAgaWYgKGJp
bmQpCiAgICAgICAgIHJlc3VsdC0+c2V0TnVtYmVyKCJpZCIsIGNzc1N0b3JlKCktPmJpbmRSdWxl
KHJ1bGUpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggYjcwZGRiZi4uZTFjMGRjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNhdmVCcmVha3BvaW50cygpCiAgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBicmVha3BvaW50c0ZvclVSTCA9IFNjcmlwdEJyZWFrcG9pbnQ6Omluc3BlY3Rvck9iamVj
dEZyb21Tb3VyY2VCcmVha3BvaW50cyhpdC0+c2Vjb25kKTsKLSAgICAgICAgYnJlYWtwb2ludHMt
PnNldChpdC0+Zmlyc3QsIGJyZWFrcG9pbnRzRm9yVVJMKTsKKyAgICAgICAgYnJlYWtwb2ludHMt
PnNldE9iamVjdChpdC0+Zmlyc3QsIGJyZWFrcG9pbnRzRm9yVVJMKTsKICAgICB9CiAgICAgbV9p
bnNwZWN0b3JDb250cm9sbGVyLT5zYXZlQnJlYWtwb2ludHMoYnJlYWtwb2ludHMpOwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCmluZGV4IDkyNTlkNzkuLmEyYjU1YjAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKQEAgLTE4OSw3ICsxODks
NyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoUmVtb3RlSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAgICAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmco
InBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKICAgICAgICAganNvbk9iamVjdC0+c2V0U3Ry
aW5nKCJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgp
KTsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVxdWVzdEhlYWRlcnMgPSBidWls
ZEhlYWRlcnNPYmplY3QobV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKLSAgICAgICAganNvbk9iamVj
dC0+c2V0KCJyZXF1ZXN0SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKKyAgICAgICAganNvbk9i
amVjdC0+c2V0T2JqZWN0KCJyZXF1ZXN0SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKICAgICAg
ICAganNvbk9iamVjdC0+c2V0Qm9vbCgibWFpblJlc291cmNlIiwgbV9pc01haW5SZXNvdXJjZSk7
CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygicmVxdWVzdE1ldGhvZCIsIG1fcmVxdWVz
dE1ldGhvZCk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygicmVxdWVzdEZvcm1EYXRh
IiwgbV9yZXF1ZXN0Rm9ybURhdGEpOwpAQCAtMjAzLDEyICsyMDMsMTIgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KFJlbW90ZUluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCkKICAgICAgICAganNvbk9iamVjdC0+c2V0TnVtYmVyKCJzdGF0dXNDb2RlIiwgbV9y
ZXNwb25zZVN0YXR1c0NvZGUpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1
c1RleHQiLCBtX3Jlc3BvbnNlU3RhdHVzVGV4dCk7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHJlc3BvbnNlSGVhZGVycyA9IGJ1aWxkSGVhZGVyc09iamVjdChtX3Jlc3BvbnNlSGVh
ZGVyRmllbGRzKTsKLSAgICAgICAganNvbk9iamVjdC0+c2V0KCJyZXNwb25zZUhlYWRlcnMiLCBy
ZXNwb25zZUhlYWRlcnMpOworICAgICAgICBqc29uT2JqZWN0LT5zZXRPYmplY3QoInJlc3BvbnNl
SGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldE51bWJl
cigiY29ubmVjdGlvbklEIiwgbV9jb25uZWN0aW9uSUQpOwogICAgICAgICBqc29uT2JqZWN0LT5z
ZXRCb29sKCJjb25uZWN0aW9uUmV1c2VkIiwgbV9jb25uZWN0aW9uUmV1c2VkKTsKICAgICAgICAg
anNvbk9iamVjdC0+c2V0Qm9vbCgiY2FjaGVkIiwgbV9jYWNoZWQpOwogICAgICAgICBpZiAobV9s
b2FkVGltaW5nICYmICFtX2NhY2hlZCkKLSAgICAgICAgICAgIGpzb25PYmplY3QtPnNldCgidGlt
aW5nIiwgYnVpbGRPYmplY3RGb3JUaW1pbmcobV9sb2FkVGltaW5nLmdldCgpKSk7CisgICAgICAg
ICAgICBqc29uT2JqZWN0LT5zZXRPYmplY3QoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9yVGltaW5n
KG1fbG9hZFRpbWluZy5nZXQoKSkpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRCb29sKCJkaWRS
ZXNwb25zZUNoYW5nZSIsIHRydWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggYWQzOTQzNC4uNjZkMzM3MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAg
dm9pZCByZXBvcnRUcmFuc2FjdGlvbkZhaWxlZChJbnNwZWN0b3JTdG9yYWdlQWdlbnQqIGFnZW50
LCBsb25nIHRyYW5zYWN0aW9uSWQsIFMKIAogY2xhc3MgU3RhdGVtZW50Q2FsbGJhY2sgOiBwdWJs
aWMgU1FMU3RhdGVtZW50Q2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0YXRlbWVudENhbGxiYWNrPiBjcmVhdGUobG9uZyB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRy
PEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdlbnQpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3RhdGVtZW50Q2FsbGJhY2sodHJhbnNhY3Rpb25JZCwgYWdlbnQpKTsNCi0g
ICAgfQ0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0ZW1lbnRDYWxsYmFjaz4gY3JlYXRlKGxv
bmcgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdG9yYWdlQWdlbnQ+IGFnZW50
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0ZW1lbnRDYWxsYmFjayh0
cmFuc2FjdGlvbklkLCBhZ2VudCkpOworICAgIH0KIAogICAgIHZpcnR1YWwgflN0YXRlbWVudENh
bGxiYWNrKCkgeyB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3dp
dGNoICh2YWx1ZS50eXBlKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpTdHJp
bmdWYWx1ZTogdmFsdWVzLT5wdXNoU3RyaW5nKHZhbHVlLnN0cmluZygpKTsgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6TnVtYmVyVmFsdWU6IHZhbHVlcy0+cHVzaE51bWJl
cih2YWx1ZS5udW1iZXIoKSk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6
Ok51bGxWYWx1ZTogdmFsdWVzLT5wdXNoKEluc3BlY3RvclZhbHVlOjpudWxsKCkpOyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdWxsVmFsdWU6IHZhbHVlcy0+cHVzaFZh
bHVlKEluc3BlY3RvclZhbHVlOjpudWxsKCkpOyBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBtX2FnZW50LT5mcm9udGVuZCgpLT5zcWxUcmFuc2FjdGlvblN1Y2NlZWRl
ZChtX3RyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpOwpAQCAtMTA5LDEwICsxMDks
MTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3RhdGVtZW50RXJyb3JDYWxsYmFjayA6IHB1YmxpYyBT
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBjcmVhdGUobG9uZyB0cmFuc2FjdGlvbklkLCBQYXNz
UmVmUHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdlbnQpDQotICAgIHsNCi0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3RhdGVtZW50RXJyb3JDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBh
Z2VudCkpOw0KLSAgICB9DQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2s+IGNyZWF0ZShsb25nIHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3Rv
cmFnZUFnZW50PiBhZ2VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Rh
dGVtZW50RXJyb3JDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBhZ2VudCkpOworICAgIH0KIAogICAg
IHZpcnR1YWwgflN0YXRlbWVudEVycm9yQ2FsbGJhY2soKSB7IH0KIApAQCAtMTMyLDEwICsxMzIs
MTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgVHJhbnNhY3Rpb25DYWxsYmFjayA6IHB1YmxpYyBTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFu
c2FjdGlvbkNhbGxiYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIGxvbmcg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdG9yYWdlQWdlbnQ+IGFnZW50KQ0K
LSAgICB7DQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5zYWN0aW9uQ2FsbGJhY2so
c3FsU3RhdGVtZW50LCB0cmFuc2FjdGlvbklkLCBhZ2VudCkpOw0KLSAgICB9DQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNx
bFN0YXRlbWVudCwgbG9uZyB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvclN0b3Jh
Z2VBZ2VudD4gYWdlbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5z
YWN0aW9uQ2FsbGJhY2soc3FsU3RhdGVtZW50LCB0cmFuc2FjdGlvbklkLCBhZ2VudCkpOworICAg
IH0KIAogICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KIApAQCAtMTYzLDEw
ICsxNjMsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIDog
cHVibGljIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBjcmVhdGUobG9uZyB0cmFuc2Fj
dGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdlbnQpDQotICAgIHsN
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKHRy
YW5zYWN0aW9uSWQsIGFnZW50KSk7DQotICAgIH0NCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrPiBjcmVhdGUobG9uZyB0cmFuc2FjdGlvbklkLCBQYXNzUmVm
UHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdlbnQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBhZ2Vu
dCkpOworICAgIH0KIAogICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaygpIHsg
fQogCkBAIC0xODMsMjAgKzE4MywyMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnNwZWN0b3JT
dG9yYWdlQWdlbnQ+IG1fYWdlbnQ7CiB9OwogCi1jbGFzcyBUcmFuc2FjdGlvblN1Y2Nlc3NDYWxs
YmFjayA6IHB1YmxpYyBWb2lkQ2FsbGJhY2sgew0KLXB1YmxpYzoNCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJhY2s+IGNyZWF0ZSgpDQotICAgIHsNCi0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJhY2soKSk7DQot
ICAgIH0NCi0NCi0gICAgdmlydHVhbCB+VHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJhY2soKSB7IH0N
Ci0NCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KCkgeyB9DQotDQotcHJpdmF0ZToNCi0g
ICAgVHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJhY2soKSB7IH0NCi19Ow0KK2NsYXNzIFRyYW5zYWN0
aW9uU3VjY2Vzc0NhbGxiYWNrIDogcHVibGljIFZvaWRDYWxsYmFjayB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8VHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJhY2s+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5zYWN0aW9uU3VjY2Vzc0NhbGxi
YWNrKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uU3VjY2Vzc0NhbGxiYWNr
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoKSB7IH0KKworcHJpdmF0ZToK
KyAgICBUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpIHsgfQorfTsKIAogfSAvLyBuYW1lc3Bh
Y2UKIApAQCAtMjEyLDcgKzIxMiw3IEBAIEluc3BlY3RvclN0b3JhZ2VBZ2VudDo6fkluc3BlY3Rv
clN0b3JhZ2VBZ2VudCgpCiBsb25nIEluc3BlY3RvclN0b3JhZ2VBZ2VudDo6ZXhlY3V0ZVNRTChE
YXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcXVlcnkpCiB7CiAgICAgbG9uZyB0cmFu
c2FjdGlvbklkID0gKytsYXN0VHJhbnNhY3Rpb25JZDsKLSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rp
b25DYWxsYmFjaz4gY2FsbGJhY2soVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKHF1ZXJ5LCB0
cmFuc2FjdGlvbklkLCB0aGlzKSk7DQorICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
PiBjYWxsYmFjayhUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUocXVlcnksIHRyYW5zYWN0aW9u
SWQsIHRoaXMpKTsKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKHRyYW5zYWN0aW9uSWQs
IHRoaXMpKTsKICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2soVHJhbnNh
Y3Rpb25TdWNjZXNzQ2FsbGJhY2s6OmNyZWF0ZSgpKTsKICAgICBkYXRhYmFzZS0+dHJhbnNhY3Rp
b24oY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgc3VjY2Vzc0Nh
bGxiYWNrLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCmluZGV4IGI1Y2ZmNjguLmFhNDJhNTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6cHVzaEdDRXZlbnRSZWNvcmRzKCkKICAgICBtX2djRXZlbnRzLmNs
ZWFyKCk7CiAgICAgZm9yIChHQ0V2ZW50czo6aXRlcmF0b3IgaSA9IGV2ZW50cy5iZWdpbigpOyBp
ICE9IGV2ZW50cy5lbmQoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChpLT5z
dGFydFRpbWUpOwotICAgICAgICByZWNvcmQtPnNldCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlR0NFdmVudERhdGEoaS0+Y29sbGVjdGVkQnl0ZXMpKTsKKyAgICAgICAgcmVj
b3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdDRXZl
bnREYXRhKGktPmNvbGxlY3RlZEJ5dGVzKSk7CiAgICAgICAgIHJlY29yZC0+c2V0TnVtYmVyKCJl
bmRUaW1lIiwgaS0+ZW5kVGltZSk7CiAgICAgICAgIGFkZFJlY29yZFRvVGltZWxpbmUocmVjb3Jk
LnJlbGVhc2UoKSwgR0NFdmVudFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAgICAgfQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkSW5zdGFsbFRpbWVyKGlu
dCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNv
cmRzKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAg
ICByZWNvcmQtPnNldCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZXJJ
bnN0YWxsRGF0YSh0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KSk7CisgICAgcmVjb3JkLT5z
ZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVySW5zdGFs
bERhdGEodGltZXJJZCwgdGltZW91dCwgc2luZ2xlU2hvdCkpOwogICAgIGFkZFJlY29yZFRvVGlt
ZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgVGltZXJJbnN0YWxsVGltZWxpbmVSZWNvcmRUeXBlKTsK
IH0KIApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
UmVtb3ZlVGltZXIoaW50IHRpbWVySWQpCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICByZWNvcmQt
PnNldCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVyRGF0
YSh0aW1lcklkKSk7CisgICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lckRhdGEodGltZXJJZCkpOwogICAgIGFkZFJlY29y
ZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgVGltZXJSZW1vdmVUaW1lbGluZVJlY29yZFR5
cGUpOwogfQogCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBw
dXNoR0NFdmVudFJlY29yZHMoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQg
PSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50
VGltZU1TKCkpOwotICAgIHJlY29yZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEodXJsKSk7CisgICAgcmVjb3JkLT5z
ZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVNjaGVkdWxlUmVz
b3VyY2VSZXF1ZXN0RGF0YSh1cmwpKTsKICAgICByZWNvcmQtPnNldE51bWJlcigidHlwZSIsIFNj
aGVkdWxlUmVzb3VyY2VSZXF1ZXN0VGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICBhZGRSZWNvcmRU
b1RpbWVsaW5lKHJlY29yZC5yZWxlYXNlKCksIFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0VGltZWxp
bmVSZWNvcmRUeXBlKTsKIH0KQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgYgogewogICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29y
ZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5zZXQoImRhdGEiLCBUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlLCByZXF1ZXN0KSk7CisgICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEi
LCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlk
ZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCByZXF1ZXN0KSk7CiAgICAgcmVjb3JkLT5zZXROdW1i
ZXIoInR5cGUiLCBSZXNvdXJjZVNlbmRSZXF1ZXN0VGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICBz
ZXRIZWFwU2l6ZVN0YXRpc3RpYyhyZWNvcmQuZ2V0KCkpOwogICAgIG1fZnJvbnRlbmQtPmFkZFJl
Y29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLAogewogICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5zZXQo
ImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlRmluaXNoRGF0YShp
ZGVudGlmaWVyLCBkaWRGYWlsKSk7CisgICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlRmluaXNoRGF0YShpZGVudGlmaWVyLCBk
aWRGYWlsKSk7CiAgICAgcmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCBSZXNvdXJjZUZpbmlzaFRp
bWVsaW5lUmVjb3JkVHlwZSk7CiAgICAgc2V0SGVhcFNpemVTdGF0aXN0aWMocmVjb3JkLmdldCgp
KTsKICAgICBtX2Zyb250ZW5kLT5hZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5yZWxlYXNlKCkp
OwpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTWFy
a1RpbWVsaW5lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBwdXNoR0NFdmVudFJlY29y
ZHMoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAg
IHJlY29yZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVNYXJrVGlt
ZWxpbmVEYXRhKG1lc3NhZ2UpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlTWFya1RpbWVsaW5lRGF0YShtZXNzYWdlKSk7CiAgICAg
YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBNYXJrVGltZWxpbmVSZWNvcmRU
eXBlKTsKIH0KIApAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6YWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcHJwCiAg
ICAgICAgIG1fZnJvbnRlbmQtPmFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkgcGFyZW50ID0gbV9yZWNv
cmRTdGFjay5sYXN0KCk7Ci0gICAgICAgIHBhcmVudC5jaGlsZHJlbi0+cHVzaChyZWNvcmQucmVs
ZWFzZSgpKTsKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLT5wdXNoT2JqZWN0KHJlY29yZC5yZWxl
YXNlKCkpOwogICAgIH0KIH0KIApAQCAtMzE3LDggKzMxNyw4IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSB0
eXBlKQogICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5IGVudHJ5ID0gbV9yZWNvcmRTdGFjay5s
YXN0KCk7CiAgICAgICAgIG1fcmVjb3JkU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBBU1NF
UlQoZW50cnkudHlwZSA9PSB0eXBlKTsKLSAgICAgICAgZW50cnkucmVjb3JkLT5zZXQoImRhdGEi
LCBlbnRyeS5kYXRhKTsKLSAgICAgICAgZW50cnkucmVjb3JkLT5zZXQoImNoaWxkcmVuIiwgZW50
cnkuY2hpbGRyZW4pOworICAgICAgICBlbnRyeS5yZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIGVu
dHJ5LmRhdGEpOworICAgICAgICBlbnRyeS5yZWNvcmQtPnNldEFycmF5KCJjaGlsZHJlbiIsIGVu
dHJ5LmNoaWxkcmVuKTsKICAgICAgICAgZW50cnkucmVjb3JkLT5zZXROdW1iZXIoImVuZFRpbWUi
LCBXVEY6OmN1cnJlbnRUaW1lTVMoKSk7CiAgICAgICAgIGFkZFJlY29yZFRvVGltZWxpbmUoZW50
cnkucmVjb3JkLCB0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cAppbmRleCBkYWQ4NGFjLi5mOTI2YmQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBidWls
ZFZhbHVlKGNvbnN0IFVDaGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29ucwogICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBhcnJheU5vZGUgPSBidWlsZFZhbHVlKHN0YXJ0
LCBlbmQsICZ0b2tlbkVuZCwgZGVwdGggKyAxKTsKICAgICAgICAgICAgIGlmICghYXJyYXlOb2Rl
KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgYXJyYXktPnB1c2goYXJy
YXlOb2RlKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUoYXJyYXlOb2RlKTsKIAogICAg
ICAgICAgICAgLy8gQWZ0ZXIgYSBsaXN0IHZhbHVlLCB3ZSBleHBlY3QgYSBjb21tYSBvciB0aGUg
ZW5kIG9mIHRoZSBsaXN0LgogICAgICAgICAgICAgc3RhcnQgPSB0b2tlbkVuZDsKQEAgLTQwNiw3
ICs0MDYsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBidWlsZFZhbHVlKGNvbnN0IFVD
aGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29ucwogICAgICAgICAgICAgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiB2YWx1ZSA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5kLCBk
ZXB0aCArIDEpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgICAgIG9iamVjdC0+c2V0KGtleSwgdmFsdWUpOworICAgICAgICAgICAg
b2JqZWN0LT5zZXRWYWx1ZShrZXksIHZhbHVlKTsKICAgICAgICAgICAgIHN0YXJ0ID0gdG9rZW5F
bmQ7CiAKICAgICAgICAgICAgIC8vIEFmdGVyIGEga2V5L3ZhbHVlIHBhaXIsIHdlIGV4cGVjdCBh
IGNvbW1hIG9yIHRoZSBlbmQgb2YgdGhlCkBAIC01MDQsNiArNTA0LDIyIEBAIGJvb2wgSW5zcGVj
dG9yVmFsdWU6OmFzU3RyaW5nKFN0cmluZyopIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIEluc3BlY3RvclZhbHVlOjphc1ZhbHVlKFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIG91
dHB1dCkKK3sKKyAgICAqb3V0cHV0ID0gdGhpczsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBJbnNwZWN0b3JWYWx1ZTo6YXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1
dCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzQXJy
YXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KQoreworICAgIHJldHVybiBmYWxzZTsK
K30KKwogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclZhbHVlOjphc09iamVj
dCgpCiB7CiAgICAgcmV0dXJuIDA7CkBAIC02MDYsNiArNjIyLDEyIEBAIHZvaWQgSW5zcGVjdG9y
U3RyaW5nOjp3cml0ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIGRvdWJs
ZVF1b3RlU3RyaW5nKG1fc3RyaW5nVmFsdWUsIG91dHB1dCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9y
T2JqZWN0Ojphc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KQoreworICAg
ICpvdXRwdXQgPSB0aGlzOworICAgIHJldHVybiB0cnVlOworfQorCiBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gSW5zcGVjdG9yT2JqZWN0Ojphc09iamVjdCgpCiB7CiAgICAgcmV0dXJuIHRo
aXM7CkBAIC02NzQsNiArNjk2LDEyIEBAIHZvaWQgSW5zcGVjdG9yT2JqZWN0Ojp3cml0ZUpTT04o
VmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIG91dHB1dC0+YXBwZW5kKCd9Jyk7CiB9
CiAKK2Jvb2wgSW5zcGVjdG9yQXJyYXk6OmFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piog
b3V0cHV0KQoreworICAgICpvdXRwdXQgPSB0aGlzOworICAgIHJldHVybiB0cnVlOworfQorCiBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JBcnJheTo6YXNBcnJheSgpCiB7CiAg
ICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IGU1MjMw
MzIuLjRiYzM2ZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC03Myw2ICs3
Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgbG9uZyog
b3V0cHV0KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgaW50KiBv
dXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
b3V0cHV0KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIG91dHB1dCk7CisgICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFy
cmF5Piogb3V0cHV0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBh
c09iamVjdCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXNBcnJh
eSgpOwogCkBAIC0xNjMsMTIgKzE2NiwxNSBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0
b3JPYmplY3QoKSB7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Piogb3V0cHV0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBhc09iamVjdCgpOwogCiAgICAgdm9pZCBzZXRCb29sKGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCk7CiAgICAgdm9pZCBzZXROdW1iZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUpOwog
ICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
Pik7CisgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KTsKKyAgICB2b2lkIHNldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pik7CisgICAgdm9pZCBzZXRBcnJheShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KTsKIAogICAgIGJvb2wgZ2V0Qm9v
bChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkgY29uc3Q7CiAgICAgYm9vbCBnZXRO
dW1iZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUqIG91dHB1dCkgY29uc3Q7CkBAIC0xOTgs
MTIgKzIwNCwxNSBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JBcnJheSgpIHsgfQog
CisgICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFzQXJyYXkoKTsKIAog
ICAgIHZvaWQgcHVzaEJvb2woYm9vbCk7CiAgICAgdm9pZCBwdXNoTnVtYmVyKGRvdWJsZSk7CiAg
ICAgdm9pZCBwdXNoU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcHVzaChQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPik7CisgICAgdm9pZCBwdXNoVmFsdWUoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4pOworICAgIHZvaWQgcHVzaE9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4pOworICAgIHZvaWQgcHVzaEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KTsK
ICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgpOyB9CiAK
ICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBnZXQoc2l6ZV90IGluZGV4KTsKQEAgLTIx
NywyMCArMjI2LDMyIEBAIHByaXZhdGU6CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6
c2V0Qm9vbChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgdmFsdWUpCiB7Ci0gICAgc2V0KG5hbWUs
IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOworICAgIHNldFZhbHVlKG5hbWUs
IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JPYmplY3Q6OnNldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSB2YWx1
ZSkKIHsKLSAgICBzZXQobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7
CisgICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7
CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXQobmFtZSwgSW5zcGVjdG9y
U3RyaW5nOjpjcmVhdGUodmFsdWUpKTsKKyAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JTdHJp
bmc6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNl
dChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQoreworICAgIGlmIChtX2RhdGEuc2V0
KG5hbWUsIHZhbHVlKS5zZWNvbmQpCisgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOworfQor
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldE9iamVjdChjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKK3sKKyAgICBpZiAobV9kYXRh
LnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsK
K30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheShjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAgIGlmIChtX2Rh
dGEuc2V0KG5hbWUsIHZhbHVlKS5zZWNvbmQpCiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUp
OwpAQCAtMjUxLDcgKzI3MiwxNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheTo6cHVzaFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yU3Ry
aW5nOjpjcmVhdGUodmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXk6OnB1
c2goUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JBcnJheTo6cHVzaFZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorewor
ICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJh
eTo6cHVzaE9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCit7CisgICAg
bV9kYXRhLmFwcGVuZCh2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3RvckFycmF5Ojpw
dXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiB7CiAgICAgbV9kYXRh
LmFwcGVuZCh2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRC
cmVha3BvaW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwCmlu
ZGV4IGNlMGQxOGEuLjI0NDAxZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEJyZWFrcG9pbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQu
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBTY3JpcHRC
cmVha3BvaW50OjppbnNwZWN0b3JPYmplY3RGcm9tU291cmNlQnJlYWtwb2luCiAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgICAgICBicmVha3BvaW50LT5zZXRCb29sKCJlbmFibGVkIiwgaXQtPnNlY29uZC5l
bmFibGVkKTsKICAgICAgICAgYnJlYWtwb2ludC0+c2V0U3RyaW5nKCJjb25kaXRpb24iLCBpdC0+
c2Vjb25kLmNvbmRpdGlvbik7Ci0gICAgICAgIGJyZWFrcG9pbnRzLT5zZXQoU3RyaW5nOjpudW1i
ZXIoaXQtPmZpcnN0KSwgYnJlYWtwb2ludCk7CisgICAgICAgIGJyZWFrcG9pbnRzLT5zZXRPYmpl
Y3QoU3RyaW5nOjpudW1iZXIoaXQtPmZpcnN0KSwgYnJlYWtwb2ludCk7CiAgICAgfQogICAgIHJl
dHVybiBicmVha3BvaW50cy5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCBhZDlmZGVjLi5lMWMyYmJiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2Vu
ZXJpY1JlY29yZChkb3VibGUgc3QKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gc3RhY2tU
cmFjZSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKICAgICBpZiAoU2NyaXB0Q2FsbFN0YWNr
OjpzdGFja1RyYWNlKDUsIHN0YWNrVHJhY2UpKQotICAgICAgICByZWNvcmQtPnNldCgic3RhY2tU
cmFjZSIsIHN0YWNrVHJhY2UpOworICAgICAgICByZWNvcmQtPnNldEFycmF5KCJzdGFja1RyYWNl
Iiwgc3RhY2tUcmFjZSk7CiAgICAgcmV0dXJuIHJlY29yZC5yZWxlYXNlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64331</attachid>
            <date>2010-08-13 06:06:25 -0700</date>
            <delta_ts>2010-08-13 06:16:44 -0700</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>gen</filename>
            <type>text/plain</type>
            <size>47135</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTA0NzE2Mi4uM2RhZGMwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAxMC0wOC0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgSW5zcGVjdG9yVmFsdWU6
OnB1c2ggYW5kIHNldCB0bworICAgICAgICBwdXNoe1ZhbHVlfE9iamVjdHxBcnJheX0gYW5kIHNl
dHsuLi59LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM5NjYKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3IpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVG9JbnNwZWN0b3JWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEluc3BlY3Rv
ck9iamVjdEZvcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6djhUb0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0
aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0RE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTdHlsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFsbFN0eWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0UnVsZVJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDU1NSdWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBz
ZXVkb0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
b3B1bGF0ZU9iamVjdFdpdGhTdHlsZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JEaXNhYmxlZFN0eWxlUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZVNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
clJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNhdmVCcmVha3BvaW50
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0b3JhZ2VBZ2VudDo6ZXhlY3V0ZVNR
TCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEdDRXZlbnRSZWNvcmRz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEluc3RhbGxU
aW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZW1v
dmVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRT
Y2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsU2VuZFJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTWFya1RpbWVsaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxl
dGVDdXJyZW50UmVjb3JkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JWYWx1
ZTo6YXNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JWYWx1ZTo6YXNPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVmFsdWU6OmFzQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0Ojphc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcnJheTo6YXNBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRCb29sKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdDo6c2V0TnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck9iamVjdDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2Jq
ZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRB
cnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheTo6cHVzaFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5OjpwdXNoT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFycmF5OjpwdXNoQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRCcmVha3BvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJyZWFrcG9pbnQ6
Omluc3BlY3Rvck9iamVjdEZyb21Tb3VyY2VCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQpOgorCiAyMDEwLTA4LTEzICBHYXZp
biBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCAx
ZmJkMDQwLi4wZWIyODE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKQEAg
LTg0LDggKzg0LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZElu
c3BlY3Rvck9iamVjdEZvcihjb25zdCBKU0M6OlByb2ZpbGVOb2QKICAgICBjb25zdCBQcm9maWxl
Tm9kZXNMaXN0JiBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuKCk7CiAgICAgUHJvZmlsZU5vZGVz
TGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChQcm9m
aWxlTm9kZXNMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gY2hpbGRyZW4uYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgY2hpbGRyZW5BcnJheS0+cHVzaChidWlsZEluc3Bl
Y3Rvck9iamVjdEZvcihpdGVyLT5nZXQoKSkpOwotICAgIHJlc3VsdC0+c2V0KCJjaGlsZHJlbiIs
IGNoaWxkcmVuQXJyYXkpOworICAgICAgICBjaGlsZHJlbkFycmF5LT5wdXNoT2JqZWN0KGJ1aWxk
SW5zcGVjdG9yT2JqZWN0Rm9yKGl0ZXItPmdldCgpKSk7CisgICAgcmVzdWx0LT5zZXRBcnJheSgi
Y2hpbGRyZW4iLCBjaGlsZHJlbkFycmF5KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IGI0ZGRhMTIuLmE1OGUwYzcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUsIEoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnRWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluc3BlY3RvckFycmF5LT5wdXNo
KGVsZW1lbnRWYWx1ZSk7CisgICAgICAgICAgICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2hWYWx1
ZShlbGVtZW50VmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGluc3Bl
Y3RvckFycmF5OwogICAgICAgICB9CkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIEoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbnNwZWN0b3JPYmplY3QtPnNldChTdHJpbmcobmFtZS5jaGFy
YWN0ZXJzKCksIG5hbWUubGVuZ3RoKCkpLCBpbnNwZWN0b3JWYWx1ZSk7CisgICAgICAgICAgICBp
bnNwZWN0b3JPYmplY3QtPnNldFZhbHVlKFN0cmluZyhuYW1lLmNoYXJhY3RlcnMoKSwgbmFtZS5s
ZW5ndGgoKSksIGluc3BlY3RvclZhbHVlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gaW5z
cGVjdG9yT2JqZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNw
cAppbmRleCA5OGRkYjkwLi43YzA3ODI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxs
U3RhY2suY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNr
VHJhY2UoaW50IGZyYW1lTGltaXQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHMKICAg
ICAgICAgZnJhbWVPYmplY3QtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgZnVuY3Rpb25OYW1l
LklzRW1wdHkoKSA/ICIiIDogdG9XZWJDb3JlU3RyaW5nKGZ1bmN0aW9uTmFtZSkpOwogICAgICAg
ICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgZnJhbWUtPkdldExpbmVOdW1i
ZXIoKSk7CiAgICAgICAgIGZyYW1lT2JqZWN0LT5zZXROdW1iZXIoImNvbHVtbiIsIGZyYW1lLT5H
ZXRDb2x1bW4oKSk7Ci0gICAgICAgIHN0YWNrVHJhY2UtPnB1c2goZnJhbWVPYmplY3QpOworICAg
ICAgICBzdGFja1RyYWNlLT5wdXNoT2JqZWN0KGZyYW1lT2JqZWN0KTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5jcHAKaW5kZXgg
MzJlMDA2Ni4uOTVhYzBkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuY3BwCkBA
IC03Miw5ICs3Miw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJ
bnNwZWN0b3JPYmplY3RGb3IoY29uc3Qgdjg6OkNwdVByb2ZpbGVOCiAgICAgY29uc3QgaW50IGNo
aWxkcmVuQ291bnQgPSBub2RlLT5HZXRDaGlsZHJlbkNvdW50KCk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjaGlsZHJlbkNvdW50OyBpKyspIHsKICAgICAgICAgY29uc3Qgdjg6OkNwdVByb2Zp
bGVOb2RlKiBjaGlsZCA9IG5vZGUtPkdldENoaWxkKGkpOwotICAgICAgICBjaGlsZHJlbi0+cHVz
aChidWlsZEluc3BlY3Rvck9iamVjdEZvcihjaGlsZCkpOworICAgICAgICBjaGlsZHJlbi0+cHVz
aE9iamVjdChidWlsZEluc3BlY3Rvck9iamVjdEZvcihjaGlsZCkpOwogICAgIH0KLSAgICByZXN1
bHQtPnNldCgiY2hpbGRyZW4iLCBjaGlsZHJlbik7CisgICAgcmVzdWx0LT5zZXRBcnJheSgiY2hp
bGRyZW4iLCBjaGlsZHJlbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRWYWx1ZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFZhbHVlLmNwcAppbmRleCA2ZDNmZTIwLi5jNDVjODUxIDEwMDc1NQotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFZhbHVlLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gdjhUb0luc3BlY3RvclZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2goZWxlbWVudCk7CisgICAgICAgICAgICBpbnNwZWN0
b3JBcnJheS0+cHVzaFZhbHVlKGVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBp
bnNwZWN0b3JBcnJheTsKICAgICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHY4VG9JbnNwZWN0b3JWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluc3BlY3Rvck9i
amVjdC0+c2V0KHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobmFtZSksIHByb3BlcnR5VmFs
dWUpOworICAgICAgICAgICAgaW5zcGVjdG9yT2JqZWN0LT5zZXRWYWx1ZSh0b1dlYkNvcmVTdHJp
bmdXaXRoTnVsbENoZWNrKG5hbWUpLCBwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gaW5zcGVjdG9yT2JqZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9XZWJDb3JlL2luc3BlY3Rvci9Db2Rl
R2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDQ3N2JkY2UuLjEwZTA4ODIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpAQCAtNDcsMzAgKzQ3LDI3IEBA
ICR0eXBlVHJhbnNmb3JteyJQYXNzUmVmUHRyIn0gPSB7CiB9OwogJHR5cGVUcmFuc2Zvcm17Ik9i
amVjdCJ9ID0gewogICAgICJwYXJhbSIgPT4gIlBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiIs
Ci0gICAgInJldFZhbCIgPT4gIlBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiIsCiAgICAgInZh
cmlhYmxlIiA9PiAiUmVmUHRyPEluc3BlY3Rvck9iamVjdD4iLAogICAgICJkZWZhdWx0VmFsdWUi
ID0+ICJJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpIiwKICAgICAiZm9yd2FyZCIgPT4gIkluc3Bl
Y3Rvck9iamVjdCIsCiAgICAgImhlYWRlciIgPT4gIkluc3BlY3RvclZhbHVlcy5oIiwKLSAgICAi
YWNjZXNzb3JTdWZmaXgiID0+ICIiCisgICAgImFjY2Vzc29yU3VmZml4IiA9PiAiT2JqZWN0Igog
fTsKICR0eXBlVHJhbnNmb3JteyJBcnJheSJ9ID0gewogICAgICJwYXJhbSIgPT4gIlBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IiwKLSAgICAicmV0VmFsIiA9PiAiUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4iLAogICAgICJ2YXJpYWJsZSIgPT4gIlJlZlB0cjxJbnNwZWN0b3JBcnJheT4iLAog
ICAgICJkZWZhdWx0VmFsdWUiID0+ICJJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkiLAogICAgICJm
b3J3YXJkIiA9PiAiSW5zcGVjdG9yQXJyYXkiLAogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JW
YWx1ZXMuaCIsCi0gICAgImFjY2Vzc29yU3VmZml4IiA9PiAiIgorICAgICJhY2Nlc3NvclN1ZmZp
eCIgPT4gIkFycmF5IgogfTsKICR0eXBlVHJhbnNmb3JteyJWYWx1ZSJ9ID0gewogICAgICJwYXJh
bSIgPT4gIlBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IiwKLSAgICAicmV0VmFsIiA9PiAiUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4iLAogICAgICJ2YXJpYWJsZSIgPT4gIlJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4iLAogICAgICJkZWZhdWx0VmFsdWUiID0+ICJJbnNwZWN0b3JWYWx1ZTo6bnVs
bCgpIiwKICAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvclZhbHVlIiwKICAgICAiaGVhZGVyIiA9
PiAiSW5zcGVjdG9yVmFsdWVzLmgiLAotICAgICJhY2Nlc3NvclN1ZmZpeCIgPT4gIiIKKyAgICAi
YWNjZXNzb3JTdWZmaXgiID0+ICJWYWx1ZSIKIH07CiAkdHlwZVRyYW5zZm9ybXsiU3RyaW5nIn0g
PSB7CiAgICAgInBhcmFtIiA9PiAiY29uc3QgU3RyaW5nJiIsCkBAIC0xMjAsNyArMTE3LDYgQEAg
JHR5cGVUcmFuc2Zvcm17ImJvb2xlYW4ifSA9IHsKICAgICAiYWNjZXNzb3JTdWZmaXgiID0+ICJC
b29sIgogfTsKICR0eXBlVHJhbnNmb3JteyJ2b2lkIn0gPSB7Ci0gICAgInJldFZhbCIgPT4gInZv
aWQiLAogICAgICJmb3J3YXJkIiA9PiAiIiwKICAgICAiaGVhZGVyIiA9PiAiIgogfTsKQEAgLTMy
NCw3ICszMjAsNyBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5kRnVuY3Rpb24KICAgICBteSAkaSA9IDE7
ICMgemVybyBlbGVtZW50IGlzIHRoZSBtZXRob2QgbmFtZS4KICAgICBmb3JlYWNoIG15ICRwYXJh
bWV0ZXIgKEBpbkFyZ3MpIHsKICAgICAgICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwot
ICAgICAgICBteSAkYXJndW1lbnRUeXBlID0gJHR5cGVUcmFuc2Zvcm17JHR5cGV9LT57JHR5cGVU
cmFuc2Zvcm17JHR5cGV9LT57InJldFZhbCJ9ID8gInJldFZhbCIgOiAidmFyaWFibGUifTsKKyAg
ICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9ICR0eXBlVHJhbnNmb3JteyR0eXBlfS0+eyJ2YXJpYWJs
ZSJ9OwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAkYXJndW1lbnRUeXBlICIgLiAkcGFy
YW1ldGVyLT5uYW1lIC4gIjsiKSBpZiAhKCRwYXJhbWV0ZXItPm5hbWUgZXEgImNhbGxJZCIpOwog
ICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBpZiAoIWFyZ3MtPmdldCgkaSktPmFzIiAuICR0
eXBlVHJhbnNmb3JteyR0eXBlfS0+eyJhY2Nlc3NvclN1ZmZpeCJ9IC4gIigmIiAuICRwYXJhbWV0
ZXItPm5hbWUgLiAiKSkgeyIpOwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Iik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5k
ZXggMDU5ZGVhNC4uZWExNjhmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApA
QCAtMTM0LDE1ICsxMzQsMTUgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChS
ZW1vdGVJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2MKICAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBqc29uQXJncy0+cHVzaChpbnNwZWN0b3JWYWx1ZSk7Cisg
ICAgICAgICAgICBqc29uQXJncy0+cHVzaFZhbHVlKGluc3BlY3RvclZhbHVlKTsKICAgICAgICAg
fQotICAgICAgICBqc29uT2JqLT5zZXQoInBhcmFtZXRlcnMiLCBqc29uQXJncyk7CisgICAgICAg
IGpzb25PYmotPnNldEFycmF5KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOwogICAgIH0KICAgICBp
ZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGZyYW1lcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgaSsrKQotICAgICAgICAgICAgZnJhbWVzLT5w
dXNoKG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOwotICAgICAgICBqc29u
T2JqLT5zZXQoInN0YWNrVHJhY2UiLCBmcmFtZXMpOworICAgICAgICAgICAgZnJhbWVzLT5wdXNo
T2JqZWN0KG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOworICAgICAgICBq
c29uT2JqLT5zZXRBcnJheSgic3RhY2tUcmFjZSIsIGZyYW1lcyk7CiAgICAgfQogICAgIGZyb250
ZW5kLT5hZGRDb25zb2xlTWVzc2FnZShqc29uT2JqKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CmluZGV4IDlkM2QxMDIuLjNjNjU5NDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMjE2
LDYgKzIxNiw1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0g
dm9pZCBzZXRET01TdG9yYWdlSXRlbShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQs
IGluIFN0cmluZyBrZXksIGluIFN0cmluZyB2YWx1ZSwgb3V0IGJvb2xlYW4gc3VjY2Vzcyk7CiAg
ICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4g
bG9uZyBjYWxsSWQsIGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBvdXQgYm9vbGVh
biBzdWNjZXNzKTsKICNlbmRpZgotCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGI5NWMwZTEuLjEy
MDYxODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcApAQCAtODIsNyArODIsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxp
YwogICAgIHZhbHVlLT5zZXRTdHJpbmcoImxhc3RQYXRoQ29tcG9uZW50IiwgYXBwbGljYXRpb25D
YWNoZUluZm8ubV9tYW5pZmVzdC5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICB2YWx1ZS0+c2V0
TnVtYmVyKCJjcmVhdGlvblRpbWUiLCBhcHBsaWNhdGlvbkNhY2hlSW5mby5tX2NyZWF0aW9uVGlt
ZSk7CiAgICAgdmFsdWUtPnNldE51bWJlcigidXBkYXRlVGltZSIsIGFwcGxpY2F0aW9uQ2FjaGVJ
bmZvLm1fdXBkYXRlVGltZSk7Ci0gICAgdmFsdWUtPnNldCgicmVzb3VyY2VzIiwgYnVpbGRBcnJh
eUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoYXBwbGljYXRpb25DYWNoZVJlc291cmNlcykp
OworICAgIHZhbHVlLT5zZXRBcnJheSgicmVzb3VyY2VzIiwgYnVpbGRBcnJheUZvckFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZXMoYXBwbGljYXRpb25DYWNoZVJlc291cmNlcykpOwogICAgIHJldHVy
biB2YWx1ZTsKIH0KIApAQCAtOTMsNyArOTMsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdAog
ICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Ojpjb25zdF9pdGVyYXRv
ciBlbmQgPSBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzLmVuZCgpOwogICAgIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZXMuYmVnaW4oKTsKICAgICBmb3IgKGludCBpID0gMDsgaXQgIT0gZW5k
OyArK2l0LCBpKyspCi0gICAgICAgIHJlc291cmNlcy0+cHVzaChidWlsZE9iamVjdEZvckFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSgqaXQpKTsKKyAgICAgICAgcmVzb3VyY2VzLT5wdXNoT2JqZWN0
KGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKCppdCkpOwogCiAgICAgcmV0
dXJuIHJlc291cmNlczsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggOTkzZmVkNC4uOGE2YTRhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTEzMzIsNyArMTMzMiw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNo
U2V0CiAgICAgTGlzdEhhc2hTZXQ8Q29va2llPjo6aXRlcmF0b3IgZW5kID0gY29va2llc0xpc3Qu
ZW5kKCk7CiAgICAgTGlzdEhhc2hTZXQ8Q29va2llPjo6aXRlcmF0b3IgaXQgPSBjb29raWVzTGlz
dC5iZWdpbigpOwogICAgIGZvciAoaW50IGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQsIGkrKykKLSAg
ICAgICAgY29va2llcy0+cHVzaChidWlsZE9iamVjdEZvckNvb2tpZSgqaXQpKTsKKyAgICAgICAg
Y29va2llcy0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckNvb2tpZSgqaXQpKTsKIAogICAgIHJl
dHVybiBjb29raWVzOwogfQpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRET01TdG9yYWdlRW50cmllcyhsb25nIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3Bl
Y3RvckEKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZW50cnkgPSBJbnNwZWN0
b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBlbnRyeS0+cHVzaFN0cmluZyhuYW1lKTsK
ICAgICAgICAgICAgIGVudHJ5LT5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgICAgICgqZW50
cmllcyktPnB1c2goZW50cnkpOworICAgICAgICAgICAgKCplbnRyaWVzKS0+cHVzaEFycmF5KGVu
dHJ5KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1MDMsNyArMTUwMyw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMoUmVmUHRyPEluc3BlY3RvckFycmF5
PiogaGVhZGVycykKIHsKICAgICBQcm9maWxlc01hcDo6aXRlcmF0b3IgcHJvZmlsZXNFbmQgPSBt
X3Byb2ZpbGVzLmVuZCgpOwogICAgIGZvciAoUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9w
cm9maWxlcy5iZWdpbigpOyBpdCAhPSBwcm9maWxlc0VuZDsgKytpdCkKLSAgICAgICAgKCpoZWFk
ZXJzKS0+cHVzaChjcmVhdGVQcm9maWxlSGVhZGVyKCppdC0+c2Vjb25kKSk7CisgICAgICAgICgq
aGVhZGVycyktPnB1c2hPYmplY3QoY3JlYXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUodW5zaWduZWQgdWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcHJvZmlsZU9iamVjdCkKQEAgLTE1MTEsNyArMTUxMSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZSh1bnNpZ25lZCB1aWQsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBwcm9mCiAgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgaWYgKGl0ICE9IG1fcHJvZmlsZXMuZW5kKCkp
IHsKICAgICAgICAgKnByb2ZpbGVPYmplY3QgPSBjcmVhdGVQcm9maWxlSGVhZGVyKCppdC0+c2Vj
b25kKTsKLSAgICAgICAgKCpwcm9maWxlT2JqZWN0KS0+c2V0KCJoZWFkIiwgaXQtPnNlY29uZC0+
YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkpOworICAgICAgICAoKnByb2ZpbGVPYmplY3Qp
LT5zZXRPYmplY3QoImhlYWQiLCBpdC0+c2Vjb25kLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhl
YWQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggMTdiYzU5Yi4uMDc0YWFiOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2
ZW50TGlzdGVuZXJzRm9yTm9kZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSCiAgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdmVjdG9yLnNpemUoKTsgKytqKSB7CiAgICAgICAg
ICAgICBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSB2ZWN0b3Jbal07
CiAgICAgICAgICAgICBpZiAobGlzdGVuZXIudXNlQ2FwdHVyZSkKLSAgICAgICAgICAgICAgICAo
Kmxpc3RlbmVyc0FycmF5KS0+cHVzaChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVu
ZXIsIGluZm8uZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKKyAgICAgICAgICAgICAgICAoKmxpc3Rl
bmVyc0FycmF5KS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVu
ZXIsIGluZm8uZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
NjExLDcgKzYxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJz
Rm9yTm9kZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSCiAgICAgICAgIGZvciAoc2l6
ZV90IGogPSAwOyBqIDwgdmVjdG9yLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBjb25zdCBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSB2ZWN0b3Jbal07CiAgICAgICAgICAg
ICBpZiAoIWxpc3RlbmVyLnVzZUNhcHR1cmUpCi0gICAgICAgICAgICAgICAgKCpsaXN0ZW5lcnNB
cnJheSktPnB1c2goYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2
ZW50VHlwZSwgaW5mby5ub2RlKSk7CisgICAgICAgICAgICAgICAgKCpsaXN0ZW5lcnNBcnJheSkt
PnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2
ZW50VHlwZSwgaW5mby5ub2RlKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03NjYsMTEgKzc2
NiwxMSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbgogICAgICAgICB2YWx1ZS0+c2V0TnVtYmVy
KCJjaGlsZE5vZGVDb3VudCIsIG5vZGVDb3VudCk7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVw
dGgsIG5vZGVzTWFwKTsKICAgICAgICAgaWYgKGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCi0gICAg
ICAgICAgICB2YWx1ZS0+c2V0KCJjaGlsZHJlbiIsIGNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAg
ICAgICAgICB2YWx1ZS0+c2V0QXJyYXkoImNoaWxkcmVuIiwgY2hpbGRyZW4ucmVsZWFzZSgpKTsK
IAogICAgICAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUpIHsK
ICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSk7Ci0gICAgICAgICAgICB2YWx1ZS0+c2V0KCJhdHRyaWJ1dGVzIiwgYnVpbGRBcnJheUZvckVs
ZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRBcnJheSgi
YXR0cmlidXRlcyIsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7CiAg
ICAgICAgICAgICBpZiAobm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBmcmFtZU93bmVyID0gc3RhdGljX2Nhc3Q8SFRN
TEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUtPnNldFN0
cmluZygiZG9jdW1lbnRVUkwiLCBkb2N1bWVudFVSTFN0cmluZyhmcmFtZU93bmVyLT5jb250ZW50
RG9jdW1lbnQoKSkpOwpAQCAtODEzLDcgKzgxMyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9k
CiAgICAgICAgIGlmIChpbm5lckNoaWxkTm9kZUNvdW50KGNvbnRhaW5lcikgPT0gMSkgewogICAg
ICAgICAgICAgTm9kZSAqY2hpbGQgPSBpbm5lckZpcnN0Q2hpbGQoY29udGFpbmVyKTsKICAgICAg
ICAgICAgIGlmIChjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpCi0gICAgICAg
ICAgICAgICAgY2hpbGRyZW4tPnB1c2goYnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCAwLCBub2Rl
c01hcCkpOworICAgICAgICAgICAgICAgIGNoaWxkcmVuLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0
Rm9yTm9kZShjaGlsZCwgMCwgbm9kZXNNYXApKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
Y2hpbGRyZW4ucmVsZWFzZSgpOwogICAgIH0gZWxzZSBpZiAoZGVwdGggPiAwKSB7CkBAIC04MjEs
NyArODIxLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2QKICAgICB9CiAKICAgICBmb3IgKE5v
ZGUgKmNoaWxkID0gaW5uZXJGaXJzdENoaWxkKGNvbnRhaW5lcik7IGNoaWxkOyBjaGlsZCA9IGlu
bmVyTmV4dFNpYmxpbmcoY2hpbGQpKQotICAgICAgICBjaGlsZHJlbi0+cHVzaChidWlsZE9iamVj
dEZvck5vZGUoY2hpbGQsIGRlcHRoLCBub2Rlc01hcCkpOworICAgICAgICBjaGlsZHJlbi0+cHVz
aE9iamVjdChidWlsZE9iamVjdEZvck5vZGUoY2hpbGQsIGRlcHRoLCBub2Rlc01hcCkpOwogICAg
IHJldHVybiBjaGlsZHJlbi5yZWxlYXNlKCk7CiB9CiAKQEAgLTk4NiwyNyArOTg2LDI3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIG5vZGVJZCwgYm9vbCBhdXRob3JP
bmx5LCBSZWZQdHI8SW5zcGVjdG9yCiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGlmIChlbGVtZW50LT5zdHlsZSgp
KQotICAgICAgICByZXN1bHQtPnNldCgiaW5saW5lU3R5bGUiLCBidWlsZE9iamVjdEZvclN0eWxl
KGVsZW1lbnQtPnN0eWxlKCksIHRydWUpKTsKLSAgICByZXN1bHQtPnNldCgiY29tcHV0ZWRTdHls
ZSIsIGJ1aWxkT2JqZWN0Rm9yU3R5bGUoY29tcHV0ZWRTdHlsZUluZm8uZ2V0KCksIGZhbHNlKSk7
CisgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJpbmxpbmVTdHlsZSIsIGJ1aWxkT2JqZWN0Rm9y
U3R5bGUoZWxlbWVudC0+c3R5bGUoKSwgdHJ1ZSkpOworICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJj
b21wdXRlZFN0eWxlIiwgYnVpbGRPYmplY3RGb3JTdHlsZShjb21wdXRlZFN0eWxlSW5mby5nZXQo
KSwgZmFsc2UpKTsKIAogICAgIENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yID0gZWxlbWVudC0+
b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CiAgICAgUmVmUHRyPENTU1J1bGVMaXN0
PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwg
YXV0aG9yT25seSk7Ci0gICAgcmVzdWx0LT5zZXQoIm1hdGNoZWRDU1NSdWxlcyIsIGJ1aWxkQXJy
YXlGb3JDU1NSdWxlcyhub2RlLT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRSdWxlcy5nZXQoKSkp
OworICAgIHJlc3VsdC0+c2V0QXJyYXkoIm1hdGNoZWRDU1NSdWxlcyIsIGJ1aWxkQXJyYXlGb3JD
U1NSdWxlcyhub2RlLT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRSdWxlcy5nZXQoKSkpOwogCi0g
ICAgcmVzdWx0LT5zZXQoInN0eWxlQXR0cmlidXRlcyIsIGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
U3R5bGVzKGVsZW1lbnQpKTsKLSAgICByZXN1bHQtPnNldCgicHNldWRvRWxlbWVudHMiLCBidWls
ZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVudCwgYXV0aG9yT25seSkpOworICAgIHJlc3Vs
dC0+c2V0T2JqZWN0KCJzdHlsZUF0dHJpYnV0ZXMiLCBidWlsZE9iamVjdEZvckF0dHJpYnV0ZVN0
eWxlcyhlbGVtZW50KSk7CisgICAgcmVzdWx0LT5zZXRBcnJheSgicHNldWRvRWxlbWVudHMiLCBi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVudCwgYXV0aG9yT25seSkpOwogCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3VycmVudFN0eWxlID0gcmVzdWx0OwogICAgIEVsZW1l
bnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgd2hpbGUg
KHBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyZW50
U3R5bGUgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBjdXJyZW50U3R5bGUt
PnNldCgicGFyZW50IiwgcGFyZW50U3R5bGUpOworICAgICAgICBjdXJyZW50U3R5bGUtPnNldE9i
amVjdCgicGFyZW50IiwgcGFyZW50U3R5bGUpOwogICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+
c3R5bGUoKSAmJiBwYXJlbnRFbGVtZW50LT5zdHlsZSgpLT5sZW5ndGgoKSkKLSAgICAgICAgICAg
IHBhcmVudFN0eWxlLT5zZXQoImlubGluZVN0eWxlIiwgYnVpbGRPYmplY3RGb3JTdHlsZShwYXJl
bnRFbGVtZW50LT5zdHlsZSgpLCB0cnVlKSk7CisgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0
T2JqZWN0KCJpbmxpbmVTdHlsZSIsIGJ1aWxkT2JqZWN0Rm9yU3R5bGUocGFyZW50RWxlbWVudC0+
c3R5bGUoKSwgdHJ1ZSkpOwogCiAgICAgICAgIENTU1N0eWxlU2VsZWN0b3IqIHBhcmVudFNlbGVj
dG9yID0gcGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CiAg
ICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U2Vs
ZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIGF1dGhvck9ubHkpOwot
ICAgICAgICBwYXJlbnRTdHlsZS0+c2V0KCJtYXRjaGVkQ1NTUnVsZXMiLCBidWlsZEFycmF5Rm9y
Q1NTUnVsZXMocGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLCBwYXJlbnRNYXRjaGVkUnVs
ZXMuZ2V0KCkpKTsKKyAgICAgICAgcGFyZW50U3R5bGUtPnNldEFycmF5KCJtYXRjaGVkQ1NTUnVs
ZXMiLCBidWlsZEFycmF5Rm9yQ1NTUnVsZXMocGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgp
LCBwYXJlbnRNYXRjaGVkUnVsZXMuZ2V0KCkpKTsKIAogICAgICAgICBwYXJlbnRFbGVtZW50ID0g
cGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICBjdXJyZW50U3R5bGUgPSBw
YXJlbnRTdHlsZTsKQEAgLTEwMjEsNyArMTAyMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEFsbFN0eWxlcyhSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBzdHlsZXMpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgICAg
ICBTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gbGlzdC0+aXRlbShpKTsKICAgICAgICAgICAgIGlm
IChzdHlsZVNoZWV0LT5pc0NTU1N0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgICAgICAoKnN0eWxl
cyktPnB1c2goYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCgqaXQpLmdldCgpLCBzdGF0aWNfY2Fz
dDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCkpKTsKKyAgICAgICAgICAgICAgICAoKnN0eWxl
cyktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCgqaXQpLmdldCgpLCBzdGF0
aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCkpKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTEwNDQsOSArMTA0NCw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFJ1bGVS
YW5nZXMobG9uZyBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qCiAgICAgICAg
IGZvciAoSGFzaE1hcDxsb25nLCBTb3VyY2VSYW5nZT46Oml0ZXJhdG9yIGl0ID0gcnVsZVJhbmdl
cy5iZWdpbigpOyBpdCAhPSBydWxlUmFuZ2VzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICBp
ZiAoaXQtPnNlY29uZC5zZWNvbmQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBydWxlUmFuZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgICAgIHJlc3VsdC0+c2V0KFN0cmluZzo6bnVtYmVyKGl0LT5maXJzdCkudXRmOCgpLmRhdGEo
KSwgcnVsZVJhbmdlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChTdHJpbmc6
Om51bWJlcihpdC0+Zmlyc3QpLnV0ZjgoKS5kYXRhKCksIHJ1bGVSYW5nZSk7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYm9keVJhbmdlID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKLSAgICAgICAgICAgICAgICBydWxlUmFuZ2UtPnNldCgiYm9keVJhbmdlIiwg
Ym9keVJhbmdlKTsKKyAgICAgICAgICAgICAgICBydWxlUmFuZ2UtPnNldE9iamVjdCgiYm9keVJh
bmdlIiwgYm9keVJhbmdlKTsKICAgICAgICAgICAgICAgICBib2R5UmFuZ2UtPnNldE51bWJlcigi
c3RhcnQiLCBpdC0+c2Vjb25kLmZpcnN0KTsKICAgICAgICAgICAgICAgICBib2R5UmFuZ2UtPnNl
dE51bWJlcigiZW5kIiwgaXQtPnNlY29uZC5zZWNvbmQpOwogICAgICAgICAgICAgfQpAQCAtMTA4
NSw3ICsxMDg1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZVN0eWxlcyhFbGUKICAgICAgICAgQXR0cmlidXRl
KiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBpZiAo
YXR0cmlidXRlLT5zdHlsZSgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgYXR0cmlidXRlTmFtZSA9
IGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCk7Ci0gICAgICAgICAgICBzdHlsZUF0dHJpYnV0ZXMtPnNl
dChhdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCksIGJ1aWxkT2JqZWN0Rm9yU3R5bGUoYXR0cmli
dXRlLT5zdHlsZSgpLCB0cnVlKSk7CisgICAgICAgICAgICBzdHlsZUF0dHJpYnV0ZXMtPnNldE9i
amVjdChhdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCksIGJ1aWxkT2JqZWN0Rm9yU3R5bGUoYXR0
cmlidXRlLT5zdHlsZSgpLCB0cnVlKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHN0
eWxlQXR0cmlidXRlczsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ1NTUnVsZXMoRG9jdW1lbnQq
IG93CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbWF0Y2hlZFJ1bGVzICYmIGkgPCBtYXRjaGVk
UnVsZXMtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgQ1NTUnVsZSogcnVsZSA9IG1hdGNoZWRS
dWxlcy0+aXRlbShpKTsKICAgICAgICAgaWYgKHJ1bGUtPnR5cGUoKSA9PSBDU1NSdWxlOjpTVFlM
RV9SVUxFKQotICAgICAgICAgICAgbWF0Y2hlZENTU1J1bGVzLT5wdXNoKGJ1aWxkT2JqZWN0Rm9y
UnVsZShvd25lckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSkpOwor
ICAgICAgICAgICAgbWF0Y2hlZENTU1J1bGVzLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yUnVs
ZShvd25lckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSkpOwogICAg
IH0KICAgICByZXR1cm4gbWF0Y2hlZENTU1J1bGVzLnJlbGVhc2UoKTsKIH0KQEAgLTExMTMsOCAr
MTExMyw4IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoRWxlbWVuCiAgICAgICAgIGlmIChtYXRjaGVkUnVs
ZXMgJiYgbWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcHNldWRvU3R5bGVzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIHBzZXVkb1N0eWxlcy0+c2V0TnVtYmVyKCJwc2V1ZG9JZCIsIHN0YXRpY19jYXN0
PGludD4ocHNldWRvSWQpKTsKLSAgICAgICAgICAgIHBzZXVkb1N0eWxlcy0+c2V0KCJydWxlcyIs
IGJ1aWxkQXJyYXlGb3JDU1NSdWxlcyhlbGVtZW50LT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRS
dWxlcy5nZXQoKSkpOwotICAgICAgICAgICAgcmVzdWx0LT5wdXNoKHBzZXVkb1N0eWxlcy5yZWxl
YXNlKCkpOworICAgICAgICAgICAgcHNldWRvU3R5bGVzLT5zZXRBcnJheSgicnVsZXMiLCBidWls
ZEFycmF5Rm9yQ1NTUnVsZXMoZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLCBtYXRjaGVkUnVsZXMu
Z2V0KCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaE9iamVjdChwc2V1ZG9TdHlsZXMucmVs
ZWFzZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
QEAgLTEzMDksNyArMTMwOSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhCiAKICAgICAgICAg
RGlzYWJsZWRTdHlsZURlY2xhcmF0aW9uKiBkaXNhYmxlZFN0eWxlID0gY3NzU3RvcmUoKS0+ZGlz
YWJsZWRTdHlsZUZvcklkKHN0eWxlSWQsIGZhbHNlKTsKICAgICAgICAgaWYgKGRpc2FibGVkU3R5
bGUpCi0gICAgICAgICAgICByZXN1bHQtPnNldCgiZGlzYWJsZWQiLCBidWlsZEFycmF5Rm9yRGlz
YWJsZWRTdHlsZVByb3BlcnRpZXMoZGlzYWJsZWRTdHlsZSkpOworICAgICAgICAgICAgcmVzdWx0
LT5zZXRBcnJheSgiZGlzYWJsZWQiLCBidWlsZEFycmF5Rm9yRGlzYWJsZWRTdHlsZVByb3BlcnRp
ZXMoZGlzYWJsZWRTdHlsZSkpOwogICAgIH0KICAgICByZXN1bHQtPnNldFN0cmluZygid2lkdGgi
LCBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKSk7CiAgICAgcmVzdWx0LT5zZXRTdHJp
bmcoImhlaWdodCIsIHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJoZWlnaHQiKSk7CkBAIC0xMzM2
LDEwICsxMzM2LDEwIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBvcHVsYXRlT2JqZWN0V2l0
aFN0eWxlUHJvcGVydGllcyhDU1NTdHlsZURlY2xhcmF0aW9uKiBzCiAgICAgICAgICAgICBzaG9y
dGhhbmRWYWx1ZXMtPnNldFN0cmluZyhzaG9ydGhhbmQsIHNob3J0aGFuZFZhbHVlKHN0eWxlLCBz
aG9ydGhhbmQpKTsKICAgICAgICAgfQogICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJ2YWx1
ZSIsIHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpKTsKLSAgICAgICAgcHJvcGVydGllcy0+
cHVzaChwcm9wZXJ0eS5yZWxlYXNlKCkpOworICAgICAgICBwcm9wZXJ0aWVzLT5wdXNoT2JqZWN0
KHByb3BlcnR5LnJlbGVhc2UoKSk7CiAgICAgfQotICAgIHJlc3VsdC0+c2V0KCJwcm9wZXJ0aWVz
IiwgcHJvcGVydGllcyk7Ci0gICAgcmVzdWx0LT5zZXQoInNob3J0aGFuZFZhbHVlcyIsIHNob3J0
aGFuZFZhbHVlcyk7CisgICAgcmVzdWx0LT5zZXRBcnJheSgicHJvcGVydGllcyIsIHByb3BlcnRp
ZXMpOworICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJzaG9ydGhhbmRWYWx1ZXMiLCBzaG9ydGhhbmRW
YWx1ZXMpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRBcnJheUZvckRpc2FibGVkU3R5bGVQcm9wZXJ0aWVzKERpc2FibGVkU3R5bGVEZWNs
YXJhdGlvbiogZGVjbGFyYXRpb24pCkBAIC0xMzUwLDcgKzEzNTAsNyBAQCBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckRpc2FibGVkU3R5
bGVQcm9wZXJ0aQogICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJuYW1lIiwgaXQtPmZpcnN0
KTsKICAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygidmFsdWUiLCBpdC0+c2Vjb25kLmZpcnN0
KTsKICAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygicHJpb3JpdHkiLCBpdC0+c2Vjb25kLnNl
Y29uZCk7Ci0gICAgICAgIHByb3BlcnRpZXMtPnB1c2gocHJvcGVydHkucmVsZWFzZSgpKTsKKyAg
ICAgICAgcHJvcGVydGllcy0+cHVzaE9iamVjdChwcm9wZXJ0eS5yZWxlYXNlKCkpOwogICAgIH0K
ICAgICByZXR1cm4gcHJvcGVydGllcy5yZWxlYXNlKCk7CiB9CkBAIC0xMzcwLDEwICsxMzcwLDEw
IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JTdHlsZVNoZWV0KERvY3VtZW50CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjc3NSdWxlTGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgQ1NTUnVsZSog
cnVsZSA9IGNzc1J1bGVMaXN0LT5pdGVtKGkpOwogICAgICAgICAgICAgaWYgKHJ1bGUtPmlzU3R5
bGVSdWxlKCkpCi0gICAgICAgICAgICAgICAgY3NzUnVsZXMtPnB1c2goYnVpbGRPYmplY3RGb3JS
dWxlKG93bmVyRG9jdW1lbnQsIHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpKSk7Cisg
ICAgICAgICAgICAgICAgY3NzUnVsZXMtPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JSdWxlKG93
bmVyRG9jdW1lbnQsIHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpKSk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgcmVzdWx0LT5zZXQoImNzc1J1bGVzIiwgY3NzUnVsZXMucmVsZWFzZSgp
KTsKKyAgICByZXN1bHQtPnNldEFycmF5KCJjc3NSdWxlcyIsIGNzc1J1bGVzLnJlbGVhc2UoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JSdWxlKERvY3VtZW50KiBvd25lCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHBhcmVudFN0eWxlU2hlZXRWYWx1ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS0+c2V0U3RyaW5nKCJocmVmIiwgcGFyZW50U3R5bGVT
aGVldC0+aHJlZigpKTsKICAgICAgICAgcGFyZW50U3R5bGVTaGVldFZhbHVlLT5zZXROdW1iZXIo
ImlkIiwgY3NzU3RvcmUoKS0+YmluZFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkpOwotICAg
ICAgICByZXN1bHQtPnNldCgicGFyZW50U3R5bGVTaGVldCIsIHBhcmVudFN0eWxlU2hlZXRWYWx1
ZS5yZWxlYXNlKCkpOworICAgICAgICByZXN1bHQtPnNldE9iamVjdCgicGFyZW50U3R5bGVTaGVl
dCIsIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS5yZWxlYXNlKCkpOwogICAgIH0KICAgICBib29sIGlz
VXNlckFnZW50ID0gcGFyZW50U3R5bGVTaGVldCAmJiAhcGFyZW50U3R5bGVTaGVldC0+b3duZXJO
b2RlKCkgJiYgcGFyZW50U3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKTsKICAgICBib29sIGlz
VXNlciA9IHBhcmVudFN0eWxlU2hlZXQgJiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCkg
JiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVu
dCI7CkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShEb2N1bWVudCogb3duZQogCiAgICAg
Ly8gQmluZCBlZGl0YWJsZSBzY3JpcHRzIG9ubHkuCiAgICAgYm9vbCBiaW5kID0gIWlzVXNlckFn
ZW50ICYmICFpc1VzZXI7Ci0gICAgcmVzdWx0LT5zZXQoInN0eWxlIiwgYnVpbGRPYmplY3RGb3JT
dHlsZShydWxlLT5zdHlsZSgpLCBiaW5kKSk7CisgICAgcmVzdWx0LT5zZXRPYmplY3QoInN0eWxl
IiwgYnVpbGRPYmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgpLCBiaW5kKSk7CiAKICAgICBpZiAo
YmluZCkKICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoImlkIiwgY3NzU3RvcmUoKS0+YmluZFJ1
bGUocnVsZSkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCBiNzBkZGJmLi5lMWMwZGMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2F2ZUJyZWFrcG9pbnRzKCkKICAgICAgICAgaWYgKGl0LT5zZWNvbmQuaXNF
bXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJyZWFrcG9pbnRzRm9yVVJMID0gU2NyaXB0QnJlYWtwb2ludDo6aW5zcGVjdG9yT2Jq
ZWN0RnJvbVNvdXJjZUJyZWFrcG9pbnRzKGl0LT5zZWNvbmQpOwotICAgICAgICBicmVha3BvaW50
cy0+c2V0KGl0LT5maXJzdCwgYnJlYWtwb2ludHNGb3JVUkwpOworICAgICAgICBicmVha3BvaW50
cy0+c2V0T2JqZWN0KGl0LT5maXJzdCwgYnJlYWtwb2ludHNGb3JVUkwpOwogICAgIH0KICAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPnNhdmVCcmVha3BvaW50cyhicmVha3BvaW50cyk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggOTI1OWQ3OS4uYTJiNTVi
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMTg5LDcgKzE4
OSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChSZW1vdGVJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmlu
ZygicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRT
dHJpbmcoImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50
KCkpOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXF1ZXN0SGVhZGVycyA9IGJ1
aWxkSGVhZGVyc09iamVjdChtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOwotICAgICAgICBqc29uT2Jq
ZWN0LT5zZXQoInJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOworICAgICAgICBqc29u
T2JqZWN0LT5zZXRPYmplY3QoInJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwogICAg
ICAgICBqc29uT2JqZWN0LT5zZXRCb29sKCJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNl
KTsKICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJyZXF1ZXN0TWV0aG9kIiwgbV9yZXF1
ZXN0TWV0aG9kKTsKICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJyZXF1ZXN0Rm9ybURh
dGEiLCBtX3JlcXVlc3RGb3JtRGF0YSk7CkBAIC0yMDMsMTIgKzIwMywxMiBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQogICAgICAgICBqc29uT2JqZWN0LT5zZXROdW1iZXIoInN0YXR1c0NvZGUiLCBt
X3Jlc3BvbnNlU3RhdHVzQ29kZSk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygic3Rh
dHVzVGV4dCIsIG1fcmVzcG9uc2VTdGF0dXNUZXh0KTsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzcG9uc2VIZWFkZXJzID0gYnVpbGRIZWFkZXJzT2JqZWN0KG1fcmVzcG9uc2VI
ZWFkZXJGaWVsZHMpOwotICAgICAgICBqc29uT2JqZWN0LT5zZXQoInJlc3BvbnNlSGVhZGVycyIs
IHJlc3BvbnNlSGVhZGVycyk7CisgICAgICAgIGpzb25PYmplY3QtPnNldE9iamVjdCgicmVzcG9u
c2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKICAgICAgICAganNvbk9iamVjdC0+c2V0TnVt
YmVyKCJjb25uZWN0aW9uSUQiLCBtX2Nvbm5lY3Rpb25JRCk7CiAgICAgICAgIGpzb25PYmplY3Qt
PnNldEJvb2woImNvbm5lY3Rpb25SZXVzZWQiLCBtX2Nvbm5lY3Rpb25SZXVzZWQpOwogICAgICAg
ICBqc29uT2JqZWN0LT5zZXRCb29sKCJjYWNoZWQiLCBtX2NhY2hlZCk7CiAgICAgICAgIGlmICht
X2xvYWRUaW1pbmcgJiYgIW1fY2FjaGVkKQotICAgICAgICAgICAganNvbk9iamVjdC0+c2V0KCJ0
aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZyhtX2xvYWRUaW1pbmcuZ2V0KCkpKTsKKyAgICAg
ICAgICAgIGpzb25PYmplY3QtPnNldE9iamVjdCgidGltaW5nIiwgYnVpbGRPYmplY3RGb3JUaW1p
bmcobV9sb2FkVGltaW5nLmdldCgpKSk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldEJvb2woImRp
ZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3RvcmFnZUFnZW50LmNwcAppbmRleCBhZDM5NDM0Li42NmQzMzcyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5jcHAKQEAgLTY2LDEwICs2NiwxMCBA
QCB2b2lkIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKEluc3BlY3RvclN0b3JhZ2VBZ2VudCogYWdl
bnQsIGxvbmcgdHJhbnNhY3Rpb25JZCwgUwogCiBjbGFzcyBTdGF0ZW1lbnRDYWxsYmFjayA6IHB1
YmxpYyBTUUxTdGF0ZW1lbnRDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkNCi0gICAgew0KLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdGF0ZW1lbnRDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBhZ2VudCkpOw0K
LSAgICB9DQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRlbWVudENhbGxiYWNrPiBjcmVhdGUo
bG9uZyB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdl
bnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRlbWVudENhbGxiYWNr
KHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7CisgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50
Q2FsbGJhY2soKSB7IH0KIApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
d2l0Y2ggKHZhbHVlLnR5cGUoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0
cmluZ1ZhbHVlOiB2YWx1ZXMtPnB1c2hTdHJpbmcodmFsdWUuc3RyaW5nKCkpOyBicmVhazsKICAg
ICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZTogdmFsdWVzLT5wdXNoTnVt
YmVyKHZhbHVlLm51bWJlcigpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTUUxWYWx1
ZTo6TnVsbFZhbHVlOiB2YWx1ZXMtPnB1c2goSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7IGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5wdXNo
VmFsdWUoSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7IGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIG1fYWdlbnQtPmZyb250ZW5kKCktPnNxbFRyYW5zYWN0aW9uU3VjY2Vl
ZGVkKG1fdHJhbnNhY3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcyk7CkBAIC0xMDksMTAgKzEw
OSwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrIDogcHVibGlj
IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5zYWN0aW9uSWQsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkNCi0gICAgew0KLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKHRyYW5zYWN0aW9uSWQs
IGFnZW50KSk7DQotICAgIH0NCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGVtZW50RXJyb3JD
YWxsYmFjaz4gY3JlYXRlKGxvbmcgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JT
dG9yYWdlQWdlbnQ+IGFnZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrKHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7CisgICAgfQogCiAg
ICAgdmlydHVhbCB+U3RhdGVtZW50RXJyb3JDYWxsYmFjaygpIHsgfQogCkBAIC0xMzIsMTAgKzEz
MiwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBUcmFuc2FjdGlvbkNhbGxiYWNrIDogcHVibGljIFNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRy
YW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgbG9u
ZyB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdlbnQp
DQotICAgIHsNCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25DYWxsYmFj
ayhzcWxTdGF0ZW1lbnQsIHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7DQotICAgIH0NCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VHJhbnNhY3Rpb25DYWxsYmFjaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
c3FsU3RhdGVtZW50LCBsb25nIHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3Rv
cmFnZUFnZW50PiBhZ2VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJh
bnNhY3Rpb25DYWxsYmFjayhzcWxTdGF0ZW1lbnQsIHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7Cisg
ICAgfQogCiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25DYWxsYmFjaygpIHsgfQogCkBAIC0xNjMs
MTAgKzE2MywxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2sg
OiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5z
YWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkNCi0gICAg
ew0KLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2so
dHJhbnNhY3Rpb25JZCwgYWdlbnQpKTsNCi0gICAgfQ0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5zYWN0aW9uSWQsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKHRyYW5zYWN0aW9uSWQsIGFn
ZW50KSk7CisgICAgfQogCiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKCkg
eyB9CiAKQEAgLTE4MywyMCArMTgzLDIwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3Rv
clN0b3JhZ2VBZ2VudD4gbV9hZ2VudDsKIH07CiAKLWNsYXNzIFRyYW5zYWN0aW9uU3VjY2Vzc0Nh
bGxiYWNrIDogcHVibGljIFZvaWRDYWxsYmFjayB7DQotcHVibGljOg0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaz4gY3JlYXRlKCkNCi0gICAgew0KLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpKTsN
Ci0gICAgfQ0KLQ0KLSAgICB2aXJ0dWFsIH5UcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpIHsg
fQ0KLQ0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoKSB7IH0NCi0NCi1wcml2YXRlOg0K
LSAgICBUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpIHsgfQ0KLX07DQorY2xhc3MgVHJhbnNh
Y3Rpb25TdWNjZXNzQ2FsbGJhY2sgOiBwdWJsaWMgVm9pZENhbGxiYWNrIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaz4gY3JlYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25TdWNjZXNzQ2Fs
bGJhY2soKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJh
Y2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudCgpIHsgfQorCitwcml2YXRl
OgorICAgIFRyYW5zYWN0aW9uU3VjY2Vzc0NhbGxiYWNrKCkgeyB9Cit9OwogCiB9IC8vIG5hbWVz
cGFjZQogCkBAIC0yMTIsNyArMjEyLDcgQEAgSW5zcGVjdG9yU3RvcmFnZUFnZW50Ojp+SW5zcGVj
dG9yU3RvcmFnZUFnZW50KCkKIGxvbmcgSW5zcGVjdG9yU3RvcmFnZUFnZW50OjpleGVjdXRlU1FM
KERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBxdWVyeSkKIHsKICAgICBsb25nIHRy
YW5zYWN0aW9uSWQgPSArK2xhc3RUcmFuc2FjdGlvbklkOwotICAgIFJlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjayhUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUocXVlcnks
IHRyYW5zYWN0aW9uSWQsIHRoaXMpKTsNCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrKFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZShxdWVyeSwgdHJhbnNhY3Rp
b25JZCwgdGhpcykpOwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2soVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUodHJhbnNhY3Rpb25J
ZCwgdGhpcykpOwogICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayhUcmFu
c2FjdGlvblN1Y2Nlc3NDYWxsYmFjazo6Y3JlYXRlKCkpOwogICAgIGRhdGFiYXNlLT50cmFuc2Fj
dGlvbihjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBzdWNjZXNz
Q2FsbGJhY2sucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKaW5kZXggYjVjZmY2OC4uYWE0MmE1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoR0NFdmVudFJlY29yZHMoKQogICAgIG1fZ2NFdmVudHMu
Y2xlYXIoKTsKICAgICBmb3IgKEdDRXZlbnRzOjppdGVyYXRvciBpID0gZXZlbnRzLmJlZ2luKCk7
IGkgIT0gZXZlbnRzLmVuZCgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKGkt
PnN0YXJ0VGltZSk7Ci0gICAgICAgIHJlY29yZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVHQ0V2ZW50RGF0YShpLT5jb2xsZWN0ZWRCeXRlcykpOworICAgICAgICBy
ZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR0NF
dmVudERhdGEoaS0+Y29sbGVjdGVkQnl0ZXMpKTsKICAgICAgICAgcmVjb3JkLT5zZXROdW1iZXIo
ImVuZFRpbWUiLCBpLT5lbmRUaW1lKTsKICAgICAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShyZWNv
cmQucmVsZWFzZSgpLCBHQ0V2ZW50VGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICB9CkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRJbnN0YWxsVGltZXIo
aW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmcKIHsKICAgICBwdXNoR0NFdmVudFJl
Y29yZHMoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwot
ICAgIHJlY29yZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1l
ckluc3RhbGxEYXRhKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpKTsKKyAgICByZWNvcmQt
PnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZXJJbnN0
YWxsRGF0YSh0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KSk7CiAgICAgYWRkUmVjb3JkVG9U
aW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBUaW1lckluc3RhbGxUaW1lbGluZVJlY29yZFR5cGUp
OwogfQogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRSZW1vdmVUaW1lcihpbnQgdGltZXJJZCkKIHsKICAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIHJlY29y
ZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJE
YXRhKHRpbWVySWQpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YSh0aW1lcklkKSk7CiAgICAgYWRkUmVj
b3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBUaW1lclJlbW92ZVRpbWVsaW5lUmVjb3Jk
VHlwZSk7CiB9CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogewogICAg
IHB1c2hHQ0V2ZW50UmVjb3JkcygpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29y
ZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJl
bnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5zZXQoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0YSh1cmwpKTsKKyAgICByZWNvcmQt
PnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlU2NoZWR1bGVS
ZXNvdXJjZVJlcXVlc3REYXRhKHVybCkpOwogICAgIHJlY29yZC0+c2V0TnVtYmVyKCJ0eXBlIiwg
U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIGFkZFJlY29y
ZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1l
bGluZVJlY29yZFR5cGUpOwogfQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBiCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVj
b3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICByZWNvcmQtPnNldCgiZGF0YSIsIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UsIHJlcXVlc3QpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0
YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEo
aWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UsIHJlcXVlc3QpKTsKICAgICByZWNvcmQtPnNldE51
bWJlcigidHlwZSIsIFJlc291cmNlU2VuZFJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUpOwogICAg
IHNldEhlYXBTaXplU3RhdGlzdGljKHJlY29yZC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZC0+YWRk
UmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICByZWNvcmQtPnNl
dCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRh
KGlkZW50aWZpZXIsIGRpZEZhaWwpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKGlkZW50aWZpZXIs
IGRpZEZhaWwpKTsKICAgICByZWNvcmQtPnNldE51bWJlcigidHlwZSIsIFJlc291cmNlRmluaXNo
VGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhyZWNvcmQuZ2V0
KCkpOwogICAgIG1fZnJvbnRlbmQtPmFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2Uo
KSk7CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRN
YXJrVGltZWxpbmUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHB1c2hHQ0V2ZW50UmVj
b3JkcygpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0g
ICAgcmVjb3JkLT5zZXQoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZU1hcmtU
aW1lbGluZURhdGEobWVzc2FnZSkpOworICAgIHJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVNYXJrVGltZWxpbmVEYXRhKG1lc3NhZ2UpKTsKICAg
ICBhZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5yZWxlYXNlKCksIE1hcmtUaW1lbGluZVJlY29y
ZFR5cGUpOwogfQogCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjphZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnAK
ICAgICAgICAgbV9mcm9udGVuZC0+YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgp
KTsKICAgICBlbHNlIHsKICAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSBwYXJlbnQgPSBtX3Jl
Y29yZFN0YWNrLmxhc3QoKTsKLSAgICAgICAgcGFyZW50LmNoaWxkcmVuLT5wdXNoKHJlY29yZC5y
ZWxlYXNlKCkpOworICAgICAgICBwYXJlbnQuY2hpbGRyZW4tPnB1c2hPYmplY3QocmVjb3JkLnJl
bGVhc2UoKSk7CiAgICAgfQogfQogCkBAIC0zMTcsOCArMzE3LDggQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBl
IHR5cGUpCiAgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkgZW50cnkgPSBtX3JlY29yZFN0YWNr
Lmxhc3QoKTsKICAgICAgICAgbV9yZWNvcmRTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIEFT
U0VSVChlbnRyeS50eXBlID09IHR5cGUpOwotICAgICAgICBlbnRyeS5yZWNvcmQtPnNldCgiZGF0
YSIsIGVudHJ5LmRhdGEpOwotICAgICAgICBlbnRyeS5yZWNvcmQtPnNldCgiY2hpbGRyZW4iLCBl
bnRyeS5jaGlsZHJlbik7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwg
ZW50cnkuZGF0YSk7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0QXJyYXkoImNoaWxkcmVuIiwg
ZW50cnkuY2hpbGRyZW4pOwogICAgICAgICBlbnRyeS5yZWNvcmQtPnNldE51bWJlcigiZW5kVGlt
ZSIsIFdURjo6Y3VycmVudFRpbWVNUygpKTsKICAgICAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShl
bnRyeS5yZWNvcmQsIHR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwCmluZGV4IGRhZDg0YWMuLmY5MjZiZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGJ1
aWxkVmFsdWUoY29uc3QgVUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zCiAgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGFycmF5Tm9kZSA9IGJ1aWxkVmFsdWUoc3Rh
cnQsIGVuZCwgJnRva2VuRW5kLCBkZXB0aCArIDEpOwogICAgICAgICAgICAgaWYgKCFhcnJheU5v
ZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaChh
cnJheU5vZGUpOworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZShhcnJheU5vZGUpOwogCiAg
ICAgICAgICAgICAvLyBBZnRlciBhIGxpc3QgdmFsdWUsIHdlIGV4cGVjdCBhIGNvbW1hIG9yIHRo
ZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgICAgICAgICBzdGFydCA9IHRva2VuRW5kOwpAQCAtNDA2
LDcgKzQwNiw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGJ1aWxkVmFsdWUoY29uc3Qg
VUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zCiAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQs
IGRlcHRoICsgMSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICAgICAgb2JqZWN0LT5zZXQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAg
ICBvYmplY3QtPnNldFZhbHVlKGtleSwgdmFsdWUpOwogICAgICAgICAgICAgc3RhcnQgPSB0b2tl
bkVuZDsKIAogICAgICAgICAgICAgLy8gQWZ0ZXIgYSBrZXkvdmFsdWUgcGFpciwgd2UgZXhwZWN0
IGEgY29tbWEgb3IgdGhlIGVuZCBvZiB0aGUKQEAgLTUwNCw2ICs1MDQsMjIgQEAgYm9vbCBJbnNw
ZWN0b3JWYWx1ZTo6YXNTdHJpbmcoU3RyaW5nKikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
b3V0cHV0KQoreworICAgICpvdXRwdXQgPSB0aGlzOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIEluc3BlY3RvclZhbHVlOjphc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0
cHV0KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNB
cnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yVmFsdWU6OmFzT2Jq
ZWN0KCkKIHsKICAgICByZXR1cm4gMDsKQEAgLTYwNiw2ICs2MjIsMTIgQEAgdm9pZCBJbnNwZWN0
b3JTdHJpbmc6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAgICAgZG91
YmxlUXVvdGVTdHJpbmcobV9zdHJpbmdWYWx1ZSwgb3V0cHV0KTsKIH0KIAorYm9vbCBJbnNwZWN0
b3JPYmplY3Q6OmFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRwdXQpCit7Cisg
ICAgKm91dHB1dCA9IHRoaXM7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JPYmplY3Q6OmFzT2JqZWN0KCkKIHsKICAgICByZXR1cm4g
dGhpczsKQEAgLTY3NCw2ICs2OTYsMTIgQEAgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNP
TihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAgICAgb3V0cHV0LT5hcHBlbmQoJ30nKTsK
IH0KIAorYm9vbCBJbnNwZWN0b3JBcnJheTo6YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBvdXRwdXQpCit7CisgICAgKm91dHB1dCA9IHRoaXM7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckFycmF5Ojphc0FycmF5KCkKIHsK
ICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggZTUy
MzAzMi4uNGJjMzZmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTczLDYg
KzczLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBsb25n
KiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBpbnQq
IG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGFzU3RyaW5nKFN0cmluZyogb3V0cHV0
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNWYWx1ZShSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiBvdXRwdXQpOworICAgIHZpcnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0Piogb3V0cHV0KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNBcnJheShSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+KiBvdXRwdXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGFzT2JqZWN0KCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhc0Fy
cmF5KCk7CiAKQEAgLTE2MywxMiArMTY2LDE1IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3Bl
Y3Rvck9iamVjdCgpIHsgfQogCisgICAgdmlydHVhbCBib29sIGFzT2JqZWN0KFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRwdXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGFzT2JqZWN0KCk7CiAKICAgICB2b2lkIHNldEJvb2woY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sKTsKICAgICB2b2lkIHNldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSk7
CiAgICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIHNldChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KTsKKyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4pOworICAgIHZvaWQgc2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKKyAgICB2b2lkIHNldEFycmF5KGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4pOwogCiAgICAgYm9vbCBnZXRC
b29sKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0cHV0KSBjb25zdDsKICAgICBib29sIGdl
dE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSogb3V0cHV0KSBjb25zdDsKQEAgLTE5
OCwxMiArMjA0LDE1IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckFycmF5KCkgeyB9
CiAKKyAgICB2aXJ0dWFsIGJvb2wgYXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRw
dXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXNBcnJheSgpOwog
CiAgICAgdm9pZCBwdXNoQm9vbChib29sKTsKICAgICB2b2lkIHB1c2hOdW1iZXIoZG91YmxlKTsK
ICAgICB2b2lkIHB1c2hTdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBwdXNoKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+KTsKKyAgICB2b2lkIHB1c2hWYWx1ZShQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPik7CisgICAgdm9pZCBwdXNoT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0Pik7CisgICAgdm9pZCBwdXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4p
OwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zaXplKCk7IH0K
IAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGdldChzaXplX3QgaW5kZXgpOwpAQCAt
MjE3LDIwICsyMjYsMzIgQEAgcHJpdmF0ZToKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0
OjpzZXRCb29sKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBzZXQobmFt
ZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgc2V0VmFsdWUobmFt
ZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lk
IEluc3BlY3Rvck9iamVjdDo6c2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIHZh
bHVlKQogewotICAgIHNldChuYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUp
KTsKKyAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUp
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRTdHJpbmcoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNldChuYW1lLCBJbnNwZWN0
b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOworICAgIHNldFZhbHVlKG5hbWUsIEluc3BlY3RvclN0
cmluZzo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6
c2V0KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCit7CisgICAgaWYgKG1fZGF0YS5z
ZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICAgICAgbV9vcmRlci5hcHBlbmQobmFtZSk7Cit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0T2JqZWN0KGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQoreworICAgIGlmIChtX2Rh
dGEuc2V0KG5hbWUsIHZhbHVlKS5zZWNvbmQpCisgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUp
OworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiB7CiAgICAgaWYgKG1f
ZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKICAgICAgICAgbV9vcmRlci5hcHBlbmQobmFt
ZSk7CkBAIC0yNTEsNyArMjcyLDE3IEBAIGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5OjpwdXNo
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JT
dHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheTo6
cHVzaChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3Bl
Y3RvckFycmF5OjpwdXNoVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCit7
CisgICAgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3RvckFy
cmF5OjpwdXNoT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKK3sKKyAg
ICBtX2RhdGEuYXBwZW5kKHZhbHVlKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXk6
OnB1c2hBcnJheShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKIHsKICAgICBtX2Rh
dGEuYXBwZW5kKHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEJyZWFrcG9pbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5jcHAK
aW5kZXggY2UwZDE4YS4uMjQ0MDFmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0QnJlYWtwb2ludC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2lu
dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFNjcmlw
dEJyZWFrcG9pbnQ6Omluc3BlY3Rvck9iamVjdEZyb21Tb3VyY2VCcmVha3BvaW4KICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgIGJyZWFrcG9pbnQtPnNldEJvb2woImVuYWJsZWQiLCBpdC0+c2Vjb25k
LmVuYWJsZWQpOwogICAgICAgICBicmVha3BvaW50LT5zZXRTdHJpbmcoImNvbmRpdGlvbiIsIGl0
LT5zZWNvbmQuY29uZGl0aW9uKTsKLSAgICAgICAgYnJlYWtwb2ludHMtPnNldChTdHJpbmc6Om51
bWJlcihpdC0+Zmlyc3QpLCBicmVha3BvaW50KTsKKyAgICAgICAgYnJlYWtwb2ludHMtPnNldE9i
amVjdChTdHJpbmc6Om51bWJlcihpdC0+Zmlyc3QpLCBicmVha3BvaW50KTsKICAgICB9CiAgICAg
cmV0dXJuIGJyZWFrcG9pbnRzLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IGFkOWZkZWMuLmUxYzJiYmIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAtNDksNyArNDksNyBAQCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVH
ZW5lcmljUmVjb3JkKGRvdWJsZSBzdAogCiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzdGFj
a1RyYWNlID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgIGlmIChTY3JpcHRDYWxsU3Rh
Y2s6OnN0YWNrVHJhY2UoNSwgc3RhY2tUcmFjZSkpCi0gICAgICAgIHJlY29yZC0+c2V0KCJzdGFj
a1RyYWNlIiwgc3RhY2tUcmFjZSk7CisgICAgICAgIHJlY29yZC0+c2V0QXJyYXkoInN0YWNrVHJh
Y2UiLCBzdGFja1RyYWNlKTsKICAgICByZXR1cm4gcmVjb3JkLnJlbGVhc2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64332</attachid>
            <date>2010-08-13 06:16:44 -0700</date>
            <delta_ts>2010-08-13 06:22:43 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>gen</filename>
            <type>text/plain</type>
            <size>47121</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTA0NzE2Mi4uM2RhZGMwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAxMC0wOC0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgSW5zcGVjdG9yVmFsdWU6
OnB1c2ggYW5kIHNldCB0bworICAgICAgICBwdXNoe1ZhbHVlfE9iamVjdHxBcnJheX0gYW5kIHNl
dHsuLi59LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM5NjYKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3IpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVG9JbnNwZWN0b3JWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEluc3BlY3Rv
ck9iamVjdEZvcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6djhUb0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0
aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0RE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTdHlsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFsbFN0eWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0UnVsZVJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDU1NSdWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBz
ZXVkb0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
b3B1bGF0ZU9iamVjdFdpdGhTdHlsZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JEaXNhYmxlZFN0eWxlUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZVNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
clJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNhdmVCcmVha3BvaW50
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0b3JhZ2VBZ2VudDo6ZXhlY3V0ZVNR
TCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEdDRXZlbnRSZWNvcmRz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEluc3RhbGxU
aW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZW1v
dmVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRT
Y2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsU2VuZFJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTWFya1RpbWVsaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxl
dGVDdXJyZW50UmVjb3JkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JWYWx1
ZTo6YXNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JWYWx1ZTo6YXNPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVmFsdWU6OmFzQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0Ojphc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcnJheTo6YXNBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRCb29sKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdDo6c2V0TnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck9iamVjdDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2Jq
ZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRB
cnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheTo6cHVzaFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5OjpwdXNoT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFycmF5OjpwdXNoQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRCcmVha3BvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJyZWFrcG9pbnQ6
Omluc3BlY3Rvck9iamVjdEZyb21Tb3VyY2VCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQpOgorCiAyMDEwLTA4LTEzICBHYXZp
biBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCAx
ZmJkMDQwLi4wZWIyODE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKQEAg
LTg0LDggKzg0LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZElu
c3BlY3Rvck9iamVjdEZvcihjb25zdCBKU0M6OlByb2ZpbGVOb2QKICAgICBjb25zdCBQcm9maWxl
Tm9kZXNMaXN0JiBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuKCk7CiAgICAgUHJvZmlsZU5vZGVz
TGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChQcm9m
aWxlTm9kZXNMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gY2hpbGRyZW4uYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgY2hpbGRyZW5BcnJheS0+cHVzaChidWlsZEluc3Bl
Y3Rvck9iamVjdEZvcihpdGVyLT5nZXQoKSkpOwotICAgIHJlc3VsdC0+c2V0KCJjaGlsZHJlbiIs
IGNoaWxkcmVuQXJyYXkpOworICAgICAgICBjaGlsZHJlbkFycmF5LT5wdXNoT2JqZWN0KGJ1aWxk
SW5zcGVjdG9yT2JqZWN0Rm9yKGl0ZXItPmdldCgpKSk7CisgICAgcmVzdWx0LT5zZXRBcnJheSgi
Y2hpbGRyZW4iLCBjaGlsZHJlbkFycmF5KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IGI0ZGRhMTIuLmE1OGUwYzcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUsIEoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnRWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluc3BlY3RvckFycmF5LT5wdXNo
KGVsZW1lbnRWYWx1ZSk7CisgICAgICAgICAgICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2hWYWx1
ZShlbGVtZW50VmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGluc3Bl
Y3RvckFycmF5OwogICAgICAgICB9CkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIEoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbnNwZWN0b3JPYmplY3QtPnNldChTdHJpbmcobmFtZS5jaGFy
YWN0ZXJzKCksIG5hbWUubGVuZ3RoKCkpLCBpbnNwZWN0b3JWYWx1ZSk7CisgICAgICAgICAgICBp
bnNwZWN0b3JPYmplY3QtPnNldFZhbHVlKFN0cmluZyhuYW1lLmNoYXJhY3RlcnMoKSwgbmFtZS5s
ZW5ndGgoKSksIGluc3BlY3RvclZhbHVlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gaW5z
cGVjdG9yT2JqZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNw
cAppbmRleCA5OGRkYjkwLi43YzA3ODI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxs
U3RhY2suY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNr
VHJhY2UoaW50IGZyYW1lTGltaXQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHMKICAg
ICAgICAgZnJhbWVPYmplY3QtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgZnVuY3Rpb25OYW1l
LklzRW1wdHkoKSA/ICIiIDogdG9XZWJDb3JlU3RyaW5nKGZ1bmN0aW9uTmFtZSkpOwogICAgICAg
ICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgZnJhbWUtPkdldExpbmVOdW1i
ZXIoKSk7CiAgICAgICAgIGZyYW1lT2JqZWN0LT5zZXROdW1iZXIoImNvbHVtbiIsIGZyYW1lLT5H
ZXRDb2x1bW4oKSk7Ci0gICAgICAgIHN0YWNrVHJhY2UtPnB1c2goZnJhbWVPYmplY3QpOworICAg
ICAgICBzdGFja1RyYWNlLT5wdXNoT2JqZWN0KGZyYW1lT2JqZWN0KTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5jcHAKaW5kZXgg
MzJlMDA2Ni4uOTVhYzBkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuY3BwCkBA
IC03Miw5ICs3Miw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJ
bnNwZWN0b3JPYmplY3RGb3IoY29uc3Qgdjg6OkNwdVByb2ZpbGVOCiAgICAgY29uc3QgaW50IGNo
aWxkcmVuQ291bnQgPSBub2RlLT5HZXRDaGlsZHJlbkNvdW50KCk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjaGlsZHJlbkNvdW50OyBpKyspIHsKICAgICAgICAgY29uc3Qgdjg6OkNwdVByb2Zp
bGVOb2RlKiBjaGlsZCA9IG5vZGUtPkdldENoaWxkKGkpOwotICAgICAgICBjaGlsZHJlbi0+cHVz
aChidWlsZEluc3BlY3Rvck9iamVjdEZvcihjaGlsZCkpOworICAgICAgICBjaGlsZHJlbi0+cHVz
aE9iamVjdChidWlsZEluc3BlY3Rvck9iamVjdEZvcihjaGlsZCkpOwogICAgIH0KLSAgICByZXN1
bHQtPnNldCgiY2hpbGRyZW4iLCBjaGlsZHJlbik7CisgICAgcmVzdWx0LT5zZXRBcnJheSgiY2hp
bGRyZW4iLCBjaGlsZHJlbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRWYWx1ZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFZhbHVlLmNwcAppbmRleCA2ZDNmZTIwLi5jNDVjODUxIDEwMDc1NQotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFZhbHVlLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gdjhUb0luc3BlY3RvclZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2goZWxlbWVudCk7CisgICAgICAgICAgICBpbnNwZWN0
b3JBcnJheS0+cHVzaFZhbHVlKGVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBp
bnNwZWN0b3JBcnJheTsKICAgICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHY4VG9JbnNwZWN0b3JWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluc3BlY3Rvck9i
amVjdC0+c2V0KHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobmFtZSksIHByb3BlcnR5VmFs
dWUpOworICAgICAgICAgICAgaW5zcGVjdG9yT2JqZWN0LT5zZXRWYWx1ZSh0b1dlYkNvcmVTdHJp
bmdXaXRoTnVsbENoZWNrKG5hbWUpLCBwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gaW5zcGVjdG9yT2JqZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9XZWJDb3JlL2luc3BlY3Rvci9Db2Rl
R2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDQ3N2JkY2UuLjEwZTA4ODIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpAQCAtNDcsMzAgKzQ3LDI3IEBA
ICR0eXBlVHJhbnNmb3JteyJQYXNzUmVmUHRyIn0gPSB7CiB9OwogJHR5cGVUcmFuc2Zvcm17Ik9i
amVjdCJ9ID0gewogICAgICJwYXJhbSIgPT4gIlBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiIs
Ci0gICAgInJldFZhbCIgPT4gIlBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiIsCiAgICAgInZh
cmlhYmxlIiA9PiAiUmVmUHRyPEluc3BlY3Rvck9iamVjdD4iLAogICAgICJkZWZhdWx0VmFsdWUi
ID0+ICJJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpIiwKICAgICAiZm9yd2FyZCIgPT4gIkluc3Bl
Y3Rvck9iamVjdCIsCiAgICAgImhlYWRlciIgPT4gIkluc3BlY3RvclZhbHVlcy5oIiwKLSAgICAi
YWNjZXNzb3JTdWZmaXgiID0+ICIiCisgICAgImFjY2Vzc29yU3VmZml4IiA9PiAiT2JqZWN0Igog
fTsKICR0eXBlVHJhbnNmb3JteyJBcnJheSJ9ID0gewogICAgICJwYXJhbSIgPT4gIlBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IiwKLSAgICAicmV0VmFsIiA9PiAiUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4iLAogICAgICJ2YXJpYWJsZSIgPT4gIlJlZlB0cjxJbnNwZWN0b3JBcnJheT4iLAog
ICAgICJkZWZhdWx0VmFsdWUiID0+ICJJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkiLAogICAgICJm
b3J3YXJkIiA9PiAiSW5zcGVjdG9yQXJyYXkiLAogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JW
YWx1ZXMuaCIsCi0gICAgImFjY2Vzc29yU3VmZml4IiA9PiAiIgorICAgICJhY2Nlc3NvclN1ZmZp
eCIgPT4gIkFycmF5IgogfTsKICR0eXBlVHJhbnNmb3JteyJWYWx1ZSJ9ID0gewogICAgICJwYXJh
bSIgPT4gIlBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IiwKLSAgICAicmV0VmFsIiA9PiAiUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4iLAogICAgICJ2YXJpYWJsZSIgPT4gIlJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4iLAogICAgICJkZWZhdWx0VmFsdWUiID0+ICJJbnNwZWN0b3JWYWx1ZTo6bnVs
bCgpIiwKICAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvclZhbHVlIiwKICAgICAiaGVhZGVyIiA9
PiAiSW5zcGVjdG9yVmFsdWVzLmgiLAotICAgICJhY2Nlc3NvclN1ZmZpeCIgPT4gIiIKKyAgICAi
YWNjZXNzb3JTdWZmaXgiID0+ICJWYWx1ZSIKIH07CiAkdHlwZVRyYW5zZm9ybXsiU3RyaW5nIn0g
PSB7CiAgICAgInBhcmFtIiA9PiAiY29uc3QgU3RyaW5nJiIsCkBAIC0xMjAsNyArMTE3LDYgQEAg
JHR5cGVUcmFuc2Zvcm17ImJvb2xlYW4ifSA9IHsKICAgICAiYWNjZXNzb3JTdWZmaXgiID0+ICJC
b29sIgogfTsKICR0eXBlVHJhbnNmb3JteyJ2b2lkIn0gPSB7Ci0gICAgInJldFZhbCIgPT4gInZv
aWQiLAogICAgICJmb3J3YXJkIiA9PiAiIiwKICAgICAiaGVhZGVyIiA9PiAiIgogfTsKQEAgLTMy
NCw3ICszMjAsNyBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5kRnVuY3Rpb24KICAgICBteSAkaSA9IDE7
ICMgemVybyBlbGVtZW50IGlzIHRoZSBtZXRob2QgbmFtZS4KICAgICBmb3JlYWNoIG15ICRwYXJh
bWV0ZXIgKEBpbkFyZ3MpIHsKICAgICAgICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwot
ICAgICAgICBteSAkYXJndW1lbnRUeXBlID0gJHR5cGVUcmFuc2Zvcm17JHR5cGV9LT57JHR5cGVU
cmFuc2Zvcm17JHR5cGV9LT57InJldFZhbCJ9ID8gInJldFZhbCIgOiAidmFyaWFibGUifTsKKyAg
ICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9ICR0eXBlVHJhbnNmb3JteyR0eXBlfS0+eyJ2YXJpYWJs
ZSJ9OwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAkYXJndW1lbnRUeXBlICIgLiAkcGFy
YW1ldGVyLT5uYW1lIC4gIjsiKSBpZiAhKCRwYXJhbWV0ZXItPm5hbWUgZXEgImNhbGxJZCIpOwog
ICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBpZiAoIWFyZ3MtPmdldCgkaSktPmFzIiAuICR0
eXBlVHJhbnNmb3JteyR0eXBlfS0+eyJhY2Nlc3NvclN1ZmZpeCJ9IC4gIigmIiAuICRwYXJhbWV0
ZXItPm5hbWUgLiAiKSkgeyIpOwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Iik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5k
ZXggMDU5ZGVhNC4uZWExNjhmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApA
QCAtMTM0LDE1ICsxMzQsMTUgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChS
ZW1vdGVJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2MKICAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBqc29uQXJncy0+cHVzaChpbnNwZWN0b3JWYWx1ZSk7Cisg
ICAgICAgICAgICBqc29uQXJncy0+cHVzaFZhbHVlKGluc3BlY3RvclZhbHVlKTsKICAgICAgICAg
fQotICAgICAgICBqc29uT2JqLT5zZXQoInBhcmFtZXRlcnMiLCBqc29uQXJncyk7CisgICAgICAg
IGpzb25PYmotPnNldEFycmF5KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOwogICAgIH0KICAgICBp
ZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGZyYW1lcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgaSsrKQotICAgICAgICAgICAgZnJhbWVzLT5w
dXNoKG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOwotICAgICAgICBqc29u
T2JqLT5zZXQoInN0YWNrVHJhY2UiLCBmcmFtZXMpOworICAgICAgICAgICAgZnJhbWVzLT5wdXNo
T2JqZWN0KG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOworICAgICAgICBq
c29uT2JqLT5zZXRBcnJheSgic3RhY2tUcmFjZSIsIGZyYW1lcyk7CiAgICAgfQogICAgIGZyb250
ZW5kLT5hZGRDb25zb2xlTWVzc2FnZShqc29uT2JqKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CmluZGV4IDlkM2QxMDIuLjNjNjU5NDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMjE2
LDYgKzIxNiw1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0g
dm9pZCBzZXRET01TdG9yYWdlSXRlbShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQs
IGluIFN0cmluZyBrZXksIGluIFN0cmluZyB2YWx1ZSwgb3V0IGJvb2xlYW4gc3VjY2Vzcyk7CiAg
ICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4g
bG9uZyBjYWxsSWQsIGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBvdXQgYm9vbGVh
biBzdWNjZXNzKTsKICNlbmRpZgotCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGI5NWMwZTEuLjEy
MDYxODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcApAQCAtODIsNyArODIsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxp
YwogICAgIHZhbHVlLT5zZXRTdHJpbmcoImxhc3RQYXRoQ29tcG9uZW50IiwgYXBwbGljYXRpb25D
YWNoZUluZm8ubV9tYW5pZmVzdC5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICB2YWx1ZS0+c2V0
TnVtYmVyKCJjcmVhdGlvblRpbWUiLCBhcHBsaWNhdGlvbkNhY2hlSW5mby5tX2NyZWF0aW9uVGlt
ZSk7CiAgICAgdmFsdWUtPnNldE51bWJlcigidXBkYXRlVGltZSIsIGFwcGxpY2F0aW9uQ2FjaGVJ
bmZvLm1fdXBkYXRlVGltZSk7Ci0gICAgdmFsdWUtPnNldCgicmVzb3VyY2VzIiwgYnVpbGRBcnJh
eUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoYXBwbGljYXRpb25DYWNoZVJlc291cmNlcykp
OworICAgIHZhbHVlLT5zZXRBcnJheSgicmVzb3VyY2VzIiwgYnVpbGRBcnJheUZvckFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZXMoYXBwbGljYXRpb25DYWNoZVJlc291cmNlcykpOwogICAgIHJldHVy
biB2YWx1ZTsKIH0KIApAQCAtOTMsNyArOTMsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdAog
ICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Ojpjb25zdF9pdGVyYXRv
ciBlbmQgPSBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzLmVuZCgpOwogICAgIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZXMuYmVnaW4oKTsKICAgICBmb3IgKGludCBpID0gMDsgaXQgIT0gZW5k
OyArK2l0LCBpKyspCi0gICAgICAgIHJlc291cmNlcy0+cHVzaChidWlsZE9iamVjdEZvckFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSgqaXQpKTsKKyAgICAgICAgcmVzb3VyY2VzLT5wdXNoT2JqZWN0
KGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKCppdCkpOwogCiAgICAgcmV0
dXJuIHJlc291cmNlczsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggOTkzZmVkNC4uOGE2YTRhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTEzMzIsNyArMTMzMiw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNo
U2V0CiAgICAgTGlzdEhhc2hTZXQ8Q29va2llPjo6aXRlcmF0b3IgZW5kID0gY29va2llc0xpc3Qu
ZW5kKCk7CiAgICAgTGlzdEhhc2hTZXQ8Q29va2llPjo6aXRlcmF0b3IgaXQgPSBjb29raWVzTGlz
dC5iZWdpbigpOwogICAgIGZvciAoaW50IGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQsIGkrKykKLSAg
ICAgICAgY29va2llcy0+cHVzaChidWlsZE9iamVjdEZvckNvb2tpZSgqaXQpKTsKKyAgICAgICAg
Y29va2llcy0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckNvb2tpZSgqaXQpKTsKIAogICAgIHJl
dHVybiBjb29raWVzOwogfQpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRET01TdG9yYWdlRW50cmllcyhsb25nIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3Bl
Y3RvckEKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZW50cnkgPSBJbnNwZWN0
b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBlbnRyeS0+cHVzaFN0cmluZyhuYW1lKTsK
ICAgICAgICAgICAgIGVudHJ5LT5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgICAgICgqZW50
cmllcyktPnB1c2goZW50cnkpOworICAgICAgICAgICAgKCplbnRyaWVzKS0+cHVzaEFycmF5KGVu
dHJ5KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1MDMsNyArMTUwMyw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMoUmVmUHRyPEluc3BlY3RvckFycmF5
PiogaGVhZGVycykKIHsKICAgICBQcm9maWxlc01hcDo6aXRlcmF0b3IgcHJvZmlsZXNFbmQgPSBt
X3Byb2ZpbGVzLmVuZCgpOwogICAgIGZvciAoUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9w
cm9maWxlcy5iZWdpbigpOyBpdCAhPSBwcm9maWxlc0VuZDsgKytpdCkKLSAgICAgICAgKCpoZWFk
ZXJzKS0+cHVzaChjcmVhdGVQcm9maWxlSGVhZGVyKCppdC0+c2Vjb25kKSk7CisgICAgICAgICgq
aGVhZGVycyktPnB1c2hPYmplY3QoY3JlYXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUodW5zaWduZWQgdWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcHJvZmlsZU9iamVjdCkKQEAgLTE1MTEsNyArMTUxMSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZSh1bnNpZ25lZCB1aWQsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBwcm9mCiAgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgaWYgKGl0ICE9IG1fcHJvZmlsZXMuZW5kKCkp
IHsKICAgICAgICAgKnByb2ZpbGVPYmplY3QgPSBjcmVhdGVQcm9maWxlSGVhZGVyKCppdC0+c2Vj
b25kKTsKLSAgICAgICAgKCpwcm9maWxlT2JqZWN0KS0+c2V0KCJoZWFkIiwgaXQtPnNlY29uZC0+
YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkpOworICAgICAgICAoKnByb2ZpbGVPYmplY3Qp
LT5zZXRPYmplY3QoImhlYWQiLCBpdC0+c2Vjb25kLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhl
YWQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggMTdiYzU5Yi4uMDc0YWFiOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2
ZW50TGlzdGVuZXJzRm9yTm9kZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSCiAgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdmVjdG9yLnNpemUoKTsgKytqKSB7CiAgICAgICAg
ICAgICBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSB2ZWN0b3Jbal07
CiAgICAgICAgICAgICBpZiAobGlzdGVuZXIudXNlQ2FwdHVyZSkKLSAgICAgICAgICAgICAgICAo
Kmxpc3RlbmVyc0FycmF5KS0+cHVzaChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVu
ZXIsIGluZm8uZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKKyAgICAgICAgICAgICAgICAoKmxpc3Rl
bmVyc0FycmF5KS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVu
ZXIsIGluZm8uZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
NjExLDcgKzYxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJz
Rm9yTm9kZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSCiAgICAgICAgIGZvciAoc2l6
ZV90IGogPSAwOyBqIDwgdmVjdG9yLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBjb25zdCBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSB2ZWN0b3Jbal07CiAgICAgICAgICAg
ICBpZiAoIWxpc3RlbmVyLnVzZUNhcHR1cmUpCi0gICAgICAgICAgICAgICAgKCpsaXN0ZW5lcnNB
cnJheSktPnB1c2goYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2
ZW50VHlwZSwgaW5mby5ub2RlKSk7CisgICAgICAgICAgICAgICAgKCpsaXN0ZW5lcnNBcnJheSkt
PnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2
ZW50VHlwZSwgaW5mby5ub2RlKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03NjYsMTEgKzc2
NiwxMSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbgogICAgICAgICB2YWx1ZS0+c2V0TnVtYmVy
KCJjaGlsZE5vZGVDb3VudCIsIG5vZGVDb3VudCk7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVw
dGgsIG5vZGVzTWFwKTsKICAgICAgICAgaWYgKGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCi0gICAg
ICAgICAgICB2YWx1ZS0+c2V0KCJjaGlsZHJlbiIsIGNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAg
ICAgICAgICB2YWx1ZS0+c2V0QXJyYXkoImNoaWxkcmVuIiwgY2hpbGRyZW4ucmVsZWFzZSgpKTsK
IAogICAgICAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUpIHsK
ICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSk7Ci0gICAgICAgICAgICB2YWx1ZS0+c2V0KCJhdHRyaWJ1dGVzIiwgYnVpbGRBcnJheUZvckVs
ZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRBcnJheSgi
YXR0cmlidXRlcyIsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7CiAg
ICAgICAgICAgICBpZiAobm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBmcmFtZU93bmVyID0gc3RhdGljX2Nhc3Q8SFRN
TEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUtPnNldFN0
cmluZygiZG9jdW1lbnRVUkwiLCBkb2N1bWVudFVSTFN0cmluZyhmcmFtZU93bmVyLT5jb250ZW50
RG9jdW1lbnQoKSkpOwpAQCAtODEzLDcgKzgxMyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9k
CiAgICAgICAgIGlmIChpbm5lckNoaWxkTm9kZUNvdW50KGNvbnRhaW5lcikgPT0gMSkgewogICAg
ICAgICAgICAgTm9kZSAqY2hpbGQgPSBpbm5lckZpcnN0Q2hpbGQoY29udGFpbmVyKTsKICAgICAg
ICAgICAgIGlmIChjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpCi0gICAgICAg
ICAgICAgICAgY2hpbGRyZW4tPnB1c2goYnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCAwLCBub2Rl
c01hcCkpOworICAgICAgICAgICAgICAgIGNoaWxkcmVuLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0
Rm9yTm9kZShjaGlsZCwgMCwgbm9kZXNNYXApKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
Y2hpbGRyZW4ucmVsZWFzZSgpOwogICAgIH0gZWxzZSBpZiAoZGVwdGggPiAwKSB7CkBAIC04MjEs
NyArODIxLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2QKICAgICB9CiAKICAgICBmb3IgKE5v
ZGUgKmNoaWxkID0gaW5uZXJGaXJzdENoaWxkKGNvbnRhaW5lcik7IGNoaWxkOyBjaGlsZCA9IGlu
bmVyTmV4dFNpYmxpbmcoY2hpbGQpKQotICAgICAgICBjaGlsZHJlbi0+cHVzaChidWlsZE9iamVj
dEZvck5vZGUoY2hpbGQsIGRlcHRoLCBub2Rlc01hcCkpOworICAgICAgICBjaGlsZHJlbi0+cHVz
aE9iamVjdChidWlsZE9iamVjdEZvck5vZGUoY2hpbGQsIGRlcHRoLCBub2Rlc01hcCkpOwogICAg
IHJldHVybiBjaGlsZHJlbi5yZWxlYXNlKCk7CiB9CiAKQEAgLTk4NiwyNyArOTg2LDI3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIG5vZGVJZCwgYm9vbCBhdXRob3JP
bmx5LCBSZWZQdHI8SW5zcGVjdG9yCiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGlmIChlbGVtZW50LT5zdHlsZSgp
KQotICAgICAgICByZXN1bHQtPnNldCgiaW5saW5lU3R5bGUiLCBidWlsZE9iamVjdEZvclN0eWxl
KGVsZW1lbnQtPnN0eWxlKCksIHRydWUpKTsKLSAgICByZXN1bHQtPnNldCgiY29tcHV0ZWRTdHls
ZSIsIGJ1aWxkT2JqZWN0Rm9yU3R5bGUoY29tcHV0ZWRTdHlsZUluZm8uZ2V0KCksIGZhbHNlKSk7
CisgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJpbmxpbmVTdHlsZSIsIGJ1aWxkT2JqZWN0Rm9y
U3R5bGUoZWxlbWVudC0+c3R5bGUoKSwgdHJ1ZSkpOworICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJj
b21wdXRlZFN0eWxlIiwgYnVpbGRPYmplY3RGb3JTdHlsZShjb21wdXRlZFN0eWxlSW5mby5nZXQo
KSwgZmFsc2UpKTsKIAogICAgIENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yID0gZWxlbWVudC0+
b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CiAgICAgUmVmUHRyPENTU1J1bGVMaXN0
PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwg
YXV0aG9yT25seSk7Ci0gICAgcmVzdWx0LT5zZXQoIm1hdGNoZWRDU1NSdWxlcyIsIGJ1aWxkQXJy
YXlGb3JDU1NSdWxlcyhub2RlLT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRSdWxlcy5nZXQoKSkp
OworICAgIHJlc3VsdC0+c2V0QXJyYXkoIm1hdGNoZWRDU1NSdWxlcyIsIGJ1aWxkQXJyYXlGb3JD
U1NSdWxlcyhub2RlLT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRSdWxlcy5nZXQoKSkpOwogCi0g
ICAgcmVzdWx0LT5zZXQoInN0eWxlQXR0cmlidXRlcyIsIGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
U3R5bGVzKGVsZW1lbnQpKTsKLSAgICByZXN1bHQtPnNldCgicHNldWRvRWxlbWVudHMiLCBidWls
ZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVudCwgYXV0aG9yT25seSkpOworICAgIHJlc3Vs
dC0+c2V0T2JqZWN0KCJzdHlsZUF0dHJpYnV0ZXMiLCBidWlsZE9iamVjdEZvckF0dHJpYnV0ZVN0
eWxlcyhlbGVtZW50KSk7CisgICAgcmVzdWx0LT5zZXRBcnJheSgicHNldWRvRWxlbWVudHMiLCBi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVudCwgYXV0aG9yT25seSkpOwogCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3VycmVudFN0eWxlID0gcmVzdWx0OwogICAgIEVsZW1l
bnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgd2hpbGUg
KHBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyZW50
U3R5bGUgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBjdXJyZW50U3R5bGUt
PnNldCgicGFyZW50IiwgcGFyZW50U3R5bGUpOworICAgICAgICBjdXJyZW50U3R5bGUtPnNldE9i
amVjdCgicGFyZW50IiwgcGFyZW50U3R5bGUpOwogICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+
c3R5bGUoKSAmJiBwYXJlbnRFbGVtZW50LT5zdHlsZSgpLT5sZW5ndGgoKSkKLSAgICAgICAgICAg
IHBhcmVudFN0eWxlLT5zZXQoImlubGluZVN0eWxlIiwgYnVpbGRPYmplY3RGb3JTdHlsZShwYXJl
bnRFbGVtZW50LT5zdHlsZSgpLCB0cnVlKSk7CisgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0
T2JqZWN0KCJpbmxpbmVTdHlsZSIsIGJ1aWxkT2JqZWN0Rm9yU3R5bGUocGFyZW50RWxlbWVudC0+
c3R5bGUoKSwgdHJ1ZSkpOwogCiAgICAgICAgIENTU1N0eWxlU2VsZWN0b3IqIHBhcmVudFNlbGVj
dG9yID0gcGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CiAg
ICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U2Vs
ZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIGF1dGhvck9ubHkpOwot
ICAgICAgICBwYXJlbnRTdHlsZS0+c2V0KCJtYXRjaGVkQ1NTUnVsZXMiLCBidWlsZEFycmF5Rm9y
Q1NTUnVsZXMocGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLCBwYXJlbnRNYXRjaGVkUnVs
ZXMuZ2V0KCkpKTsKKyAgICAgICAgcGFyZW50U3R5bGUtPnNldEFycmF5KCJtYXRjaGVkQ1NTUnVs
ZXMiLCBidWlsZEFycmF5Rm9yQ1NTUnVsZXMocGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgp
LCBwYXJlbnRNYXRjaGVkUnVsZXMuZ2V0KCkpKTsKIAogICAgICAgICBwYXJlbnRFbGVtZW50ID0g
cGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICBjdXJyZW50U3R5bGUgPSBw
YXJlbnRTdHlsZTsKQEAgLTEwMjEsNyArMTAyMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEFsbFN0eWxlcyhSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBzdHlsZXMpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgICAg
ICBTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gbGlzdC0+aXRlbShpKTsKICAgICAgICAgICAgIGlm
IChzdHlsZVNoZWV0LT5pc0NTU1N0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgICAgICAoKnN0eWxl
cyktPnB1c2goYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCgqaXQpLmdldCgpLCBzdGF0aWNfY2Fz
dDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCkpKTsKKyAgICAgICAgICAgICAgICAoKnN0eWxl
cyktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCgqaXQpLmdldCgpLCBzdGF0
aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCkpKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTEwNDQsOSArMTA0NCw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFJ1bGVS
YW5nZXMobG9uZyBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qCiAgICAgICAg
IGZvciAoSGFzaE1hcDxsb25nLCBTb3VyY2VSYW5nZT46Oml0ZXJhdG9yIGl0ID0gcnVsZVJhbmdl
cy5iZWdpbigpOyBpdCAhPSBydWxlUmFuZ2VzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICBp
ZiAoaXQtPnNlY29uZC5zZWNvbmQpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBydWxlUmFuZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgICAgIHJlc3VsdC0+c2V0KFN0cmluZzo6bnVtYmVyKGl0LT5maXJzdCkudXRmOCgpLmRhdGEo
KSwgcnVsZVJhbmdlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnNldE9iamVjdChTdHJpbmc6
Om51bWJlcihpdC0+Zmlyc3QpLnV0ZjgoKS5kYXRhKCksIHJ1bGVSYW5nZSk7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYm9keVJhbmdlID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKLSAgICAgICAgICAgICAgICBydWxlUmFuZ2UtPnNldCgiYm9keVJhbmdlIiwg
Ym9keVJhbmdlKTsKKyAgICAgICAgICAgICAgICBydWxlUmFuZ2UtPnNldE9iamVjdCgiYm9keVJh
bmdlIiwgYm9keVJhbmdlKTsKICAgICAgICAgICAgICAgICBib2R5UmFuZ2UtPnNldE51bWJlcigi
c3RhcnQiLCBpdC0+c2Vjb25kLmZpcnN0KTsKICAgICAgICAgICAgICAgICBib2R5UmFuZ2UtPnNl
dE51bWJlcigiZW5kIiwgaXQtPnNlY29uZC5zZWNvbmQpOwogICAgICAgICAgICAgfQpAQCAtMTA4
NSw3ICsxMDg1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZVN0eWxlcyhFbGUKICAgICAgICAgQXR0cmlidXRl
KiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBpZiAo
YXR0cmlidXRlLT5zdHlsZSgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgYXR0cmlidXRlTmFtZSA9
IGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCk7Ci0gICAgICAgICAgICBzdHlsZUF0dHJpYnV0ZXMtPnNl
dChhdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCksIGJ1aWxkT2JqZWN0Rm9yU3R5bGUoYXR0cmli
dXRlLT5zdHlsZSgpLCB0cnVlKSk7CisgICAgICAgICAgICBzdHlsZUF0dHJpYnV0ZXMtPnNldE9i
amVjdChhdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCksIGJ1aWxkT2JqZWN0Rm9yU3R5bGUoYXR0
cmlidXRlLT5zdHlsZSgpLCB0cnVlKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHN0
eWxlQXR0cmlidXRlczsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ1NTUnVsZXMoRG9jdW1lbnQq
IG93CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbWF0Y2hlZFJ1bGVzICYmIGkgPCBtYXRjaGVk
UnVsZXMtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgQ1NTUnVsZSogcnVsZSA9IG1hdGNoZWRS
dWxlcy0+aXRlbShpKTsKICAgICAgICAgaWYgKHJ1bGUtPnR5cGUoKSA9PSBDU1NSdWxlOjpTVFlM
RV9SVUxFKQotICAgICAgICAgICAgbWF0Y2hlZENTU1J1bGVzLT5wdXNoKGJ1aWxkT2JqZWN0Rm9y
UnVsZShvd25lckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSkpOwor
ICAgICAgICAgICAgbWF0Y2hlZENTU1J1bGVzLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yUnVs
ZShvd25lckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSkpOwogICAg
IH0KICAgICByZXR1cm4gbWF0Y2hlZENTU1J1bGVzLnJlbGVhc2UoKTsKIH0KQEAgLTExMTMsOCAr
MTExMyw4IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoRWxlbWVuCiAgICAgICAgIGlmIChtYXRjaGVkUnVs
ZXMgJiYgbWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcHNldWRvU3R5bGVzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIHBzZXVkb1N0eWxlcy0+c2V0TnVtYmVyKCJwc2V1ZG9JZCIsIHN0YXRpY19jYXN0
PGludD4ocHNldWRvSWQpKTsKLSAgICAgICAgICAgIHBzZXVkb1N0eWxlcy0+c2V0KCJydWxlcyIs
IGJ1aWxkQXJyYXlGb3JDU1NSdWxlcyhlbGVtZW50LT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRS
dWxlcy5nZXQoKSkpOwotICAgICAgICAgICAgcmVzdWx0LT5wdXNoKHBzZXVkb1N0eWxlcy5yZWxl
YXNlKCkpOworICAgICAgICAgICAgcHNldWRvU3R5bGVzLT5zZXRBcnJheSgicnVsZXMiLCBidWls
ZEFycmF5Rm9yQ1NTUnVsZXMoZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLCBtYXRjaGVkUnVsZXMu
Z2V0KCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaE9iamVjdChwc2V1ZG9TdHlsZXMucmVs
ZWFzZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
QEAgLTEzMDksNyArMTMwOSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhCiAKICAgICAgICAg
RGlzYWJsZWRTdHlsZURlY2xhcmF0aW9uKiBkaXNhYmxlZFN0eWxlID0gY3NzU3RvcmUoKS0+ZGlz
YWJsZWRTdHlsZUZvcklkKHN0eWxlSWQsIGZhbHNlKTsKICAgICAgICAgaWYgKGRpc2FibGVkU3R5
bGUpCi0gICAgICAgICAgICByZXN1bHQtPnNldCgiZGlzYWJsZWQiLCBidWlsZEFycmF5Rm9yRGlz
YWJsZWRTdHlsZVByb3BlcnRpZXMoZGlzYWJsZWRTdHlsZSkpOworICAgICAgICAgICAgcmVzdWx0
LT5zZXRBcnJheSgiZGlzYWJsZWQiLCBidWlsZEFycmF5Rm9yRGlzYWJsZWRTdHlsZVByb3BlcnRp
ZXMoZGlzYWJsZWRTdHlsZSkpOwogICAgIH0KICAgICByZXN1bHQtPnNldFN0cmluZygid2lkdGgi
LCBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKSk7CiAgICAgcmVzdWx0LT5zZXRTdHJp
bmcoImhlaWdodCIsIHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJoZWlnaHQiKSk7CkBAIC0xMzM2
LDEwICsxMzM2LDEwIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBvcHVsYXRlT2JqZWN0V2l0
aFN0eWxlUHJvcGVydGllcyhDU1NTdHlsZURlY2xhcmF0aW9uKiBzCiAgICAgICAgICAgICBzaG9y
dGhhbmRWYWx1ZXMtPnNldFN0cmluZyhzaG9ydGhhbmQsIHNob3J0aGFuZFZhbHVlKHN0eWxlLCBz
aG9ydGhhbmQpKTsKICAgICAgICAgfQogICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJ2YWx1
ZSIsIHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpKTsKLSAgICAgICAgcHJvcGVydGllcy0+
cHVzaChwcm9wZXJ0eS5yZWxlYXNlKCkpOworICAgICAgICBwcm9wZXJ0aWVzLT5wdXNoT2JqZWN0
KHByb3BlcnR5LnJlbGVhc2UoKSk7CiAgICAgfQotICAgIHJlc3VsdC0+c2V0KCJwcm9wZXJ0aWVz
IiwgcHJvcGVydGllcyk7Ci0gICAgcmVzdWx0LT5zZXQoInNob3J0aGFuZFZhbHVlcyIsIHNob3J0
aGFuZFZhbHVlcyk7CisgICAgcmVzdWx0LT5zZXRBcnJheSgicHJvcGVydGllcyIsIHByb3BlcnRp
ZXMpOworICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJzaG9ydGhhbmRWYWx1ZXMiLCBzaG9ydGhhbmRW
YWx1ZXMpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRBcnJheUZvckRpc2FibGVkU3R5bGVQcm9wZXJ0aWVzKERpc2FibGVkU3R5bGVEZWNs
YXJhdGlvbiogZGVjbGFyYXRpb24pCkBAIC0xMzUwLDcgKzEzNTAsNyBAQCBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckRpc2FibGVkU3R5
bGVQcm9wZXJ0aQogICAgICAgICBwcm9wZXJ0eS0+c2V0U3RyaW5nKCJuYW1lIiwgaXQtPmZpcnN0
KTsKICAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygidmFsdWUiLCBpdC0+c2Vjb25kLmZpcnN0
KTsKICAgICAgICAgcHJvcGVydHktPnNldFN0cmluZygicHJpb3JpdHkiLCBpdC0+c2Vjb25kLnNl
Y29uZCk7Ci0gICAgICAgIHByb3BlcnRpZXMtPnB1c2gocHJvcGVydHkucmVsZWFzZSgpKTsKKyAg
ICAgICAgcHJvcGVydGllcy0+cHVzaE9iamVjdChwcm9wZXJ0eS5yZWxlYXNlKCkpOwogICAgIH0K
ICAgICByZXR1cm4gcHJvcGVydGllcy5yZWxlYXNlKCk7CiB9CkBAIC0xMzcwLDEwICsxMzcwLDEw
IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JTdHlsZVNoZWV0KERvY3VtZW50CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjc3NSdWxlTGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgQ1NTUnVsZSog
cnVsZSA9IGNzc1J1bGVMaXN0LT5pdGVtKGkpOwogICAgICAgICAgICAgaWYgKHJ1bGUtPmlzU3R5
bGVSdWxlKCkpCi0gICAgICAgICAgICAgICAgY3NzUnVsZXMtPnB1c2goYnVpbGRPYmplY3RGb3JS
dWxlKG93bmVyRG9jdW1lbnQsIHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpKSk7Cisg
ICAgICAgICAgICAgICAgY3NzUnVsZXMtPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JSdWxlKG93
bmVyRG9jdW1lbnQsIHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpKSk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgcmVzdWx0LT5zZXQoImNzc1J1bGVzIiwgY3NzUnVsZXMucmVsZWFzZSgp
KTsKKyAgICByZXN1bHQtPnNldEFycmF5KCJjc3NSdWxlcyIsIGNzc1J1bGVzLnJlbGVhc2UoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JSdWxlKERvY3VtZW50KiBvd25lCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHBhcmVudFN0eWxlU2hlZXRWYWx1ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS0+c2V0U3RyaW5nKCJocmVmIiwgcGFyZW50U3R5bGVT
aGVldC0+aHJlZigpKTsKICAgICAgICAgcGFyZW50U3R5bGVTaGVldFZhbHVlLT5zZXROdW1iZXIo
ImlkIiwgY3NzU3RvcmUoKS0+YmluZFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkpOwotICAg
ICAgICByZXN1bHQtPnNldCgicGFyZW50U3R5bGVTaGVldCIsIHBhcmVudFN0eWxlU2hlZXRWYWx1
ZS5yZWxlYXNlKCkpOworICAgICAgICByZXN1bHQtPnNldE9iamVjdCgicGFyZW50U3R5bGVTaGVl
dCIsIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS5yZWxlYXNlKCkpOwogICAgIH0KICAgICBib29sIGlz
VXNlckFnZW50ID0gcGFyZW50U3R5bGVTaGVldCAmJiAhcGFyZW50U3R5bGVTaGVldC0+b3duZXJO
b2RlKCkgJiYgcGFyZW50U3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKTsKICAgICBib29sIGlz
VXNlciA9IHBhcmVudFN0eWxlU2hlZXQgJiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCkg
JiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVu
dCI7CkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShEb2N1bWVudCogb3duZQogCiAgICAg
Ly8gQmluZCBlZGl0YWJsZSBzY3JpcHRzIG9ubHkuCiAgICAgYm9vbCBiaW5kID0gIWlzVXNlckFn
ZW50ICYmICFpc1VzZXI7Ci0gICAgcmVzdWx0LT5zZXQoInN0eWxlIiwgYnVpbGRPYmplY3RGb3JT
dHlsZShydWxlLT5zdHlsZSgpLCBiaW5kKSk7CisgICAgcmVzdWx0LT5zZXRPYmplY3QoInN0eWxl
IiwgYnVpbGRPYmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgpLCBiaW5kKSk7CiAKICAgICBpZiAo
YmluZCkKICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoImlkIiwgY3NzU3RvcmUoKS0+YmluZFJ1
bGUocnVsZSkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCBiNzBkZGJmLi5lMWMwZGMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2F2ZUJyZWFrcG9pbnRzKCkKICAgICAgICAgaWYgKGl0LT5zZWNvbmQuaXNF
bXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJyZWFrcG9pbnRzRm9yVVJMID0gU2NyaXB0QnJlYWtwb2ludDo6aW5zcGVjdG9yT2Jq
ZWN0RnJvbVNvdXJjZUJyZWFrcG9pbnRzKGl0LT5zZWNvbmQpOwotICAgICAgICBicmVha3BvaW50
cy0+c2V0KGl0LT5maXJzdCwgYnJlYWtwb2ludHNGb3JVUkwpOworICAgICAgICBicmVha3BvaW50
cy0+c2V0T2JqZWN0KGl0LT5maXJzdCwgYnJlYWtwb2ludHNGb3JVUkwpOwogICAgIH0KICAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPnNhdmVCcmVha3BvaW50cyhicmVha3BvaW50cyk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggOTI1OWQ3OS4uYTJiNTVi
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMTg5LDcgKzE4
OSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChSZW1vdGVJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmlu
ZygicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRT
dHJpbmcoImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50
KCkpOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXF1ZXN0SGVhZGVycyA9IGJ1
aWxkSGVhZGVyc09iamVjdChtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOwotICAgICAgICBqc29uT2Jq
ZWN0LT5zZXQoInJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOworICAgICAgICBqc29u
T2JqZWN0LT5zZXRPYmplY3QoInJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwogICAg
ICAgICBqc29uT2JqZWN0LT5zZXRCb29sKCJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNl
KTsKICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJyZXF1ZXN0TWV0aG9kIiwgbV9yZXF1
ZXN0TWV0aG9kKTsKICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJyZXF1ZXN0Rm9ybURh
dGEiLCBtX3JlcXVlc3RGb3JtRGF0YSk7CkBAIC0yMDMsMTIgKzIwMywxMiBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQogICAgICAgICBqc29uT2JqZWN0LT5zZXROdW1iZXIoInN0YXR1c0NvZGUiLCBt
X3Jlc3BvbnNlU3RhdHVzQ29kZSk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygic3Rh
dHVzVGV4dCIsIG1fcmVzcG9uc2VTdGF0dXNUZXh0KTsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzcG9uc2VIZWFkZXJzID0gYnVpbGRIZWFkZXJzT2JqZWN0KG1fcmVzcG9uc2VI
ZWFkZXJGaWVsZHMpOwotICAgICAgICBqc29uT2JqZWN0LT5zZXQoInJlc3BvbnNlSGVhZGVycyIs
IHJlc3BvbnNlSGVhZGVycyk7CisgICAgICAgIGpzb25PYmplY3QtPnNldE9iamVjdCgicmVzcG9u
c2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKICAgICAgICAganNvbk9iamVjdC0+c2V0TnVt
YmVyKCJjb25uZWN0aW9uSUQiLCBtX2Nvbm5lY3Rpb25JRCk7CiAgICAgICAgIGpzb25PYmplY3Qt
PnNldEJvb2woImNvbm5lY3Rpb25SZXVzZWQiLCBtX2Nvbm5lY3Rpb25SZXVzZWQpOwogICAgICAg
ICBqc29uT2JqZWN0LT5zZXRCb29sKCJjYWNoZWQiLCBtX2NhY2hlZCk7CiAgICAgICAgIGlmICht
X2xvYWRUaW1pbmcgJiYgIW1fY2FjaGVkKQotICAgICAgICAgICAganNvbk9iamVjdC0+c2V0KCJ0
aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZyhtX2xvYWRUaW1pbmcuZ2V0KCkpKTsKKyAgICAg
ICAgICAgIGpzb25PYmplY3QtPnNldE9iamVjdCgidGltaW5nIiwgYnVpbGRPYmplY3RGb3JUaW1p
bmcobV9sb2FkVGltaW5nLmdldCgpKSk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldEJvb2woImRp
ZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3RvcmFnZUFnZW50LmNwcAppbmRleCBhZDM5NDM0Li42NmQzMzcyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5jcHAKQEAgLTY2LDEwICs2NiwxMCBA
QCB2b2lkIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKEluc3BlY3RvclN0b3JhZ2VBZ2VudCogYWdl
bnQsIGxvbmcgdHJhbnNhY3Rpb25JZCwgUwogCiBjbGFzcyBTdGF0ZW1lbnRDYWxsYmFjayA6IHB1
YmxpYyBTUUxTdGF0ZW1lbnRDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkNCi0gICAgew0KLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdGF0ZW1lbnRDYWxsYmFjayh0cmFuc2FjdGlvbklkLCBhZ2VudCkpOw0K
LSAgICB9DQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRlbWVudENhbGxiYWNrPiBjcmVhdGUo
bG9uZyB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdl
bnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRlbWVudENhbGxiYWNr
KHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7CisgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50
Q2FsbGJhY2soKSB7IH0KIApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
d2l0Y2ggKHZhbHVlLnR5cGUoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0
cmluZ1ZhbHVlOiB2YWx1ZXMtPnB1c2hTdHJpbmcodmFsdWUuc3RyaW5nKCkpOyBicmVhazsKICAg
ICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZTogdmFsdWVzLT5wdXNoTnVt
YmVyKHZhbHVlLm51bWJlcigpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTUUxWYWx1
ZTo6TnVsbFZhbHVlOiB2YWx1ZXMtPnB1c2goSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7IGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5wdXNo
VmFsdWUoSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7IGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIG1fYWdlbnQtPmZyb250ZW5kKCktPnNxbFRyYW5zYWN0aW9uU3VjY2Vl
ZGVkKG1fdHJhbnNhY3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcyk7CkBAIC0xMDksMTAgKzEw
OSwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrIDogcHVibGlj
IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5zYWN0aW9uSWQsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkNCi0gICAgew0KLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKHRyYW5zYWN0aW9uSWQs
IGFnZW50KSk7DQotICAgIH0NCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGVtZW50RXJyb3JD
YWxsYmFjaz4gY3JlYXRlKGxvbmcgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JT
dG9yYWdlQWdlbnQ+IGFnZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrKHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7CisgICAgfQogCiAg
ICAgdmlydHVhbCB+U3RhdGVtZW50RXJyb3JDYWxsYmFjaygpIHsgfQogCkBAIC0xMzIsMTAgKzEz
MiwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBUcmFuc2FjdGlvbkNhbGxiYWNrIDogcHVibGljIFNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRy
YW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgbG9u
ZyB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gYWdlbnQp
DQotICAgIHsNCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25DYWxsYmFj
ayhzcWxTdGF0ZW1lbnQsIHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7DQotICAgIH0NCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VHJhbnNhY3Rpb25DYWxsYmFjaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
c3FsU3RhdGVtZW50LCBsb25nIHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3Rv
cmFnZUFnZW50PiBhZ2VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJh
bnNhY3Rpb25DYWxsYmFjayhzcWxTdGF0ZW1lbnQsIHRyYW5zYWN0aW9uSWQsIGFnZW50KSk7Cisg
ICAgfQogCiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25DYWxsYmFjaygpIHsgfQogCkBAIC0xNjMs
MTAgKzE2MywxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2sg
OiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5z
YWN0aW9uSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkNCi0gICAg
ew0KLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2so
dHJhbnNhY3Rpb25JZCwgYWdlbnQpKTsNCi0gICAgfQ0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShsb25nIHRyYW5zYWN0aW9uSWQsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yU3RvcmFnZUFnZW50PiBhZ2VudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKHRyYW5zYWN0aW9uSWQsIGFn
ZW50KSk7CisgICAgfQogCiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKCkg
eyB9CiAKQEAgLTE4MywyMCArMTgzLDIwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3Rv
clN0b3JhZ2VBZ2VudD4gbV9hZ2VudDsKIH07CiAKLWNsYXNzIFRyYW5zYWN0aW9uU3VjY2Vzc0Nh
bGxiYWNrIDogcHVibGljIFZvaWRDYWxsYmFjayB7DQotcHVibGljOg0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaz4gY3JlYXRlKCkNCi0gICAgew0KLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpKTsN
Ci0gICAgfQ0KLQ0KLSAgICB2aXJ0dWFsIH5UcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpIHsg
fQ0KLQ0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoKSB7IH0NCi0NCi1wcml2YXRlOg0K
LSAgICBUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpIHsgfQ0KLX07DQorY2xhc3MgVHJhbnNh
Y3Rpb25TdWNjZXNzQ2FsbGJhY2sgOiBwdWJsaWMgVm9pZENhbGxiYWNrIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaz4gY3JlYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhbnNhY3Rpb25TdWNjZXNzQ2Fs
bGJhY2soKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJh
Y2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudCgpIHsgfQorCitwcml2YXRl
OgorICAgIFRyYW5zYWN0aW9uU3VjY2Vzc0NhbGxiYWNrKCkgeyB9Cit9OwogCiB9IC8vIG5hbWVz
cGFjZQogCkBAIC0yMTIsNyArMjEyLDcgQEAgSW5zcGVjdG9yU3RvcmFnZUFnZW50Ojp+SW5zcGVj
dG9yU3RvcmFnZUFnZW50KCkKIGxvbmcgSW5zcGVjdG9yU3RvcmFnZUFnZW50OjpleGVjdXRlU1FM
KERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBxdWVyeSkKIHsKICAgICBsb25nIHRy
YW5zYWN0aW9uSWQgPSArK2xhc3RUcmFuc2FjdGlvbklkOwotICAgIFJlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjayhUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUocXVlcnks
IHRyYW5zYWN0aW9uSWQsIHRoaXMpKTsNCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrKFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZShxdWVyeSwgdHJhbnNhY3Rp
b25JZCwgdGhpcykpOwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2soVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUodHJhbnNhY3Rpb25J
ZCwgdGhpcykpOwogICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayhUcmFu
c2FjdGlvblN1Y2Nlc3NDYWxsYmFjazo6Y3JlYXRlKCkpOwogICAgIGRhdGFiYXNlLT50cmFuc2Fj
dGlvbihjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBzdWNjZXNz
Q2FsbGJhY2sucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKaW5kZXggYjVjZmY2OC4uYWE0MmE1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoR0NFdmVudFJlY29yZHMoKQogICAgIG1fZ2NFdmVudHMu
Y2xlYXIoKTsKICAgICBmb3IgKEdDRXZlbnRzOjppdGVyYXRvciBpID0gZXZlbnRzLmJlZ2luKCk7
IGkgIT0gZXZlbnRzLmVuZCgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKGkt
PnN0YXJ0VGltZSk7Ci0gICAgICAgIHJlY29yZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVHQ0V2ZW50RGF0YShpLT5jb2xsZWN0ZWRCeXRlcykpOworICAgICAgICBy
ZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR0NF
dmVudERhdGEoaS0+Y29sbGVjdGVkQnl0ZXMpKTsKICAgICAgICAgcmVjb3JkLT5zZXROdW1iZXIo
ImVuZFRpbWUiLCBpLT5lbmRUaW1lKTsKICAgICAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShyZWNv
cmQucmVsZWFzZSgpLCBHQ0V2ZW50VGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICB9CkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRJbnN0YWxsVGltZXIo
aW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmcKIHsKICAgICBwdXNoR0NFdmVudFJl
Y29yZHMoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwot
ICAgIHJlY29yZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1l
ckluc3RhbGxEYXRhKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpKTsKKyAgICByZWNvcmQt
PnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZXJJbnN0
YWxsRGF0YSh0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KSk7CiAgICAgYWRkUmVjb3JkVG9U
aW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBUaW1lckluc3RhbGxUaW1lbGluZVJlY29yZFR5cGUp
OwogfQogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRSZW1vdmVUaW1lcihpbnQgdGltZXJJZCkKIHsKICAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIHJlY29y
ZC0+c2V0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJE
YXRhKHRpbWVySWQpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YSh0aW1lcklkKSk7CiAgICAgYWRkUmVj
b3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBUaW1lclJlbW92ZVRpbWVsaW5lUmVjb3Jk
VHlwZSk7CiB9CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogewogICAg
IHB1c2hHQ0V2ZW50UmVjb3JkcygpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29y
ZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJl
bnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5zZXQoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0YSh1cmwpKTsKKyAgICByZWNvcmQt
PnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlU2NoZWR1bGVS
ZXNvdXJjZVJlcXVlc3REYXRhKHVybCkpOwogICAgIHJlY29yZC0+c2V0TnVtYmVyKCJ0eXBlIiwg
U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIGFkZFJlY29y
ZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1l
bGluZVJlY29yZFR5cGUpOwogfQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBiCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVj
b3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICByZWNvcmQtPnNldCgiZGF0YSIsIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UsIHJlcXVlc3QpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0
YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEo
aWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UsIHJlcXVlc3QpKTsKICAgICByZWNvcmQtPnNldE51
bWJlcigidHlwZSIsIFJlc291cmNlU2VuZFJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUpOwogICAg
IHNldEhlYXBTaXplU3RhdGlzdGljKHJlY29yZC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZC0+YWRk
UmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAgICByZWNvcmQtPnNl
dCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRh
KGlkZW50aWZpZXIsIGRpZEZhaWwpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKGlkZW50aWZpZXIs
IGRpZEZhaWwpKTsKICAgICByZWNvcmQtPnNldE51bWJlcigidHlwZSIsIFJlc291cmNlRmluaXNo
VGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhyZWNvcmQuZ2V0
KCkpOwogICAgIG1fZnJvbnRlbmQtPmFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2Uo
KSk7CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRN
YXJrVGltZWxpbmUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHB1c2hHQ0V2ZW50UmVj
b3JkcygpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0g
ICAgcmVjb3JkLT5zZXQoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZU1hcmtU
aW1lbGluZURhdGEobWVzc2FnZSkpOworICAgIHJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVNYXJrVGltZWxpbmVEYXRhKG1lc3NhZ2UpKTsKICAg
ICBhZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5yZWxlYXNlKCksIE1hcmtUaW1lbGluZVJlY29y
ZFR5cGUpOwogfQogCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjphZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnAK
ICAgICAgICAgbV9mcm9udGVuZC0+YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgp
KTsKICAgICBlbHNlIHsKICAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSBwYXJlbnQgPSBtX3Jl
Y29yZFN0YWNrLmxhc3QoKTsKLSAgICAgICAgcGFyZW50LmNoaWxkcmVuLT5wdXNoKHJlY29yZC5y
ZWxlYXNlKCkpOworICAgICAgICBwYXJlbnQuY2hpbGRyZW4tPnB1c2hPYmplY3QocmVjb3JkLnJl
bGVhc2UoKSk7CiAgICAgfQogfQogCkBAIC0zMTcsOCArMzE3LDggQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBl
IHR5cGUpCiAgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkgZW50cnkgPSBtX3JlY29yZFN0YWNr
Lmxhc3QoKTsKICAgICAgICAgbV9yZWNvcmRTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIEFT
U0VSVChlbnRyeS50eXBlID09IHR5cGUpOwotICAgICAgICBlbnRyeS5yZWNvcmQtPnNldCgiZGF0
YSIsIGVudHJ5LmRhdGEpOwotICAgICAgICBlbnRyeS5yZWNvcmQtPnNldCgiY2hpbGRyZW4iLCBl
bnRyeS5jaGlsZHJlbik7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwg
ZW50cnkuZGF0YSk7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0QXJyYXkoImNoaWxkcmVuIiwg
ZW50cnkuY2hpbGRyZW4pOwogICAgICAgICBlbnRyeS5yZWNvcmQtPnNldE51bWJlcigiZW5kVGlt
ZSIsIFdURjo6Y3VycmVudFRpbWVNUygpKTsKICAgICAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShl
bnRyeS5yZWNvcmQsIHR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwCmluZGV4IGRhZDg0YWMuLmE3YzQzYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGJ1
aWxkVmFsdWUoY29uc3QgVUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zCiAgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGFycmF5Tm9kZSA9IGJ1aWxkVmFsdWUoc3Rh
cnQsIGVuZCwgJnRva2VuRW5kLCBkZXB0aCArIDEpOwogICAgICAgICAgICAgaWYgKCFhcnJheU5v
ZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaChh
cnJheU5vZGUpOworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZShhcnJheU5vZGUpOwogCiAg
ICAgICAgICAgICAvLyBBZnRlciBhIGxpc3QgdmFsdWUsIHdlIGV4cGVjdCBhIGNvbW1hIG9yIHRo
ZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgICAgICAgICBzdGFydCA9IHRva2VuRW5kOwpAQCAtNDA2
LDcgKzQwNiw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGJ1aWxkVmFsdWUoY29uc3Qg
VUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zCiAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQs
IGRlcHRoICsgMSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICAgICAgb2JqZWN0LT5zZXQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAg
ICBvYmplY3QtPnNldFZhbHVlKGtleSwgdmFsdWUpOwogICAgICAgICAgICAgc3RhcnQgPSB0b2tl
bkVuZDsKIAogICAgICAgICAgICAgLy8gQWZ0ZXIgYSBrZXkvdmFsdWUgcGFpciwgd2UgZXhwZWN0
IGEgY29tbWEgb3IgdGhlIGVuZCBvZiB0aGUKQEAgLTUwNCw2ICs1MDQsMjIgQEAgYm9vbCBJbnNw
ZWN0b3JWYWx1ZTo6YXNTdHJpbmcoU3RyaW5nKikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
b3V0cHV0KQoreworICAgICpvdXRwdXQgPSB0aGlzOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIEluc3BlY3RvclZhbHVlOjphc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiopCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3RvclZhbHVlOjphc0FycmF5KFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclZhbHVlOjphc09iamVjdCgpCiB7CiAgICAg
cmV0dXJuIDA7CkBAIC02MDYsNiArNjIyLDEyIEBAIHZvaWQgSW5zcGVjdG9yU3RyaW5nOjp3cml0
ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIGRvdWJsZVF1b3RlU3RyaW5n
KG1fc3RyaW5nVmFsdWUsIG91dHB1dCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yT2JqZWN0Ojphc09i
amVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KQoreworICAgICpvdXRwdXQgPSB0
aGlzOworICAgIHJldHVybiB0cnVlOworfQorCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
SW5zcGVjdG9yT2JqZWN0Ojphc09iamVjdCgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC02NzQs
NiArNjk2LDEyIEBAIHZvaWQgSW5zcGVjdG9yT2JqZWN0Ojp3cml0ZUpTT04oVmVjdG9yPFVDaGFy
Piogb3V0cHV0KSBjb25zdAogICAgIG91dHB1dC0+YXBwZW5kKCd9Jyk7CiB9CiAKK2Jvb2wgSW5z
cGVjdG9yQXJyYXk6OmFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KQorewor
ICAgICpvdXRwdXQgPSB0aGlzOworICAgIHJldHVybiB0cnVlOworfQorCiBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBJbnNwZWN0b3JBcnJheTo6YXNBcnJheSgpCiB7CiAgICAgcmV0dXJuIHRo
aXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IGU1MjMwMzIuLjRiYzM2ZjIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC03Myw2ICs3Myw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgaW50KiBvdXRwdXQpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiogb3V0cHV0KTsKKyAg
ICB2aXJ0dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCk7
CisgICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBhc09iamVjdCgpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXNBcnJheSgpOwogCkBAIC0x
NjMsMTIgKzE2NiwxNSBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JPYmplY3QoKSB7
IH0KIAorICAgIHZpcnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
b3V0cHV0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBhc09iamVj
dCgpOwogCiAgICAgdm9pZCBzZXRCb29sKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCk7CiAgICAg
dm9pZCBzZXROdW1iZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUpOwogICAgIHZvaWQgc2V0
U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXQo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPik7CisgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KTsKKyAgICB2b2lkIHNldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Pik7CisgICAgdm9pZCBzZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KTsKIAogICAgIGJvb2wgZ2V0Qm9vbChjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wqIG91dHB1dCkgY29uc3Q7CiAgICAgYm9vbCBnZXROdW1iZXIoY29uc3Qg
U3RyaW5nJiBuYW1lLCBkb3VibGUqIG91dHB1dCkgY29uc3Q7CkBAIC0xOTgsMTIgKzIwNCwxNSBA
QCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JBcnJheSgpIHsgfQogCisgICAgdmlydHVh
bCBib29sIGFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFzQXJyYXkoKTsKIAogICAgIHZvaWQgcHVz
aEJvb2woYm9vbCk7CiAgICAgdm9pZCBwdXNoTnVtYmVyKGRvdWJsZSk7CiAgICAgdm9pZCBwdXNo
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcHVzaChQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPik7CisgICAgdm9pZCBwdXNoVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4p
OworICAgIHZvaWQgcHVzaE9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOworICAg
IHZvaWQgcHVzaEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KTsKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgpOyB9CiAKICAgICBQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBnZXQoc2l6ZV90IGluZGV4KTsKQEAgLTIxNywyMCArMjI2LDMy
IEBAIHByaXZhdGU6CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0Qm9vbChjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgdmFsdWUpCiB7Ci0gICAgc2V0KG5hbWUsIEluc3BlY3RvckJh
c2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOworICAgIHNldFZhbHVlKG5hbWUsIEluc3BlY3RvckJh
c2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmpl
Y3Q6OnNldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBz
ZXQobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgc2V0VmFs
dWUobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXQobmFtZSwgSW5zcGVjdG9yU3RyaW5nOjpjcmVh
dGUodmFsdWUpKTsKKyAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2
YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldChjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQoraW5saW5lIHZvaWQg
SW5zcGVjdG9yT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQoreworICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVl
KS5zZWNvbmQpCisgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOworfQorCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JPYmplY3Q6OnNldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKK3sKKyAgICBpZiAobV9kYXRhLnNldChuYW1lLCB2
YWx1ZSkuc2Vjb25kKQorICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKK30KKworaW5saW5l
IHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAgIGlmIChtX2RhdGEuc2V0KG5hbWUs
IHZhbHVlKS5zZWNvbmQpCiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwpAQCAtMjUxLDcg
KzI3MiwxNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheTo6cHVzaFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUo
dmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXk6OnB1c2goUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheTo6cHVz
aFZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQoreworICAgIG1fZGF0YS5h
cHBlbmQodmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheTo6cHVzaE9iamVj
dChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCit7CisgICAgbV9kYXRhLmFwcGVu
ZCh2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3RvckFycmF5OjpwdXNoQXJyYXkoUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiB7CiAgICAgbV9kYXRhLmFwcGVuZCh2YWx1
ZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwCmluZGV4IGNlMGQxOGEu
LjI0NDAxZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQu
Y3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBTY3JpcHRCcmVha3BvaW50Ojpp
bnNwZWN0b3JPYmplY3RGcm9tU291cmNlQnJlYWtwb2luCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGJyZWFrcG9pbnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBicmVha3BvaW50LT5zZXRCb29sKCJlbmFibGVkIiwgaXQtPnNlY29uZC5lbmFibGVkKTsKICAg
ICAgICAgYnJlYWtwb2ludC0+c2V0U3RyaW5nKCJjb25kaXRpb24iLCBpdC0+c2Vjb25kLmNvbmRp
dGlvbik7Ci0gICAgICAgIGJyZWFrcG9pbnRzLT5zZXQoU3RyaW5nOjpudW1iZXIoaXQtPmZpcnN0
KSwgYnJlYWtwb2ludCk7CisgICAgICAgIGJyZWFrcG9pbnRzLT5zZXRPYmplY3QoU3RyaW5nOjpu
dW1iZXIoaXQtPmZpcnN0KSwgYnJlYWtwb2ludCk7CiAgICAgfQogICAgIHJldHVybiBicmVha3Bv
aW50cy5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGlu
ZVJlY29yZEZhY3RvcnkuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmNwcAppbmRleCBhZDlmZGVjLi5lMWMyYmJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChk
b3VibGUgc3QKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gc3RhY2tUcmFjZSA9IEluc3Bl
Y3RvckFycmF5OjpjcmVhdGUoKTsKICAgICBpZiAoU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNl
KDUsIHN0YWNrVHJhY2UpKQotICAgICAgICByZWNvcmQtPnNldCgic3RhY2tUcmFjZSIsIHN0YWNr
VHJhY2UpOworICAgICAgICByZWNvcmQtPnNldEFycmF5KCJzdGFja1RyYWNlIiwgc3RhY2tUcmFj
ZSk7CiAgICAgcmV0dXJuIHJlY29yZC5yZWxlYXNlKCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>