<?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>39937</bug_id>
          
          <creation_ts>2010-05-30 15:34:12 -0700</creation_ts>
          <short_desc>REGRESSION(r60418): &quot;Broke the Apple Windows, Qt, and Chromium build bots&quot; (Requested by dydx on #webkit).</short_desc>
          <delta_ts>2010-05-30 20:43:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39916</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232224</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-30 15:34:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60418 broke the build:
&quot;Broke the Apple Windows, Qt, and Chromium build bots&quot; (Requested by dydx on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232225</commentid>
    <comment_count>1</comment_count>
      <attachid>57426</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-30 15:34:23 -0700</bug_when>
    <thetext>Created attachment 57426
ROLLOUT of r60418

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232227</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-05-30 15:37:16 -0700</bug_when>
    <thetext>I prepared this rollout in the meantime while I take a look at the stdio on the bots to determine if we can fix this online.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232241</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-30 20:43:38 -0700</bug_when>
    <thetext>Sounds like dan fixed this issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57426</attachid>
            <date>2010-05-30 15:34:23 -0700</date>
            <delta_ts>2010-05-30 20:43:56 -0700</delta_ts>
            <desc>ROLLOUT of r60418</desc>
            <filename>bug-39937-20100530223421.patch</filename>
            <type>text/plain</type>
            <size>182532</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2JhMjczZDE3MjI3MGYzMGNkM2I0MWVkYmFkZTRjOTBiNDYxYmQxMi4uN2JkMWYxMjRhMjIwMjZh
MzU1ODE3NThlYzVmODk0M2JjMGI5NWI5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDYgQEAKKzIwMTAtMDUtMzAgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDQxOC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvNjA0MTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5OTM3CisKKyAgICAgICAgIkJyb2tlIHRoZSBBcHBsZSBXaW5kb3dzLCBRdCwg
YW5kIENocm9taXVtIGJ1aWxkIGJvdHMiCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgZHlkeCBvbiAj
d2Via2l0KS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uOjpEZWxldGVCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250
cm9sbGVyOjpjcmVhdGVEZWxldGlvblVJKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUluc2VydEhvcml6b250YWxSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNlcnRJbWFnZSk6CisgICAgICAgICogZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEZWZhdWx0UGFyYWdy
YXBoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaXN0SXRlbUVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERpdkVsZW1lbnQ6OkhUTUxEaXZFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEaXZF
bGVtZW50Ojp+SFRNTERpdkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxGb250RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MRm9udEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb250RWxlbWVudDo6ZW5k
VGFnUmVxdWlyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Ojp0YWdQ
cmlvcml0eSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29sbGVjdGlvbkluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6Z2V0TmFtZWRGb3JtSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSk6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjplbmRUYWdSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Ojp0YWdQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Ojppc1RleHRGb3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc1JlYWRPbmx5Rm9ybUNvbnRyb2wp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNGb3JtQ29udHJv
bEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6fkhUTUxGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1
Ym1pdEltcGxpY2l0bHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpjcmVh
dGVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZW1vdmVGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVySW1nRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUltZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50OjpkZWZhdWx0QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6Y29sbGVjdFVuaGFuZGxlZEludmFsaWRDb250cm9scyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmFkZEVsZW1lbnRBbGlhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjplbmRUYWdSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVs
ZW1lbnQ6OnRhZ1ByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6
Y2hlY2tlZFJhZGlvQnV0dG9ucyk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQ6OkhUTUxGcmFtZVNl
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6fkhUTUxG
cmFtZVNldEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6ZW5kVGFnUmVxdWly
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6dGFnUHJpb3Jp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6cm93TGVuZ3Rocyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpjb2xMZW5ndGhzKToKKyAg
ICAgICAgKiBodG1sL0hUTUxIUkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhS
RWxlbWVudDo6SFRNTEhSRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50
Ojp+SFRNTEhSRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSFJFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50OjplbmRUYWdSZXF1aXJlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojp0YWdQcmlvcml0eSk6CisgICAgICAgICogaHRtbC9I
VE1MSGVhZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50OjpI
VE1MSGVhZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Ojp+SFRN
TEhlYWRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxIZWFkRWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Ojp0YWdQcmlvcml0eSk6CisgICAgICAgICogaHRt
bC9IVE1MSGVhZGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhlYWRpbmdF
bGVtZW50OjpIVE1MSGVhZGluZ0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEhlYWRpbmdF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50OjpIVE1MSHRtbEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEh0bWxFbGVtZW50Ojp+SFRNTEh0bWxFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxIdG1sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpIVE1MSW1hZ2VFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OmVuZFRhZ1JlcXVpcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnRhZ1ByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmNhblN0YXJ0U2VsZWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVUZW1w
b3JhcnlGb3JtRm9ySXNJbmRleCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjopOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6ZW5kVGFnUmVxdWlyZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6dGFnUHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNFbnVtZXJhdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6aXNDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OmlzSW5kZXRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpyZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1RleHRG
b3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1Bhc3N3
b3JkRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFzU3BpbkJ1
dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjYW5UcmlnZ2VySW1w
bGljaXRTdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFs
bG93c0luZGV0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
cmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6ZGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElzSW5kZXhFbGVtZW50OjpIVE1MSXNJbmRleEVsZW1lbnQp
OgorICAgICAgICAqIGh0bWwvSFRNTElzSW5kZXhFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MTElFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQ6OkhUTUxM
SUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTExhYmVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQXNMYWJlbGFi
bGVGb3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGFiZWxFbGVtZW50OjpIVE1M
TGFiZWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMYWJlbEVsZW1lbnQ6On5IVE1M
TGFiZWxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
ZWdlbmRFbGVtZW50OjpIVE1MTGVnZW5kRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGVnZW5kRWxlbWVudDo6fkhUTUxMZWdlbmRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMZWdlbmRFbGVtZW50Ojpmb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGVn
ZW5kRWxlbWVudDo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6
OmFjY2Vzc0tleUFjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5r
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjplbmRUYWdSZXF1
aXJlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnRhZ1ByaW9yaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNEaXNhYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmlzRW5hYmxlZFZpYVNjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmlzSWNvbik6CisgICAgICAgICogaHRtbC9I
VE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmhhbmRsZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmhlYWRDcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmZvcm1DcmVhdGVFcnJvckNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmNyZWF0ZUhlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBhcnNlcjo6aGFuZGxlSXNpbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFy
c2VyOjpmaW5pc2hlZCk6CisgICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4
dEFyZWFFbGVtZW50OjpyZWFkT25seSk6CisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNy
ZWF0ZUNvbnRhaW5pbmdUYWJsZSk6CisgICAgICAgICogbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudEVsZW1lbnQ6OkltYWdlRG9jdW1lbnRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50
U3RydWN0dXJlKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJF
bGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRh
aW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6Ok1lZGlh
Q29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpzdHls
ZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbElucHV0
RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbElucHV0RWxl
bWVudDo6dXBkYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50Ojp1cGRh
dGVEaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudDo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVt
ZW50OjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6
TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpN
ZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50Ojp1cGRh
dGVEaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp1cGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6dXBkYXRlRnJvbUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpbGVVcGxvYWRJbm5lckJ1dHRvbkVsZW1lbnQ6OkhU
TUxGaWxlVXBsb2FkSW5uZXJCdXR0b25FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmNyZWF0ZUNvbnRy
b2xzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6Y3JlYXRlUGFu
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmNyZWF0ZU11dGVCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmNyZWF0ZVBsYXlCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmNyZWF0ZVNlZWtCYWNrQnV0dG9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1lZGlhOjpjcmVhdGVTZWVrRm9yd2FyZEJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6Y3JlYXRlUmV3aW5kQnV0dG9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1lZGlhOjpjcmVhdGVSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjpjcmVhdGVUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6Y3JlYXRlU3RhdHVzRGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6Y3JlYXRlVGltZWxpbmVDb250YWluZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmNyZWF0ZVRpbWVsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjpjcmVhdGVWb2x1bWVTbGlkZXJDb250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmNyZWF0ZVZvbHVtZVNsaWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6Y3JlYXRlQ3VycmVudFRpbWVEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjpjcmVhdGVUaW1lUmVtYWluaW5nRGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6Y3JlYXRlRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByb2dyZXNzVmFsdWVFbGVtZW50OjpQcm9ncmVzc1ZhbHVlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJQcm9ncmVzczo6dXBkYXRlVmFsdWVQYXJ0U3RhdGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
VGh1bWJFbGVtZW50OjpTbGlkZXJUaHVtYkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2xpZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpj
cmVhdGVTdWJ0cmVlSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRy
b2xJbm5lckVsZW1lbnQ6OlRleHRDb250cm9sSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50
OjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6Om9uVXBCdXR0b24pOgorCiAyMDEwLTA1LTMwICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDVlNGM1YzY2YzU3MjIwNzBhMDIxMjQzODNmMTEzN2ZkOTgw
ZWU0M2QuLmQxZDcwYjZhYjlmODJhODA1Y2RjM2JlNzFiZTllMGU2ZjE4Njg4YzQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBUaGUgaW1wbGljaXQgPGhlYWQ+IGlzbid0IGV4
cGVjdGVkIGluIG9sZGVyIHZlcnNpb25zIG9mIE1haWwgLSA8cmRhcjovL3Byb2JsZW0vNjg2Mzc5
NT4KICAgICAgICAgICAgIGlmICghaGVhZCgpICYmIHNob3VsZENyZWF0ZUltcGxpY2l0SGVhZCh0
aGlzKSkgewotICAgICAgICAgICAgICAgIGRvY3VtZW50RWxlbWVudC0+YXBwZW5kQ2hpbGQoSFRN
TEhlYWRFbGVtZW50OjpjcmVhdGUodGhpcyksIGVjKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dEVsZW1lbnQtPmFwcGVuZENoaWxkKG5ldyBIVE1MSGVhZEVsZW1lbnQoaGVhZFRhZywgdGhpcyks
IGVjKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGRvY3VtZW50RWxlbWVudC0+YXBwZW5kQ2hpbGQoSFRNTEJvZHlFbGVtZW50OjpjcmVh
dGUodGhpcyksIGVjKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24u
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKaW5kZXggYTVhYWVhMjU0OGZi
NWU4YTE4ZmZlZjZjZTJhYjQ4YWU0NmQ3YWM1OC4uYzFiMTViNzNmZWFmNDQxMWM5ODViNTEyN2U0
YjVlYWEzMTUyYzlmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5j
cHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYs
MjcgKzM2LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKLQotaW5saW5lIERlbGV0ZUJ1dHRvbjo6RGVsZXRlQnV0dG9uKERvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCkKLXsKLX0K
LQotUGFzc1JlZlB0cjxEZWxldGVCdXR0b24+IERlbGV0ZUJ1dHRvbjo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKK0RlbGV0ZUJ1dHRvbjo6RGVsZXRlQnV0dG9uKERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IEhUTUxJbWFnZUVsZW1lbnQoSFRNTE5hbWVzOjppbWdUYWcsIGRvY3VtZW50KQog
ewotICAgIHJldHVybiBuZXcgRGVsZXRlQnV0dG9uKGRvY3VtZW50KTsKIH0KIAogdm9pZCBEZWxl
dGVCdXR0b246OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewotICAgIC8vIEZJ
WE1FOiBJcyBpdCByZWFsbHkgaW1wb3J0IHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBldmVudD8K
LSAgICAvLyBTZWVtcyBPSyB0byByZXNwb25kIHRvIGFueSBldmVudCBuYW1lZCBjbGljayBldmVu
IGlmIGl0IGRvZXMgbm90IGhhdmUgdGhlIGNvcnJlY3QgdHlwZS4KICAgICBpZiAoZXZlbnQtPmlz
TW91c2VFdmVudCgpKSB7CiAgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50KSB7CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3Io
KS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5kZWxldGVUYXJnZXQoKTsKICAgICAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZG4ndCB3ZSByZXR1cm4gaGVyZSBpbnN0ZWFkIG9mIGZhbGxpbmcgdGhyb3VnaD8KICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oIGIv
V2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oCmluZGV4IGFmNmMxZjQwNTg0NDIzNjZmYTRj
ZmUzZjVkNDY4ZTVhNDdmYWJlMjYuLmFjM2NkYWMzMjc4ZWI5YTFiMzA4MzkxNjUwOTRkZjA3NTYw
ODdlMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24uaAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsOSArMzIsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlbGV0ZUJ1dHRvbiA6IHB1YmxpYyBIVE1MSW1h
Z2VFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVCdXR0b24+
IGNyZWF0ZShEb2N1bWVudCopOwotCi1wcml2YXRlOgogICAgIERlbGV0ZUJ1dHRvbihEb2N1bWVu
dCopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBiL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAppbmRleCA0ZjUyN2FmN2Ri
MjQzZmRlZjVmNjQxNWY4YTY0NzYzZDVjMGQ0YzJkLi4yNGM4MjcwMjA2ODBiNTI0MDg1MzAxMGVi
NGQ2ZmVlYjhmNDI3MTM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG8KIAogdm9p
ZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxldGlvblVJKCkKIHsKLSAgICBSZWZQ
dHI8SFRNTERpdkVsZW1lbnQ+IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUobV90
YXJnZXQtPmRvY3VtZW50KCkpOworICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY29udGFpbmVy
ID0gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgbV90YXJnZXQtPmRvY3VtZW50KCkpOwogICAg
IGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGNvbnRhaW5lci0+aWRBdHRyaWJ1dGVOYW1lKCksIGNv
bnRhaW5lckVsZW1lbnRJZGVudGlmaWVyKTsKIAogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSA9IGNvbnRhaW5lci0+Z2V0SW5saW5lU3R5bGVEZWNsKCk7CkBAIC0yMDEsNyAr
MjAxLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxldGlvblVJKCkK
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3R0b20sICIwIik7CiAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgIjAiKTsKIAotICAgIFJlZlB0cjxIVE1M
RGl2RWxlbWVudD4gb3V0bGluZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUobV90YXJnZXQtPmRv
Y3VtZW50KCkpOworICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gb3V0bGluZSA9IG5ldyBIVE1M
RGl2RWxlbWVudChkaXZUYWcsIG1fdGFyZ2V0LT5kb2N1bWVudCgpKTsKICAgICBvdXRsaW5lLT5z
ZXRBdHRyaWJ1dGUob3V0bGluZS0+aWRBdHRyaWJ1dGVOYW1lKCksIG91dGxpbmVFbGVtZW50SWRl
bnRpZmllcik7CiAKICAgICBjb25zdCBpbnQgYm9yZGVyV2lkdGggPSA0OwpAQCAtMjI0LDcgKzIy
NCw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXRpb25VSSgpCiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RGVsZXRlQnV0dG9uPiBi
dXR0b24gPSBEZWxldGVCdXR0b246OmNyZWF0ZShtX3RhcmdldC0+ZG9jdW1lbnQoKSk7CisgICAg
UmVmUHRyPERlbGV0ZUJ1dHRvbj4gYnV0dG9uID0gbmV3IERlbGV0ZUJ1dHRvbihtX3RhcmdldC0+
ZG9jdW1lbnQoKSk7CiAgICAgYnV0dG9uLT5zZXRBdHRyaWJ1dGUoYnV0dG9uLT5pZEF0dHJpYnV0
ZU5hbWUoKSwgYnV0dG9uRWxlbWVudElkZW50aWZpZXIpOwogCiAgICAgY29uc3QgaW50IGJ1dHRv
bldpZHRoID0gMzA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggZGFhMTljMTM1OWYw
ZGJhMTBhMThiNjE3ZWU3NTU1ZDc0Yzc4ODliMC4uMmU4YjE5ZjBhMzFlNTg1NGViNmU1ODAyMzVk
N2JiMjIwYWVhMDViZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtNDcyLDEwICs0
NzIsMTAgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydEJhY2t0YWIoRnJhbWUqIGZyYW1lLCBF
dmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUlu
c2VydEhvcml6b250YWxSdWxlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJlZlB0cjxIVE1MSFJFbGVtZW50PiBy
dWxlID0gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQ
dHI8SFRNTEhSRWxlbWVudD4gaHIgPSBuZXcgSFRNTEhSRWxlbWVudChoclRhZywgZnJhbWUtPmRv
Y3VtZW50KCkpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBydWxlLT5zZXRB
dHRyaWJ1dGUocnVsZS0+aWRBdHRyaWJ1dGVOYW1lKCksIHZhbHVlKTsKLSAgICByZXR1cm4gZXhl
Y3V0ZUluc2VydE5vZGUoZnJhbWUsIHJ1bGUucmVsZWFzZSgpKTsKKyAgICAgICAgaHItPnNldEF0
dHJpYnV0ZShoci0+aWRBdHRyaWJ1dGVOYW1lKCksIHZhbHVlKTsKKyAgICByZXR1cm4gZXhlY3V0
ZUluc2VydE5vZGUoZnJhbWUsIGhyLnJlbGVhc2UoKSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVJbnNlcnRIVE1MKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNDg2LDcgKzQ4Niw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVJbnNlcnRIVE1MKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0SW1hZ2UoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8g
RklYTUU6IElmIHVzZXJJbnRlcmZhY2UgaXMgdHJ1ZSwgd2Ugc2hvdWxkIGRpc3BsYXkgYSBkaWFs
b2cgYm94IGFuZCBsZXQgdGhlIHVzZXIgY2hvb3NlIGEgbG9jYWwgaW1hZ2UuCi0gICAgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGZyYW1l
LT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBuZXcg
SFRNTEltYWdlRWxlbWVudChpbWdUYWcsIGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBpbWFnZS0+
c2V0U3JjKHZhbHVlKTsKICAgICByZXR1cm4gZXhlY3V0ZUluc2VydE5vZGUoZnJhbWUsIGltYWdl
LnJlbGVhc2UoKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCAzMzU2ZWQ5OWYyZWM3
M2IwOWY1YWQ1Mzk3MGZmNjIyY2NmNDZmNWYzLi4zOWJiMWQwZTBkMGI3Mjg1NTgzNmQ5NDFkODJl
YjFhYTZkODA1YWUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
CisrKyBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTg3NCw3ICs4NzQsNyBA
QCBib29sIGlzRW1wdHlUYWJsZUNlbGwoY29uc3QgTm9kZSogbm9kZSkKIAogUGFzc1JlZlB0cjxI
VE1MRWxlbWVudD4gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAg
ICByZXR1cm4gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpOwogfQogCiBQYXNz
UmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVCcmVha0VsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtODk0LDcgKzg5NCw3IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVub3Jk
ZXJlZExpc3RFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIAogUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBy
ZXR1cm4gSFRNTExJRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICByZXR1cm4gbmV3IEhU
TUxMSUVsZW1lbnQobGlUYWcsIGRvY3VtZW50KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gY3JlYXRlSFRNTEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5jcHAKaW5kZXggNzJmNTMyZjJlNTkxMDZhNzIy
OGQ5NmNmMzVhNjQ3ZDZmMTkwMGVjMC4uNDQ4Mjk0NjQwYzM5NjFjMDk5ZjNhY2FmMzE3MjhhMDQ3
NmJmYjNhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAotLyoKKy8q
KgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTMyLDIwICszMiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxEaXZFbGVtZW50OjpIVE1MRGl2RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKK0hUTUxEaXZFbGVtZW50OjpIVE1MRGl2RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9jKQorICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRpdlRhZykp
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKK0hUTUxEaXZFbGVtZW50Ojp+SFRNTERpdkVsZW1lbnQoKQog
ewotICAgIHJldHVybiBuZXcgSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCk7Ci19Ci0K
LVBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVy
biBuZXcgSFRNTERpdkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCiBib29sIEhUTUxE
aXZFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBw
ZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxEaXZFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAppbmRleCBh
YTYwMjc1YjYyNzhmOTFhMDI5MmJjZmU0MTM5ZjMwZWFkMmI3NjlkLi44MzU5Yjk2MjkzNTFkY2Mz
YjQ3OTVkYmQxNTMzMzdlODhkMTE5ZjExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERp
dkVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaApAQCAtMSw3ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDIxICsyOCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEhUTUxEaXZFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIFN0cmluZyBhbGlnbigpIGNvbnN0Owot
ICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7Ci0KLXByb3RlY3RlZDoKICAgICBIVE1M
RGl2RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB+SFRNTERp
dkVsZW1lbnQoKTsKIAotcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFn
UmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZp
cnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gNTsgfQogCiAgICAgdmlydHVh
bCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVu
dHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOworCisgICAgU3RyaW5nIGFsaWduKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBbGlnbihj
b25zdCBTdHJpbmcmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5jcHAKaW5kZXggYWIxMDNiMWIyZjE5Y2JlYjgyOWIzNDZlZTJiNzdmNThkMzQ0MTQ3
ZS4uYjZkZTBiODQxZjhmNzk5N2Q0NWQ1ZTA0ZTZkZTBhMjBhMzQ2MGIwNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxG
b250RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBTaW1vbiBIYXVz
bWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAw
OCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC00MCwxMSArNDAsNiBAQCBIVE1MRm9udEVsZW1lbnQ6OkhUTUxGb250
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbgog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRm9u
dEVsZW1lbnQ+IEhUTUxGb250RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gbmV3IEhUTUxGb250RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCk7Ci19Ci0KIC8vIEFsbG93cyBsZWFkaW5nIHNwYWNlcy4K
IC8vIEFsbG93cyB0cmFpbGluZyBub25udW1lcmljIGNoYXJhY3RlcnMuCiAvLyBSZXR1cm5zIDEw
IGZvciBhbnkgc2l6ZSBncmVhdGVyIHRoYW4gOS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9udEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaAppbmRleCBj
ZGY3MTQzNjdjMGE1YTYxMjE1ZWY3NzRlNDE0YzU2OWM1NTYzZjcwLi5iMzQzOWI3MTUwYjdhOGRj
NGUyZWZkZmNkMTU1YjBiMDNiMzRhZTc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCkBAIC0yLDcg
KzIsNiBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDAgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCw3ICsxOSw2IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqCiAgKi8KLQogI2lmbmRlZiBIVE1MRm9udEVsZW1lbnRfaAogI2RlZmlu
ZSBIVE1MRm9udEVsZW1lbnRfaAogCkBAIC0zMCw4ICsyOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEhUTUxGb250RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvbnRFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgSFRNTEZvbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIAorICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1
cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c1JlcXVpcmVkOyB9
CisgICAgdmlydHVhbCBpbnQgdGFnUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiAxOyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0
cmlidXRlRW50cnkmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CisKICAgICBTdHJpbmcgY29sb3IoKSBjb25zdDsKICAgICB2b2lkIHNl
dENvbG9yKGNvbnN0IFN0cmluZyYpOwogCkBAIC00MiwxNyArNDYsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTaXplKGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGNzc1Zh
bHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYsIGludCYpOwotCi1wcml2YXRlOgot
ICAgIEhUTUxGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7
IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQotICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5
KCkgY29uc3QgeyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogfTsKIAotfSAvLyBu
YW1lc3BhY2UKK30gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uY3BwCmluZGV4IGUxNDBhMDMyNTMyNDFkNTllZmNlNGE1ZDE0OTdkYzEwOWVhN2ZkZGQuLjY1
YzQ4ZmUzY2U4NGVkMDc1NTRkNTYyOTdlMzcyYTM0YTZkYmVkMTcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbGxlY3Rpb24uY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM4LDkgKzM4LDkg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogaW5saW5lIENvbGxlY3Rpb25DYWNoZSog
SFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29sbGVjdGlvbkluZm8oSFRNTEZvcm1FbGVtZW50KiBm
b3JtKQogewotICAgIGlmICghZm9ybS0+bV9jb2xsZWN0aW9uQ2FjaGUpCi0gICAgICAgIGZvcm0t
Pm1fY29sbGVjdGlvbkNhY2hlLnNldChuZXcgQ29sbGVjdGlvbkNhY2hlKTsKLSAgICByZXR1cm4g
Zm9ybS0+bV9jb2xsZWN0aW9uQ2FjaGUuZ2V0KCk7CisgICAgaWYgKCFmb3JtLT5jb2xsZWN0aW9u
SW5mbykKKyAgICAgICAgZm9ybS0+Y29sbGVjdGlvbkluZm8gPSBuZXcgQ29sbGVjdGlvbkNhY2hl
OworICAgIHJldHVybiBmb3JtLT5jb2xsZWN0aW9uSW5mbzsKIH0KIAogSFRNTEZvcm1Db2xsZWN0
aW9uOjpIVE1MRm9ybUNvbGxlY3Rpb24oUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0p
CkBAIC03OCwxNyArNzgsMTYgQEAgTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjppdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdAogICAgICAgICBpbmZvKCktPmVsZW1lbnRzQXJyYXlQb3NpdGlvbiA9
IDA7CiAgICAgfQogCi0gICAgVmVjdG9yPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPiYgZWxlbWVu
dHNBcnJheSA9IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPm1fYXNzb2Np
YXRlZEVsZW1lbnRzOworICAgIFZlY3RvcjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4mIGwgPSBz
dGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5mb3JtRWxlbWVudHM7CiAgICAg
dW5zaWduZWQgY3VycmVudEluZGV4ID0gaW5mbygpLT5wb3NpdGlvbjsKICAgICAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBpbmZvKCktPmVsZW1lbnRzQXJyYXlQb3NpdGlvbjsgaSA8IGVsZW1lbnRz
QXJyYXkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxl
bWVudCA9IGVsZW1lbnRzQXJyYXlbaV07Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0VudW1lcmF0
YWJsZSgpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gaW5mbygpLT5lbGVtZW50c0FycmF5UG9z
aXRpb247IGkgPCBsLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChsW2ldLT5pc0VudW1lcmF0
YWJsZSgpICkgewogICAgICAgICAgICAgaWYgKGluZGV4ID09IGN1cnJlbnRJbmRleCkgewogICAg
ICAgICAgICAgICAgIGluZm8oKS0+cG9zaXRpb24gPSBpbmRleDsKLSAgICAgICAgICAgICAgICBp
bmZvKCktPmN1cnJlbnQgPSBlbGVtZW50OworICAgICAgICAgICAgICAgIGluZm8oKS0+Y3VycmVu
dCA9IGxbaV07CiAgICAgICAgICAgICAgICAgaW5mbygpLT5lbGVtZW50c0FycmF5UG9zaXRpb24g
PSBpOwotICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICAgICAgICAgIHJl
dHVybiBsW2ldOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjdXJyZW50SW5kZXgrKzsK
QEAgLTEwOSw4ICsxMDgsOCBAQCBFbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVk
Rm9ybUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbgogICAgIEhUTUxGb3Jt
RWxlbWVudCogZm9ybSA9IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSk7CiAK
ICAgICBib29sIGZvdW5kSW5wdXRFbGVtZW50cyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBmb3JtLT5tX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkgewotICAg
ICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlID0gZm9ybS0+bV9hc3NvY2lhdGVkRWxlbWVu
dHNbaV07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm0tPmZvcm1FbGVtZW50cy5z
aXplKCk7ICsraSkgeworICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlID0gZm9ybS0+
Zm9ybUVsZW1lbnRzW2ldOwogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lID0gKGF0dHJOYW1lID09IGlkQXR0cikgPyBlLT5pZEF0dHJpYnV0ZU5hbWUoKSA6IGF0dHJO
YW1lOwogICAgICAgICBpZiAoZS0+aXNFbnVtZXJhdGFibGUoKSAmJiBlLT5nZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkgPT0gbmFtZSkgewogICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRz
ID0gdHJ1ZTsKQEAgLTEyMSw4ICsxMjAsOCBAQCBFbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246
OmdldE5hbWVkRm9ybUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbgogICAg
IH0KIAogICAgIGlmICghZm91bmRJbnB1dEVsZW1lbnRzKSB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmb3JtLT5tX2ltYWdlRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGUgPSBmb3JtLT5tX2ltYWdlRWxlbWVudHNbaV07Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtLT5pbWdFbGVtZW50cy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZSA9IGZvcm0tPmltZ0VsZW1l
bnRzW2ldOwogICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9
IChhdHRyTmFtZSA9PSBpZEF0dHIpID8gZS0+aWRBdHRyaWJ1dGVOYW1lKCkgOiBhdHRyTmFtZTsK
ICAgICAgICAgICAgIGlmIChlLT5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgPT0gbmFtZSkg
ewogICAgICAgICAgICAgICAgIGlmICghZHVwbGljYXRlTnVtYmVyKQpAQCAtMTkxLDggKzE5MCw4
IEBAIHZvaWQgSFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogCiAg
ICAgSFRNTEZvcm1FbGVtZW50KiBmID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFz
ZSgpKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmLT5tX2Fzc29jaWF0ZWRFbGVt
ZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlID0g
Zi0+bV9hc3NvY2lhdGVkRWxlbWVudHNbaV07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGYtPmZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KiBlID0gZi0+Zm9ybUVsZW1lbnRzW2ldOwogICAgICAgICBpZiAoZS0+aXNFbnVtZXJh
dGFibGUoKSkgewogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBl
LT5nZXRBdHRyaWJ1dGUoZS0+aWRBdHRyaWJ1dGVOYW1lKCkpOwogICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGUtPmdldEF0dHJpYnV0ZShuYW1lQXR0cik7CkBA
IC0yMTksOCArMjE4LDggQEAgdm9pZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNo
ZSgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZi0+bV9pbWFnZUVsZW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhUTUxJbWFnZUVs
ZW1lbnQqIGUgPSBmLT5tX2ltYWdlRWxlbWVudHNbaV07CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGYtPmltZ0VsZW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEhUTUxJbWFnZUVs
ZW1lbnQqIGUgPSBmLT5pbWdFbGVtZW50c1tpXTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBpZEF0dHJWYWwgPSBlLT5nZXRBdHRyaWJ1dGUoZS0+aWRBdHRyaWJ1dGVOYW1lKCkpOwogICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZS0+Z2V0QXR0cmlidXRlKG5h
bWVBdHRyKTsKICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpICYmICFmb3VuZElucHV0
RWxlbWVudHMuY29udGFpbnMoaWRBdHRyVmFsLmltcGwoKSkpIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oCmluZGV4IDUyOTc2ZDFlNTM0NTc5ZTI1OTI1YjY3ZTQ5NmM5ZDlkOTk4
ZWNiZWUuLjdlM2RkYTFmNGE4MGM1ZTIwYzk0OTdiZDc5NTk1ZjA4MGYxMmM1ZTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDE0
ICszNiwyNiBAQCBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCiBjbGFzcyBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKKyAgICBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgSFRN
TEZvcm1FbGVtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUhUTUxFbGVtZW50WmVyb1Jl
ZkNvdW50KTsKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xFbGVtZW50KCk7CiAKKyAgICB2
aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBU
YWdTdGF0dXNSZXF1aXJlZDsgfQorICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3Qg
eyByZXR1cm4gMTsgfQorCiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9mb3JtOyB9CiAgICAgVmFsaWRpdHlTdGF0ZSogdmFsaWRpdHkoKTsKIAogICAgIGJvb2wg
Zm9ybU5vVmFsaWRhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldEZvcm1Ob1ZhbGlkYXRlKGJvb2wp
OwogCisgICAgdmlydHVhbCBib29sIGlzVGV4dEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdCB7
IHJldHVybiAhZGlzYWJsZWQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKKwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIHt9
CiAKICAgICB2aXJ0dWFsIGJvb2wgZm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXI7IH0KQEAgLTU0LDkgKzY2LDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGRpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZDsg
fQogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNGb2N1cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFkT25seUZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9yZWFk
T25seTsgfQogICAgIHZvaWQgc2V0UmVhZE9ubHkoYm9vbCk7CiAKICAgICAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgb3Igbm90IGEgY29udHJvbCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZm9jdXNlZApA
QCAtNjYsMTEgKzgyLDE3IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVkKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRSZXF1aXJlZChib29sKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHls
ZShTdHlsZUNoYW5nZSk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0ID0gMDsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGZvcm1Db250cm9sVHlwZSgpOyB9CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gZm9ybUNvbnRyb2xOYW1lKCk7IH0KIAogICAgIHZv
aWQgc2V0TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogCisgICAgdmlydHVhbCBib29s
IGlzRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0U3VibWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKQEAgLTgzLDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNB
Y3RpdmF0ZWRTdWJtaXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCkgeyB9CiAKKyAgICB2aXJ0dWFsIHNob3J0IHRhYklu
ZGV4KCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCk7CiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KFZl
Y3RvcjxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzID0gMCk7CkBAIC05NSw0NyArMTE5LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9y
bURlc3Ryb3llZCgpIHsgbV9mb3JtID0gMDsgfQogCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
Rm9jdXNFdmVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworCiAg
ICAgYm9vbCBpc0xhYmVsYWJsZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGxh
YmVscygpOwogICAgIAotICAgIGJvb2wgcmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3JlYWRP
bmx5OyB9Ci0KIHByb3RlY3RlZDoKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50KiwgQ29uc3Ry
dWN0aW9uVHlwZSA9IENyZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50KTsKLQotICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoKCk7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVw
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwg
dm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7Ci0K
ICAgICB2b2lkIHJlbW92ZUZyb21Gb3JtKCk7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBh
bnkgdGltZSB0aGUgcmVzdWx0IG9mIHdpbGxWYWxpZGF0ZSgpIGhhcyBjaGFuZ2VkLgogICAgIHZv
aWQgc2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpOwogICAgIHZpcnR1YWwgYm9vbCByZWNhbGNX
aWxsVmFsaWRhdGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0
dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsg
fQotICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMTsgfQotCi0g
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCA9
IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29u
c3QgeyByZXR1cm4gIWRpc2FibGVkKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seUZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gcmVhZE9ubHkoKTsgfQotCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgo
KSBjb25zdDsKLQogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKTsKQEAgLTE1OCwyNSAr
MTU0LDI1IEBAIHByaXZhdGU6CiAKIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVh
bCB+SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpOwotCi1wcm90ZWN0ZWQ6CiAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOworICAgIHZpcnR1YWwgfkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhdXRvQ29tcGxl
dGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpOwogCitwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotCi1wcml2YXRl
OgotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiB9Owog
CiBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlIHsKIHB1YmxpYzoKKyAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsK
ICAgICB2aXJ0dWFsIH5IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCgpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVy
RXZlbnQoKTsKIAogICAgIFN0cmluZyBzdHJpcHBlZFBsYWNlaG9sZGVyKCkgY29uc3Q7CiAKQEAg
LTE4OSwyMiArMTg1LDE0IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlv
bigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7Ci0KKyAg
ICBib29sIGlzUGxhY2Vob2xkZXJFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgcGxhY2Vob2xkZXJT
aG91bGRCZVZpc2libGUoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eShib29sKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7Ci0KLSAgICBib29sIGlz
UGxhY2Vob2xkZXJFbXB0eSgpIGNvbnN0OwotCiAgICAgdmlydHVhbCBpbnQgY2FjaGVkU2VsZWN0
aW9uU3RhcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgY2FjaGVkU2VsZWN0aW9uRW5k
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKIAorcHJpdmF0ZToKICAgICAvLyBBIHN1YmNsYXNzIHNob3VsZCByZXR1cm4gdHJ1
ZSBpZiBwbGFjZWhvbGRlciBwcm9jZXNzaW5nIGlzIG5lZWRlZC4KICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dXNlci1lZGl0YWJsZSB2YWx1ZSBpcyBlbXB0eS4gIFRoaXMgaXMgdXNlZCB0byBjaGVjayBwbGFj
ZWhvbGRlciB2aXNpYmlsaXR5LgpAQCAtMjE2LDYgKzIwNCw2IEBAIHByaXZhdGU6CiAgICAgUmVu
ZGVyVGV4dENvbnRyb2wqIHRleHRSZW5kZXJlckFmdGVyVXBkYXRlTGF5b3V0KCk7CiB9OwogCi19
IC8vIG5hbWVzcGFjZQorfSAvL25hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKaW5kZXggYzE5OTMzYWRiNDgzM2NjNDBmMTZlMGU5YjY1OGQ1N2M4ZTZiMGY1MC4uYzg0
NDU0ZDE1OWRiZWNhNWE0ZTM1Yjk1MmFiZWFhMzQ5OWJhNTFmMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAKQEAgLTcyLDggKzcyLDEwIEBAIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlRm9ybURh
dGFJZGVudGlmaWVyKCkKICAgICByZXR1cm4gKytuZXh0SWRlbnRpZmllcjsKIH0KIAotSFRNTEZv
cm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CitIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jKQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jKQor
ICAgICwgbV9lbGVtZW50QWxpYXNlcygwKQorICAgICwgY29sbGVjdGlvbkluZm8oMCkKICAgICAs
IG1fYXV0b2NvbXBsZXRlKHRydWUpCiAgICAgLCBtX2luc3VibWl0KGZhbHNlKQogICAgICwgbV9k
b2luZ3N1Ym1pdChmYWxzZSkKQEAgLTg0LDI1ICs4NiwxOCBAQCBIVE1MRm9ybUVsZW1lbnQ6OkhU
TUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbgogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvcm1UYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MRm9ybUVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKLXsKLSAgICByZXR1cm4gbmV3IEhUTUxGb3JtRWxlbWVudChmb3JtVGFnLCBkb2N1bWVudCk7
Ci19Ci0KLVBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0g
ICAgcmV0dXJuIG5ldyBIVE1MRm9ybUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwotfQotCiBI
VE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQoKQogewogICAgIGlmICghbV9hdXRvY29t
cGxldGUpCiAgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRp
b25DYWxsYmFja3ModGhpcyk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3Nv
Y2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fYXNzb2NpYXRlZEVsZW1lbnRz
W2ldLT5mb3JtRGVzdHJveWVkKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW1h
Z2VFbGVtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9pbWFnZUVsZW1lbnRzW2ldLT5tX2Zv
cm0gPSAwOworICAgIGRlbGV0ZSBtX2VsZW1lbnRBbGlhc2VzOworICAgIGRlbGV0ZSBjb2xsZWN0
aW9uSW5mbzsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGZvcm1FbGVtZW50c1tpXS0+Zm9ybURlc3Ryb3llZCgpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbWdFbGVtZW50cy5zaXplKCk7ICsraSkKKyAgICAg
ICAgaW1nRWxlbWVudHNbaV0tPm1fZm9ybSA9IDA7CiB9CiAKIGJvb2wgSFRNTEZvcm1FbGVtZW50
Ojpmb3JtV291bGRIYXZlU2VjdXJlU3VibWlzc2lvbihjb25zdCBTdHJpbmcmIHVybCkKQEAgLTEx
MCw2ICsxMDUsMTEgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1Xb3VsZEhhdmVTZWN1cmVT
dWJtaXNzaW9uKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTCh1cmwpLnByb3RvY29sSXMoImh0dHBzIik7CiB9CiAKK3ZvaWQgSFRNTEZvcm1FbGVt
ZW50OjphdHRhY2goKQoreworICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKK30KKwogYm9vbCBI
VE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogewog
ICAgIGlmICghaXNEZW1vdGVkKCkpCkBAIC0xNjMsMTAgKzE2MywxMSBAQCB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQogCiB1bnNpZ25lZCBIVE1M
Rm9ybUVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgbGVuID0gMDsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGlmIChtX2Fzc29jaWF0ZWRFbGVtZW50c1tpXS0+aXNFbnVtZXJhdGFibGUo
KSkKKyAgICBpbnQgbGVuID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9ybUVs
ZW1lbnRzLnNpemUoKTsgKytpKQorICAgICAgICBpZiAoZm9ybUVsZW1lbnRzW2ldLT5pc0VudW1l
cmF0YWJsZSgpKQogICAgICAgICAgICAgKytsZW47CisKICAgICByZXR1cm4gbGVuOwogfQogCkBA
IC0xNzgsOCArMTc5LDggQEAgTm9kZSogSFRNTEZvcm1FbGVtZW50OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KQogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqIGV2ZW50
LCBib29sIGZyb21JbXBsaWNpdFN1Ym1pc3Npb25UcmlnZ2VyKQogewogICAgIGludCBzdWJtaXNz
aW9uVHJpZ2dlckNvdW50ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3Nv
Y2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSFRNTEZvcm1Db250cm9sRWxl
bWVudCogZm9ybUVsZW1lbnQgPSBtX2Fzc29jaWF0ZWRFbGVtZW50c1tpXTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1FbGVtZW50ID0gZm9ybUVsZW1lbnRzW2ldOwogICAg
ICAgICBpZiAoZm9ybUVsZW1lbnQtPmlzU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpKSB7CiAgICAg
ICAgICAgICBpZiAoZm9ybUVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICBm
b3JtRWxlbWVudC0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CkBAIC0yMDMsOCArMjA0
LDggQEAgVGV4dEVuY29kaW5nIEhUTUxGb3JtRWxlbWVudDo6ZGF0YUVuY29kaW5nKCkgY29uc3QK
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlRm9ybURhdGEoKQog
ewogICAgIFJlZlB0cjxET01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0YTo6Y3Jl
YXRlKGRhdGFFbmNvZGluZygpLmVuY29kaW5nRm9yRm9ybVN1Ym1pc3Npb24oKSk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wgPSBtX2Fzc29jaWF0ZWRF
bGVtZW50c1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wgPSBm
b3JtRWxlbWVudHNbaV07CiAgICAgICAgIGlmICghY29udHJvbC0+ZGlzYWJsZWQoKSkKICAgICAg
ICAgICAgIGNvbnRyb2wtPmFwcGVuZEZvcm1EYXRhKCpkb21Gb3JtRGF0YSwgbV9mb3JtRGF0YUJ1
aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpOwogICAgIH0KQEAgLTM1Myw4ICszNTQsOCBAQCB2b2lk
IEhUTUxGb3JtRWxlbWVudDo6c3VibWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1p
dEJ1dHRvbiwgYm9vbCBsb2NrSAogICAgIAogICAgIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5n
PiA+IGZvcm1WYWx1ZXM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lh
dGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVu
dCogY29udHJvbCA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzW2ldOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBmb3JtRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudCogY29udHJvbCA9IGZvcm1FbGVtZW50c1tpXTsKICAgICAgICAgaWYgKGNv
bnRyb2wtPmhhc0xvY2FsTmFtZShpbnB1dFRhZykpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wpOwog
ICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RleHRGaWVsZCgpKSB7CkBAIC00MjQsOCArNDI1LDgg
QEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbV9hc3NvY2lhdGVkRWxlbWVudHNbaV0tPnJlc2V0KCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkKKyAgICAg
ICAgZm9ybUVsZW1lbnRzW2ldLT5yZXNldCgpOwogCiAgICAgbV9pbnJlc2V0ID0gZmFsc2U7CiB9
CkBAIC00OTUsMjAgKzQ5NiwyMCBAQCB1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVt
ZW50SW5kZXgoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZSkKICAgICAgICAgICAgICAgICArK2k7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUo
KTsKKyAgICByZXR1cm4gZm9ybUVsZW1lbnRzLnNpemUoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZSkKIHsK
ICAgICBkb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKGUpOwog
ICAgIG1fY2hlY2tlZFJhZGlvQnV0dG9ucy5hZGRCdXR0b24oZSk7Ci0gICAgbV9hc3NvY2lhdGVk
RWxlbWVudHMuaW5zZXJ0KGZvcm1FbGVtZW50SW5kZXgoZSksIGUpOworICAgIGZvcm1FbGVtZW50
cy5pbnNlcnQoZm9ybUVsZW1lbnRJbmRleChlKSwgZSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpyZW1vdmVGb3JtRWxlbWVudChIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlKQogewogICAg
IG1fY2hlY2tlZFJhZGlvQnV0dG9ucy5yZW1vdmVCdXR0b24oZSk7Ci0gICAgcmVtb3ZlRnJvbVZl
Y3RvcihtX2Fzc29jaWF0ZWRFbGVtZW50cywgZSk7CisgICAgcmVtb3ZlRnJvbVZlY3Rvcihmb3Jt
RWxlbWVudHMsIGUpOwogfQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKSBjb25zdApAQCAtNTE4LDE0ICs1MTksMTQgQEAgYm9vbCBIVE1MRm9y
bUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikgY29uc3QKIAogdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVySW1nRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50KiBlKQog
ewotICAgIEFTU0VSVChtX2ltYWdlRWxlbWVudHMuZmluZChlKSA9PSBub3RGb3VuZCk7Ci0gICAg
bV9pbWFnZUVsZW1lbnRzLmFwcGVuZChlKTsKKyAgICBBU1NFUlQoaW1nRWxlbWVudHMuZmluZChl
KSA9PSBub3RGb3VuZCk7CisgICAgaW1nRWxlbWVudHMuYXBwZW5kKGUpOwogfQogCiB2b2lkIEhU
TUxGb3JtRWxlbWVudDo6cmVtb3ZlSW1nRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50KiBlKQogewot
ICAgIEFTU0VSVChtX2ltYWdlRWxlbWVudHMuZmluZChlKSAhPSBub3RGb3VuZCk7Ci0gICAgcmVt
b3ZlRnJvbVZlY3RvcihtX2ltYWdlRWxlbWVudHMsIGUpOworICAgIEFTU0VSVChpbWdFbGVtZW50
cy5maW5kKGUpICE9IG5vdEZvdW5kKTsKKyAgICByZW1vdmVGcm9tVmVjdG9yKGltZ0VsZW1lbnRz
LCBlKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZvcm1FbGVtZW50Ojpl
bGVtZW50cygpCkBAIC01OTUsOCArNTk2LDggQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnNldFRh
cmdldChjb25zdCBTdHJpbmcgJnZhbHVlKQogCiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1M
Rm9ybUVsZW1lbnQ6OmRlZmF1bHRCdXR0b24oKSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sID0gbV9hc3NvY2lhdGVkRWxlbWVudHNbaV07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkg
eworICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sID0gZm9ybUVsZW1lbnRz
W2ldOwogICAgICAgICBpZiAoY29udHJvbC0+aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gY29udHJvbDsKICAgICB9CkBAIC02MTQsMTIgKzYxNSwxMiBAQCBi
b29sIEhUTUxGb3JtRWxlbWVudDo6Y2hlY2tWYWxpZGl0eSgpCiB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6Y29sbGVjdFVuaGFuZGxlZEludmFsaWRDb250cm9scyhWZWN0b3I8UmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+ID4mIHVuaGFuZGxlZEludmFsaWRDb250cm9scykKIHsKICAgICBSZWZQ
dHI8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgLy8gQ29weSBtX2Fzc29j
aWF0ZWRFbGVtZW50cyBiZWNhdXNlIGV2ZW50IGhhbmRsZXJzIGNhbGxlZCBmcm9tCi0gICAgLy8g
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eSgpIG1pZ2h0IGNoYW5nZSBtX2Fz
c29jaWF0ZWRFbGVtZW50cy4KKyAgICAvLyBDb3B5IGZvcm1FbGVtZW50cyBiZWNhdXNlIGV2ZW50
IGhhbmRsZXJzIGNhbGxlZCBmcm9tCisgICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hl
Y2tWYWxpZGl0eSgpIG1pZ2h0IGNoYW5nZSBmb3JtRWxlbWVudHMuCiAgICAgVmVjdG9yPFJlZlB0
cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiA+IGVsZW1lbnRzOwotICAgIGVsZW1lbnRzLnJlc2Vy
dmVDYXBhY2l0eShtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAg
ZWxlbWVudHMuYXBwZW5kKG1fYXNzb2NpYXRlZEVsZW1lbnRzW2ldKTsKKyAgICBlbGVtZW50cy5y
ZXNlcnZlQ2FwYWNpdHkoZm9ybUVsZW1lbnRzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgZWxlbWVudHMuYXBw
ZW5kKGZvcm1FbGVtZW50c1tpXSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1l
bnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChlbGVtZW50c1tpXS0+Zm9ybSgpID09IHRo
aXMpCiAgICAgICAgICAgICBlbGVtZW50c1tpXS0+Y2hlY2tWYWxpZGl0eSgmdW5oYW5kbGVkSW52
YWxpZENvbnRyb2xzKTsKQEAgLTYzOCw3ICs2MzksNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6
YWRkRWxlbWVudEFsaWFzKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0
bwogICAgIGlmIChhbGlhcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1f
ZWxlbWVudEFsaWFzZXMpCi0gICAgICAgIG1fZWxlbWVudEFsaWFzZXMuc2V0KG5ldyBBbGlhc01h
cCk7CisgICAgICAgIG1fZWxlbWVudEFsaWFzZXMgPSBuZXcgQWxpYXNNYXA7CiAgICAgbV9lbGVt
ZW50QWxpYXNlcy0+c2V0KGFsaWFzLmltcGwoKSwgZWxlbWVudCk7CiB9CiAKQEAgLTY2OSw4ICs2
NzAsOCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKQog
ewogICAgIEFTU0VSVCghbV9hdXRvY29tcGxldGUpOwogICAgIAotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9h
c3NvY2lhdGVkRWxlbWVudHNbaV0tPnJlc2V0KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgZm9ybUVsZW1lbnRzW2ldLT5y
ZXNldCgpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGE0OWY0NDM5ZTI4NWUzMzlmYWIyZDZl
MTI4YWRlZDZlYjJkNzVlNzIuLmUzZGUyMjI5NjFiYjlkY2M2OTg0NThhZWU2M2YyZGZlYTU5MmZh
ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC00NCwxMyArNDQsMjIgQEAgc3RydWN0IENvbGxlY3Rpb25DYWNoZTsKIAogY2xhc3MgSFRN
TEZvcm1FbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsgCiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKKyAgICBIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1FbGVtZW50KCk7CiAKKyAgICB2aXJ0
dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdT
dGF0dXNSZXF1aXJlZDsgfQorICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyBy
ZXR1cm4gMzsgfQorCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQo
KTsKKyAKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKTsKKyAgICAg
CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHMoKTsKICAgICB2b2lkIGdl
dE5hbWVkRWxlbWVudHMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+
Jik7Ci0KKyAgICAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBOb2RlKiBpdGVt
KHVuc2lnbmVkIGluZGV4KTsKIApAQCAtNjIsOCArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGF1dG9Db21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b2NvbXBsZXRlOyB9CiAKLSAgICAv
LyBGSVhNRTogU2hvdWxkIHJlbmFtZSB0aGVzZSB0d28gZnVuY3Rpb25zIHRvIHNheSAiZm9ybSBj
b250cm9sIgotICAgIC8vIG9yICJmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCIgaW5zdGVhZCBvZiAi
Zm9ybSBlbGVtZW50Ii4KKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CisKICAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRNTEZvcm1Db250cm9s
RWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRm9ybUVsZW1lbnQoSFRNTEZvcm1Db250cm9sRWxl
bWVudCopOwogICAgIHZvaWQgcmVnaXN0ZXJJbWdFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQqKTsK
QEAgLTgwLDYgKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVtb3RlZChib29sIGRlbW90
ZWQpIHsgbV9kZW1vdGVkID0gZGVtb3RlZDsgfQogICAgIGJvb2wgaXNEZW1vdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9kZW1vdGVkOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUo
QXR0cmlidXRlKikgY29uc3Q7CisgICAgCiAgICAgdm9pZCBzdWJtaXRJbXBsaWNpdGx5KEV2ZW50
KiwgYm9vbCBmcm9tSW1wbGljaXRTdWJtaXNzaW9uVHJpZ2dlcik7CiAgICAgYm9vbCBmb3JtV291
bGRIYXZlU2VjdXJlU3VibWlzc2lvbihjb25zdCBTdHJpbmcmIHVybCk7CiAKQEAgLTEwOCwzMSAr
MTE5LDE4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+
IGVsZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGFkZEVsZW1l
bnRBbGlhcyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlh
cyk7CiAKLSAgICBDaGVja2VkUmFkaW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25zKCkgeyBy
ZXR1cm4gbV9jaGVja2VkUmFkaW9CdXR0b25zOyB9Ci0KLSAgICBjb25zdCBWZWN0b3I8SFRNTEZv
cm1Db250cm9sRWxlbWVudCo+JiBhc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBt
X2Fzc29jaWF0ZWRFbGVtZW50czsgfQotCi1wcml2YXRlOgotICAgIEhUTUxGb3JtRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgSFRNTFRhZ1N0
YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c1JlcXVpcmVk
OyB9Ci0gICAgdmlydHVhbCBpbnQgdGFnUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiAzOyB9Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOwotICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbURvY3VtZW50KCk7Ci0gCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRz
KEV2ZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29u
c3Q7CisgICAgLy8gRklYTUU6IENoYW5nZSB0aGlzIHRvIGJlIHByaXZhdGUgYWZ0ZXIgZ2V0dGlu
ZyByaWQgb2YgYWxsIHRoZSBjbGllbnRzLgorICAgIFZlY3RvcjxIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Kj4gZm9ybUVsZW1lbnRzOwogCisgICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyYgY2hlY2tlZFJh
ZGlvQnV0dG9ucygpIHsgcmV0dXJuIG1fY2hlY2tlZFJhZGlvQnV0dG9uczsgfQorICAgIAogICAg
IHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogCitwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAorcHJpdmF0ZToKICAgICB2b2lk
IHN1Ym1pdChFdmVudCosIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgbG9ja0hpc3Rv
cnksIEZvcm1TdWJtaXNzaW9uVHJpZ2dlcik7CiAKICAgICBib29sIGlzTWFpbHRvRm9ybSgpIGNv
bnN0OwpAQCAtMTUwLDE0ICsxNDgsMTIgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+LCBSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4g
PiBBbGlhc01hcDsKIAogICAgIEZvcm1EYXRhQnVpbGRlciBtX2Zvcm1EYXRhQnVpbGRlcjsKLSAg
ICBPd25QdHI8QWxpYXNNYXA+IG1fZWxlbWVudEFsaWFzZXM7Ci0gICAgT3duUHRyPENvbGxlY3Rp
b25DYWNoZT4gbV9jb2xsZWN0aW9uQ2FjaGU7CisgICAgQWxpYXNNYXAqIG1fZWxlbWVudEFsaWFz
ZXM7CisgICAgQ29sbGVjdGlvbkNhY2hlKiBjb2xsZWN0aW9uSW5mbzsKIAogICAgIENoZWNrZWRS
YWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOwogICAgIAotICAgIFZlY3RvcjxIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Kj4gbV9hc3NvY2lhdGVkRWxlbWVudHM7Ci0gICAgVmVjdG9yPEhU
TUxJbWFnZUVsZW1lbnQqPiBtX2ltYWdlRWxlbWVudHM7Ci0KKyAgICBWZWN0b3I8SFRNTEltYWdl
RWxlbWVudCo+IGltZ0VsZW1lbnRzOwogICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV90
YXJnZXQ7CiAgICAgYm9vbCBtX2F1dG9jb21wbGV0ZSA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5jcHAKaW5kZXggMTA4ODA2ZmFmNTNiNTEwZjAxMTI4NjdhNjM2Yjk3YjRlMWYyZjcx
NS4uM2VjYzg2Y2Q3YWE2YzQ0MjA0MjMwOWQ1OWUyM2YzODljYzRkMjQ1MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMSw5ICsxLDkgQEAKLS8qCisvKioKICAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAwIFNpbW9uIEhhdXNtYW5uIChoYXVzbWFubkBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDggKzQwLDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEZyYW1lU2V0RWxl
bWVudDo6SFRNTEZyYW1lU2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
K0hUTUxGcmFtZVNldEVsZW1lbnQ6OkhUTUxGcmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvYykKKyAgICAsIG1fcm93cygwKQorICAgICwgbV9jb2xzKDApCiAgICAgLCBtX3RvdGFsUm93
cygxKQogICAgICwgbV90b3RhbENvbHMoMSkKICAgICAsIG1fYm9yZGVyKDYpCkBAIC01NCw5ICs1
NiwxMiBAQCBIVE1MRnJhbWVTZXRFbGVtZW50OjpIVE1MRnJhbWVTZXRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KgogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZy
YW1lc2V0VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gSFRNTEZy
YW1lU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKK0hUTUxGcmFtZVNldEVsZW1lbnQ6On5IVE1MRnJhbWVTZXRFbGVtZW50
KCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpOworICAgIGlmIChtX3Jvd3MpCisgICAgICAgIGRlbGV0ZSBbXSBtX3Jvd3M7CisgICAgaWYg
KG1fY29scykKKyAgICAgICAgZGVsZXRlIFtdIG1fY29sczsKIH0KIAogYm9vbCBIVE1MRnJhbWVT
ZXRFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKQEAgLTgyLDEyICs4Nywx
NCBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3NBdHRyKSB7CiAgICAg
ICAgIGlmICghYXR0ci0+aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fcm93TGVuZ3Rocy5zZXQo
bmV3TGVuZ3RoQXJyYXkoYXR0ci0+dmFsdWUoKS5zdHJpbmcoKSwgbV90b3RhbFJvd3MpKTsKKyAg
ICAgICAgICAgIGlmIChtX3Jvd3MpIGRlbGV0ZSBbXSBtX3Jvd3M7CisgICAgICAgICAgICBtX3Jv
d3MgPSBuZXdMZW5ndGhBcnJheShhdHRyLT52YWx1ZSgpLnN0cmluZygpLCBtX3RvdGFsUm93cyk7
CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xzQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2NvbExlbmd0aHMuc2V0KG5ld0xlbmd0aEFycmF5KGF0
dHItPnZhbHVlKCkuc3RyaW5nKCksIG1fdG90YWxDb2xzKSk7CisgICAgICAgICAgICBkZWxldGUg
W10gbV9jb2xzOworICAgICAgICAgICAgbV9jb2xzID0gbmV3TGVuZ3RoQXJyYXkoYXR0ci0+dmFs
dWUoKS5zdHJpbmcoKSwgbV90b3RhbENvbHMpOwogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZnJhbWVi
b3JkZXJBdHRyKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCBhY2NmYmY4OTNi
M2ZkYWUxZDRkYjk1YjMzNmI4NjA0YzM2NzlkYzEyLi5mYWY4MDBkMjEzZGRlMTgwMjY2Mzc5OTU3
NjdmNGEzNzE5MzkyYTRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMCBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwxNCAr
MjQsMjkgQEAKICNpZm5kZWYgSFRNTEZyYW1lU2V0RWxlbWVudF9oCiAjZGVmaW5lIEhUTUxGcmFt
ZVNldEVsZW1lbnRfaAogCi0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVkZSAi
Q29sb3IuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEZyYW1lU2V0RWxlbWVudCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZy
YW1lU2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwor
ICAgIEhUTUxGcmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CisgICAgfkhUTUxGcmFtZVNldEVsZW1lbnQoKTsKKworICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1
cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c1JlcXVpcmVkOyB9
CisgICAgdmlydHVhbCBpbnQgdGFnUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiAxMDsgfQorICAg
IHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVk
QXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OwogCiAgICAgYm9vbCBoYXNGcmFtZUJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIGZyYW1lYm9yZGVy
OyB9CiAgICAgYm9vbCBub1Jlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG5vcmVzaXplOyB9CkBAIC00
MiwxNCArNTcsMTYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNCb3JkZXJDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYm9yZGVyQ29sb3JTZXQ7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZWNhbGNT
dHlsZShTdHlsZUNoYW5nZSk7CisgICAgCiAgICAgU3RyaW5nIGNvbHMoKSBjb25zdDsKICAgICB2
b2lkIHNldENvbHMoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgcm93cygpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Um93cyhjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IExlbmd0aCogcm93
TGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuIG1fcm93TGVuZ3Rocy5nZXQoKTsgfQotICAgIGNvbnN0
IExlbmd0aCogY29sTGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuIG1fY29sTGVuZ3Rocy5nZXQoKTsg
fQorICAgIGNvbnN0IExlbmd0aCogcm93TGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuIG1fcm93czsg
fQorICAgIGNvbnN0IExlbmd0aCogY29sTGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuIG1fY29sczsg
fQogCiAgICAgLy8gRGVjbGFyZWQgdmlydHVhbCBpbiBFbGVtZW50CiAgICAgREVGSU5FX1dJTkRP
V19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmx1cik7CkBAIC03MSwyNSArODgsOCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBIVE1MRnJhbWVTZXRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVu
ZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KLSAg
ICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDEwOyB9Ci0gICAgdmly
dHVhbCBib29sIGNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRy
aWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwotICAgIAotICAgIE93
bkFycmF5UHRyPExlbmd0aD4gbV9yb3dMZW5ndGhzOwotICAgIE93bkFycmF5UHRyPExlbmd0aD4g
bV9jb2xMZW5ndGhzOworICAgIExlbmd0aCogbV9yb3dzOworICAgIExlbmd0aCogbV9jb2xzOwog
CiAgICAgaW50IG1fdG90YWxSb3dzOwogICAgIGludCBtX3RvdGFsQ29sczsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVt
ZW50LmNwcAppbmRleCBiMGZjNmZmMTM3MzFkMTZkODY2NDg3OTM5YjdkY2Q0MWU3Mjc1MzQwLi45
MmZiM2IyZWMyNTY3OTJhZWIxMzkwOTg3NzNlZGNmYzM1ZGM4NzhiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1l
bnQuY3BwCkBAIC0xLDcgKzEsNyBAQAotLyoKKy8qKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxl
IENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDIwICszMiwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxI
UkVsZW1lbnQ6OkhUTUxIUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCitI
VE1MSFJFbGVtZW50OjpIVE1MSFJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2MpCisgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2MpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoaHJUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50
PiBIVE1MSFJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorSFRNTEhSRWxlbWVu
dDo6fkhUTUxIUkVsZW1lbnQoKQogewotICAgIHJldHVybiBuZXcgSFRNTEhSRWxlbWVudChoclRh
ZywgZG9jdW1lbnQpOwotfQotCi1QYXNzUmVmUHRyPEhUTUxIUkVsZW1lbnQ+IEhUTUxIUkVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCi17Ci0gICAgcmV0dXJuIG5ldyBIVE1MSFJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsK
IH0KIAogYm9vbCBIVE1MSFJFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVt
ZW50LmgKaW5kZXggZWExMGM4ODMxY2MwOTg2NDA1ZDJlY2RlZTVlNDc3MDY3Y2I3Mzc1NS4uODc2
MzA4MjFlY2VhNThjZmE0NTI4ZWVjZTk4ODkwOTUxNTFmMjZmYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxIUkVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5o
CkBAIC0xLDcgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksOSArMjgsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSFJFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgSFRNTEhSRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB+SFRNTEhSRWxlbWVudCgpOworICAg
IAorICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIFRhZ1N0YXR1c0ZvcmJpZGRlbjsgfQorICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIAorICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKwogICAgIFN0
cmluZyBhbGlnbigpIGNvbnN0OwogICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7CiAK
QEAgLTQzLDE1ICs0OCw2IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB3aWR0aCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0V2lkdGgoY29uc3QgU3RyaW5nJik7Ci0KLXByaXZhdGU6Ci0gICAgSFRNTEhS
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdT
dGF0dXNGb3JiaWRkZW47IH0KLSAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFs
aWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCmluZGV4IGRmNWFjYjQzMjNiYzc0ODE2
MWZjYWI2NTg3MzQ5MjExM2JkNmM0ODMuLjVlM2M1MDkxMGMwNjE2ZmU3ZWRlZWIwMGZhZDRlNDdi
YjU4YTgyOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCkBAIC0xLDkgKzEsOSBAQAotLyoK
Ky8qKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDAgU2ltb24gSGF1c21hbm4gKGhhdXNtYW5uQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDcgKzIwLDYgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCiAgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwotCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAKQEAgLTMxLDIwICszMCwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxIZWFkRWxl
bWVudDo6SFRNTEhlYWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorSFRN
TEhlYWRFbGVtZW50OjpIVE1MSGVhZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUs
IERvY3VtZW50KiBkb2MpCisgICAgOiBIVE1MRWxlbWVudChxTmFtZSwgZG9jKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGhlYWRUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1l
bnQ+IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBy
ZXR1cm4gbmV3IEhUTUxIZWFkRWxlbWVudChoZWFkVGFnLCBkb2N1bWVudCk7Ci19Ci0KLVBhc3NS
ZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCitIVE1MSGVhZEVsZW1lbnQ6
On5IVE1MSGVhZEVsZW1lbnQoKQogewotICAgIHJldHVybiBuZXcgSFRNTEhlYWRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KTsKIH0KIAogU3RyaW5nIEhUTUxIZWFkRWxlbWVudDo6cHJvZmlsZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmggYi9XZWJD
b3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmgKaW5kZXggYTkxZjVmODUzMDhjZjE3YjY1OTk3ODZm
NGMyOTlmNzYyZGU5NTEyYy4uMTRhNDQwOWExM2FhNDA0NGRkN2NkNjZlMzM0M2VmYTA2YjM1OTc1
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAw
IFNpbW9uIEhhdXNtYW5uIDxoYXVzbWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zMCwyMiArMzAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSGVh
ZEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhUTUxIZWFkRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7Ci0KLSAgICBTdHJpbmcgcHJvZmlsZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJv
ZmlsZShjb25zdCBTdHJpbmcmKTsKLQotICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29u
c3QgeyByZXR1cm4gMTA7IH0KLQotcHJpdmF0ZToKICAgICBIVE1MSGVhZEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgfkhUTUxIZWFkRWxlbWVudCgpOwogCiAg
ICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1
cm4gVGFnU3RhdHVzT3B0aW9uYWw7IH0KKyAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNv
bnN0IHsgcmV0dXJuIDEwOyB9CiAgICAgdmlydHVhbCBib29sIGNoaWxkQWxsb3dlZChOb2RlKiBu
ZXdDaGlsZCk7CiAgICAgdmlydHVhbCBib29sIGNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxk
KTsKKworICAgIFN0cmluZyBwcm9maWxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcm9maWxlKGNv
bnN0IFN0cmluZyYpOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy9uYW1lc3BhY2UKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuY3BwCmluZGV4IGRkNWFlNjZmNTEwZWY2ZGRi
NTdiYzU2NGM5YmQ2MDNhYTg0YWNmNGMuLjk1YzgyZDE0YjM3ZDg0OTZlZWY0ZmMyOGUzNjUyMjJh
YjA3MDhjYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBA
QAotLyoKKy8qKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE5LDcgKzE5LDYgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgogICoKICAqLwotCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEhl
YWRpbmdFbGVtZW50LmgiCiAKQEAgLTI5LDE0ICsyOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotaW5saW5lIEhUTUxIZWFkaW5nRWxlbWVu
dDo6SFRNTEhlYWRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotewot
fQotCi1QYXNzUmVmUHRyPEhUTUxIZWFkaW5nRWxlbWVudD4gSFRNTEhlYWRpbmdFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQor
SFRNTEhlYWRpbmdFbGVtZW50OjpIVE1MSGVhZGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRv
YykKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxIZWFkaW5nRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCk7CiB9CiAKIGJvb2wgSFRNTEhlYWRpbmdFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBu
ZXdDaGlsZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaAppbmRleCBlNzgzMzYwOGY3ZDM0NDY3
MWFhNmU0MmNmZDEyNTM3ZWZhYWFhOTkwLi43NjViZWRlN2U4OWU3OTlmNjJjYzRmOTA5YjIyNGUy
MjFlMmNmYWViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oCkBAIC0xLDcgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjksMTcgKzI4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSFRNTEhlYWRpbmdFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSGVhZGluZ0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIFN0cmluZyBhbGlnbigpIGNvbnN0Owot
ICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7Ci0KLXByaXZhdGU6CiAgICAgSFRNTEhl
YWRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmly
dHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFn
U3RhdHVzUmVxdWlyZWQ7IH0KICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsg
cmV0dXJuIDU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hp
bGQpOworCisgICAgU3RyaW5nIGFsaWduKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBbGlnbihjb25z
dCBTdHJpbmcmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxl
bWVudC5jcHAKaW5kZXggMTk0OWI1OTAwMGUyNzYyMWU0Zjk5OWI5ODQ5OWZkODFhNWE2YWViYS4u
ODM4MmU2MDllNzY5MDIyZTEwMjBhZmJlOTlkMmQyM2FiNTFiMWIwMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxIdG1s
RWxlbWVudC5jcHAKQEAgLTEsOSArMSw5IEBACi0vKgorLyoqCiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBTaW1v
biBIYXVzbWFubiAoaGF1c21hbm5Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAs
NyArMjAsNiBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgogICovCi0KICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQu
aCIKIApAQCAtMzQsMjAgKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEh0bWxFbGVtZW50OjpIVE1MSHRtbEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCitIVE1MSHRtbEVsZW1lbnQ6OkhUTUxIdG1sRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQorICAgIDog
SFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGh0bWxU
YWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IEhUTUxIdG1sRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gbmV3IEhUTUxIdG1sRWxl
bWVudChodG1sVGFnLCBkb2N1bWVudCk7Ci19Ci0KLVBhc3NSZWZQdHI8SFRNTEh0bWxFbGVtZW50
PiBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCitIVE1MSHRtbEVsZW1lbnQ6On5IVE1MSHRtbEVsZW1lbnQoKQog
ewotICAgIHJldHVybiBuZXcgSFRNTEh0bWxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0K
IAogU3RyaW5nIEhUTUxIdG1sRWxlbWVudDo6dmVyc2lvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVt
ZW50LmgKaW5kZXggZWQwNDcwM2QzMWZjM2ExYmM4ZTZhYzBiYzE3NmUyNzM3MzE1OTJlZC4uZGU4
MGJhODYwYWMwNGU5YWM3OTQyZjllNDIxNWQzYWQ3YmY4OWY2MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxIdG1sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1l
bnQuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIFNpbW9uIEhhdXNtYW5uIDxoYXVz
bWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCwxNCArMzAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxIdG1sRWxlbWVudCA6IHB1YmxpYyBIVE1M
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEh0bWxFbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSHRtbEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIFN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYpOwot
Ci1wcml2YXRlOgogICAgIEhUTUxIdG1sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKKyAgICB+SFRNTEh0bWxFbGVtZW50KCk7CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdT
dGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJl
ZDsgfQogICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMTE7IH0K
QEAgLTQ2LDggKzQwLDExIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICNlbmRp
ZgorCisgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFZlcnNpb24oY29u
c3QgU3RyaW5nJik7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvL25hbWVzcGFjZQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA1ZGQwMzZlZWJhYTUxYjg1ODlmOGUx
OTI5YTEyNzcxMmU2MzBmZTgyLi4yNmQzNmI4MmM4OGU1YzMxMmVlNWZlMzhiN2QzMGI4MTEzMDk5
NjRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEltYWdl
RWxlbWVudDo6SFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhUTUxFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQorSFRNTEltYWdlRWxlbWVudDo6SFRNTEltYWdlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jLCBIVE1MRm9ybUVs
ZW1lbnQqIGZvcm0pCisgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBtX2lt
YWdlTG9hZGVyKHRoaXMpCiAgICAgLCBpc21hcChmYWxzZSkKICAgICAsIG1fZm9ybShmb3JtKQpA
QCAtNTMsMTYgKzUzLDYgQEAgSFRNTEltYWdlRWxlbWVudDo6SFRNTEltYWdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAgICAgICAgZm9ybS0+
cmVnaXN0ZXJJbWdFbGVtZW50KHRoaXMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1l
bnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAg
cmV0dXJuIG5ldyBIVE1MSW1hZ2VFbGVtZW50KGltZ1RhZywgZG9jdW1lbnQpOwotfQotCi1QYXNz
UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVu
dCogZm9ybSkKLXsKLSAgICByZXR1cm4gbmV3IEhUTUxJbWFnZUVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQsIGZvcm0pOwotfQotCiBIVE1MSW1hZ2VFbGVtZW50Ojp+SFRNTEltYWdlRWxlbWVudCgp
CiB7CiAgICAgaWYgKG1fZm9ybSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDYyZDMxNWNk
M2I5N2ExODk0ODJhNWQwMDgyN2Y0M2JjNzNiNzY2ZDQuLjYxZmFhMzk2ODA1YjQwOTAxYmVjMWIw
Mzc5ZGIxYWVlYzkwMTI5ODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMzUsMTEgKzM1
LDIxIEBAIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogICAgIGZyaWVuZCBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0
b3IoRG9jdW1lbnQqLCBjb25zdCBpbnQqIG9wdGlvbmFsV2lkdGgsIGNvbnN0IGludCogb3B0aW9u
YWxIZWlnaHQpOwogCi0gICAgdmlydHVhbCB+SFRNTEltYWdlRWxlbWVudCgpOworICAgIEhUTUxJ
bWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVt
ZW50KiA9IDApOworICAgIH5IVE1MSW1hZ2VFbGVtZW50KCk7CisKKyAgICB2aXJ0dWFsIEhUTUxU
YWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNGb3Ji
aWRkZW47IH0KKyAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNl
bGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBpbnQgd2lkdGgoYm9vbCBp
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMgPSBmYWxzZSkgY29uc3Q7CiAgICAgaW50IGhlaWdodChi
b29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9IGZhbHNlKSBjb25zdDsKQEAgLTUxLDYgKzYx
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGFsdFRleHQoKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKKwogICAgIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGVP
cGVyYXRvcjsgfQogCiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpOyB9CkBAIC02MCw2ICs3Miw4IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
ZHJhZ2dhYmxlKCkgY29uc3Q7CisKICAgICB2b2lkIHNldEhlaWdodChpbnQpOwogCiAgICAgaW50
IGhzcGFjZSgpIGNvbnN0OwpAQCAtODksMjkgKzEwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhhdmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaGF2ZUZp
cmVkTG9hZEV2ZW50KCk7IH0KIAotcHJvdGVjdGVkOgotICAgIEhUTUxJbWFnZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50KiA9IDApOworICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mKSBjb25zdDsKIAorcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1cyBl
bmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c0ZvcmJpZGRlbjsgfQot
ICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMDsgfQotCi0gICAg
dmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1h
cHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwotCi0gICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25z
dDsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKLQogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1
bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmly
dHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCBhMjZiOTlkMTZlY2IyOGQyZmRhNjNlYzNhMGY4ZmM2YTNkOTE2NDEyLi4z
MGFjZDRlYmYyMzNiNTgyNzY2ODdhYmVmMzBiMTBiMjZhYmM5MzY3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC0xMDQsOCArMTA0LDggQEAgc3RhdGljIGNvbnN0IGRvdWJsZSB3ZWVr
RGVmYXVsdFN0ZXBCYXNlID0gLTI1OTIwMDAwMC4wOyAvLyBUaGUgZmlyc3QgZGF5IG9mIDE5NzAK
IHN0YXRpYyBjb25zdCBkb3VibGUgbXNlY1Blck1pbnV0ZSA9IDYwICogMTAwMDsKIHN0YXRpYyBj
b25zdCBkb3VibGUgbXNlY1BlclNlY29uZCA9IDEwMDA7CiAKLUhUTUxJbnB1dEVsZW1lbnQ6OkhU
TUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCi0gICAgOiBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKK0hUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYywg
SFRNTEZvcm1FbGVtZW50KiBmKQorICAgIDogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQodGFn
TmFtZSwgZG9jLCBmKQogICAgICwgbV94UG9zKDApCiAgICAgLCBtX3lQb3MoMCkKICAgICAsIG1f
bWF4UmVzdWx0cygtMSkKQEAgLTEyMywxMSArMTIzLDYgQEAgSFRNTElucHV0RWxlbWVudDo6SFRN
TElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW0KICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbnB1dFRhZykgfHwgaGFzVGFnTmFtZShpc2luZGV4
VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQotewotICAgIHJldHVybiBuZXcgSFRNTElucHV0RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7Ci19Ci0KIEhUTUxJbnB1dEVsZW1lbnQ6On5I
VE1MSW5wdXRFbGVtZW50KCkKIHsKICAgICBpZiAobmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2soKSkK
QEAgLTIzNTcsNyArMjM1Miw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZ0KQogCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTElu
cHV0RWxlbWVudDo6Y3JlYXRlVGVtcG9yYXJ5Rm9ybUZvcklzSW5kZXgoKQogewotICAgIFJlZlB0
cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0gPSBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCgpKTsKKyAgICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtID0gbmV3IEhUTUxGb3JtRWxl
bWVudChmb3JtVGFnLCBkb2N1bWVudCgpKTsKICAgICBmb3JtLT5yZWdpc3RlckZvcm1FbGVtZW50
KHRoaXMpOwogICAgIGZvcm0tPnNldE1ldGhvZCgiR0VUIik7CiAgICAgaWYgKCFkb2N1bWVudCgp
LT5iYXNlVVJMKCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAyNGM2
MTFkZjM5ZjUzNDdkY2UyMzIyNzE0OWJiYTk0YTUxYmE5MTk4Li5kYTljZWU3ZmNhZDM0MjhkNzMz
OGQ1YzllYzQ3YWUyNjEzMzNhNGM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC02OSwxMSArNjksNDAgQEAgcHVibGljOgogICAgIH07CiAgICAgc3RhdGljIGNvbnN0IGludCBu
dW1iZXJPZlR5cGVzID0gV0VFSyArIDE7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSW5w
dXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZv
cm1FbGVtZW50Kik7CisgICAgZW51bSBBdXRvQ29tcGxldGVTZXR0aW5nIHsKKyAgICAgICAgVW5p
bml0aWFsaXplZCwKKyAgICAgICAgT24sCisgICAgICAgIE9mZgorICAgIH07CisKKyAgICBIVE1M
SW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxl
bWVudCogPSAwKTsKICAgICB2aXJ0dWFsIH5IVE1MSW5wdXRFbGVtZW50KCk7CiAKKyAgICB2aXJ0
dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdT
dGF0dXNGb3JiaWRkZW47IH0KKyAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJv
YXJkRXZlbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlu
cHV0VHlwZSgpICE9IElNQUdFOyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFy
YW5jZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGFi
b3V0VG9VbmxvYWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUo
KSBjb25zdDsKKyAKICAgICBib29sIGF1dG9Db21wbGV0ZSgpIGNvbnN0OwogCisgICAgLy8gaXND
aGVja2VkIGlzIHVzZWQgYnkgdGhlIHJlbmRlcmluZyB0cmVlL0NTUyB3aGlsZSBjaGVja2VkKCkg
aXMgdXNlZCBieSBKUyB0byBkZXRlcm1pbmUgY2hlY2tlZCBzdGF0ZQorICAgIHZpcnR1YWwgYm9v
bCBpc0NoZWNrZWQoKSBjb25zdCB7IHJldHVybiBjaGVja2VkKCkgJiYgKGlucHV0VHlwZSgpID09
IENIRUNLQk9YIHx8IGlucHV0VHlwZSgpID09IFJBRElPKTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBpbmRldGVybWluYXRlKCk7IH0KKyAgICAK
KyAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gaXNSZWFkT25seUZvcm1Db250cm9s
KCk7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuIGlzVGV4dEZpZWxkKCk7IH0KKworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1pc21hdGNoKCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIHRvb0xvbmcoKSBjb25zdDsKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQogICAg
IGJvb2wgcmFuZ2VVbmRlcmZsb3coKSBjb25zdDsKICAgICBib29sIHJhbmdlT3ZlcmZsb3coKSBj
b25zdDsKQEAgLTEwMCwxOCArMTI5LDI1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNU
ZXh0RmllbGQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBTRUFSQ0g7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFR5
cGVIaWRkZW4oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gSElEREVOOyB9CisgICAgdmlydHVh
bCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBQQVNTV09S
RDsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IE5VTUJFUiB8fCBtX3R5cGUgPT0gREFURSB8fCBtX3R5cGUgPT0gREFURVRJTUUgfHwg
bV90eXBlID09IERBVEVUSU1FTE9DQUwgfHwgbV90eXBlID09IE1PTlRIIHx8IG1fdHlwZSA9PSBU
SU1FIHx8IG1fdHlwZSA9PSBXRUVLOyB9CisgICAgdmlydHVhbCBib29sIGNhblRyaWdnZXJJbXBs
aWNpdFN1Ym1pc3Npb24oKSBjb25zdCB7IHJldHVybiBpc1RleHRGaWVsZCgpOyB9CiAKICAgICBi
b29sIGNoZWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrZWQ7IH0KICAgICB2b2lkIHNldENo
ZWNrZWQoYm9vbCwgYm9vbCBzZW5kQ2hhbmdlRXZlbnQgPSBmYWxzZSk7CiAKICAgICAvLyAnaW5k
ZXRlcm1pbmF0ZScgaXMgYSBzdGF0ZSBpbmRlcGVuZGVudCBvZiB0aGUgY2hlY2tlZCBzdGF0ZSB0
aGF0IGNhdXNlcyB0aGUgY29udHJvbCB0byBkcmF3IGluIGEgd2F5IHRoYXQgaGlkZXMgdGhlIGFj
dHVhbCBzdGF0ZS4KKyAgICBib29sIGFsbG93c0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVy
biBpbnB1dFR5cGUoKSA9PSBDSEVDS0JPWCB8fCBpbnB1dFR5cGUoKSA9PSBSQURJTzsgfQogICAg
IGJvb2wgaW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXRlcm1pbmF0ZTsgfQog
ICAgIHZvaWQgc2V0SW5kZXRlcm1pbmF0ZShib29sKTsKIAogICAgIHZpcnR1YWwgaW50IHNpemUo
KSBjb25zdDsKLQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdDsKICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVmFsdWUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN1
Z2dlc3RlZFZhbHVlKGNvbnN0IFN0cmluZyYpOworCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCBz
ZW5kQ2hhbmdlRXZlbnQgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlRm9yVXNl
cihjb25zdCBTdHJpbmcmKTsKQEAgLTEyNSwyMiArMTYxLDUyIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRQbGFj
ZWhvbGRlcihjb25zdCBTdHJpbmcmKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzZWFyY2hFdmVudHNT
aG91bGRCZURpc3BhdGNoZWQoKSBjb25zdDsKKwogICAgIFN0cmluZyB2YWx1ZVdpdGhEZWZhdWx0
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVGcm9tUmVuZGVyZXIoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRGaWxlTGlzdEZyb21SZW5kZXJlcihjb25zdCBWZWN0b3I8
U3RyaW5nPiYpOwogCisgICAgdmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmlu
ZyYgdmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0
ZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigp
IGNvbnN0OworICAgIAogICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGlvbigpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3QoKSB7IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Qo
KTsgfQogCisgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRUb0FueUVs
ZW1lbnQpOworCisgICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKworICAgIHZpcnR1
YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2Up
OworCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYs
IGJvb2wpOworCisgICAgdmlydHVhbCBib29sIGlzU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCBmbGFnKTsKIAogICAgIElucHV0VHlw
ZSBpbnB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbnB1dFR5cGU+KG1fdHlw
ZSk7IH0KICAgICB2b2lkIHNldElucHV0VHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICAKKyAgICAv
LyBSZXBvcnQgaWYgdGhpcyBpbnB1dCB0eXBlIHVzZXMgaGVpZ2h0ICYgd2lkdGggYXR0cmlidXRl
cworICAgIGJvb2wgcmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cnMoKSBjb25zdCB7IHJldHVybiBp
bnB1dFR5cGUoKSA9PSBJTUFHRSB8fCBpbnB1dFR5cGUoKSA9PSBISURERU47IH0KKworICAgIHZp
cnR1YWwgdm9pZCByZXNldCgpOworCisgICAgdmlydHVhbCB2b2lkKiBwcmVEaXNwYXRjaEV2ZW50
SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBwb3N0RGlzcGF0Y2hFdmVudEhhbmRs
ZXIoRXZlbnQqLCB2b2lkKiBkYXRhRnJvbVByZURpc3BhdGNoKTsKIAogICAgIFN0cmluZyBhbHRU
ZXh0KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJp
YnV0ZSopIGNvbnN0OwogCiAgICAgaW50IG1heFJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX21h
eFJlc3VsdHM7IH0KIApAQCAtMTY5LDYgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgS1VSTCBzcmMo
KSBjb25zdDsKICAgICB2b2lkIHNldFNyYyhjb25zdCBTdHJpbmcmKTsKIAorI2lmIEVOQUJMRShE
QVRBTElTVCkKKyAgICBIVE1MRWxlbWVudCogbGlzdCgpIGNvbnN0OworICAgIEhUTUxPcHRpb25F
bGVtZW50KiBzZWxlY3RlZE9wdGlvbigpIGNvbnN0OworI2VuZGlmCisKICAgICBpbnQgbWF4TGVu
Z3RoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNYXhMZW5ndGgoaW50LCBFeGNlcHRpb25Db2RlJik7
CiAKQEAgLTE4MywxMDMgKzI1NCwzMiBAQCBwdWJsaWM6CiAKICAgICBGaWxlTGlzdCogZmlsZXMo
KTsKIAorICAgIHZpcnR1YWwgdm9pZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQp
OwogICAgIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAgdm9pZCBvblNlYXJjaCgpOwogCisg
ICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOworCisgICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OworICAgIAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBhcyB0aGUgSW5w
dXRUeXBlLCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0IGlzIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCiAg
ICAgLy8gQW4gaW5zdGFuY2UgcG9pbnRlZCBieSB0aGUgRGF0ZUNvbXBvbmVudHMqIHBhcmFtZXRl
ciB3aWxsIGhhdmUgcGFyc2VkIHZhbHVlcyBhbmQgYmUKICAgICAvLyBtb2RpZmllZCBldmVuIGlm
IHRoZSBwYXJzaW5nIGZhaWxzLiAgVGhlIERhdGVDb21wb25lbnRzKiBwYXJhbWV0ZXIgbWF5IGJl
IDAuCiAgICAgc3RhdGljIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzKElucHV0VHlwZSwgY29u
c3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKTsKIAotI2lmIEVOQUJMRShEQVRBTElTVCkKLSAg
ICBIVE1MRWxlbWVudCogbGlzdCgpIGNvbnN0OwotICAgIEhUTUxPcHRpb25FbGVtZW50KiBzZWxl
Y3RlZE9wdGlvbigpIGNvbnN0OworI2lmIEVOQUJMRShXQ1NTKQorICAgIHZvaWQgc2V0V2FwSW5w
dXRGb3JtYXQoU3RyaW5nJiBtYXNrKTsKKyAgICB2aXJ0dWFsIElucHV0RWxlbWVudERhdGEgZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogI2VuZGlmCi0KKyAgICAKIHByb3RlY3RlZDoK
LSAgICBIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhU
TUxGb3JtRWxlbWVudCogPSAwKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBBdXRvQ29tcGxldGVTZXR0aW5nIHsg
VW5pbml0aWFsaXplZCwgT24sIE9mZiB9OwotCiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwog
Ci0gICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gVGFnU3RhdHVzRm9yYmlkZGVuOyB9Ci0gICAgdmlydHVhbCBpbnQgdGFnUHJpb3JpdHko
KSBjb25zdCB7IHJldHVybiAwOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3Vz
YWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1
c2FibGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCB7
IHJldHVybiBpbnB1dFR5cGUoKSAhPSBJTUFHRTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
b2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwotICAgIHZpcnR1
YWwgdm9pZCBhYm91dFRvVW5sb2FkKCk7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0
TWV0aG9kKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xOYW1lKCkgY29uc3Q7Ci0gCi0gICAgLy8gaXNDaGVja2VkIGlzIHVzZWQgYnkgdGhlIHJl
bmRlcmluZyB0cmVlL0NTUyB3aGlsZSBjaGVja2VkKCkgaXMgdXNlZCBieSBKUyB0byBkZXRlcm1p
bmUgY2hlY2tlZCBzdGF0ZQotICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCB7IHJl
dHVybiBjaGVja2VkKCkgJiYgKGlucHV0VHlwZSgpID09IENIRUNLQk9YIHx8IGlucHV0VHlwZSgp
ID09IFJBRElPKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7
IHJldHVybiBpbmRldGVybWluYXRlKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBpc1RleHRGaWVsZCgpOyB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhdHRlcm5N
aXNtYXRjaCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCB0b29Mb25nKCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IFBBU1NXT1JEOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1NwaW5CdXR0b24oKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gTlVNQkVSIHx8IG1fdHlwZSA9PSBEQVRFIHx8IG1fdHlwZSA9PSBEQVRF
VElNRSB8fCBtX3R5cGUgPT0gREFURVRJTUVMT0NBTCB8fCBtX3R5cGUgPT0gTU9OVEggfHwgbV90
eXBlID09IFRJTUUgfHwgbV90eXBlID09IFdFRUs7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuVHJp
Z2dlckltcGxpY2l0U3VibWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0K
LQotICAgIGJvb2wgYWxsb3dzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0dXJuIGlucHV0VHlw
ZSgpID09IENIRUNLQk9YIHx8IGlucHV0VHlwZSgpID09IFJBRElPOyB9Ci0KLSAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7Ci0KLSAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVmFsdWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFN1
Z2dlc3RlZFZhbHVlKGNvbnN0IFN0cmluZyYpOwotCi0gICAgdmlydHVhbCBib29sIHNlYXJjaEV2
ZW50c1Nob3VsZEJlRGlzcGF0Y2hlZCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNhdmVG
b3JtQ29udHJvbFN0YXRlKFN0cmluZyYgdmFsdWUpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBy
ZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBTdHJpbmcmKTsKLQotICAgIHZpcnR1YWwgYm9v
bCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nl
c3NLZXlBY3Rpb24oYm9vbCBzZW5kVG9BbnlFbGVtZW50KTsKLQotICAgIHZpcnR1YWwgYm9vbCBt
YXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVF
bnRyeSYgcmVzdWx0KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3Bl
cnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKLQotICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29s
KTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmF0ZWRTdWJtaXQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wgZmxhZyk7Ci0KLSAgICAvLyBSZXBvcnQgaWYg
dGhpcyBpbnB1dCB0eXBlIHVzZXMgaGVpZ2h0ICYgd2lkdGggYXR0cmlidXRlcwotICAgIGJvb2wg
cmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cnMoKSBjb25zdCB7IHJldHVybiBpbnB1dFR5cGUoKSA9
PSBJTUFHRSB8fCBpbnB1dFR5cGUoKSA9PSBISURERU47IH0KLQotICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpOwotCi0gICAgdmlydHVhbCB2b2lkKiBwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVu
dCopOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0RGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqLCB2
b2lkKiBkYXRhRnJvbVByZURpc3BhdGNoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBjYWNoZVNlbGVjdGlv
bihpbnQgc3RhcnQsIGludCBlbmQpOwotCi0gICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1
ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJl
Y29tZUFjdGl2ZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwotCitwcml2YXRlOgogICAgIGJvb2wgc3Rv
cmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKSBjb25zdDsKIAogICAgIGJvb2wgbmVlZHNB
Y3RpdmF0aW9uQ2FsbGJhY2soKTsKQEAgLTMyNSwxMSArMzI1LDYgQEAgcHJpdmF0ZToKICAgICBI
VE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlzdCgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoV0NTUykKLSAgICB2b2lkIHNldFdhcElucHV0Rm9ybWF0KFN0cmluZyYgbWFzayk7Ci0gICAg
dmlydHVhbCBJbnB1dEVsZW1lbnREYXRhIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
LSNlbmRpZgotCiAgICAgSW5wdXRFbGVtZW50RGF0YSBtX2RhdGE7CiAgICAgaW50IG1feFBvczsK
ICAgICBpbnQgbV95UG9zOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcAppbmRleCBkMzgy
YWY1MGRlOTdiYmJlNjdmOGJlZTQyOTE5MmM1MDUzZWU1OWVmLi41Y2M3M2RlNDg4NGYzM2I3NTNl
OTZiMzYwZWZhNmIyZTg2NzExY2M3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElzSW5k
ZXhFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcApA
QCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3Vy
eWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zMiwyMyArMzIsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MSXNJ
bmRleEVsZW1lbnQ6OkhUTUxJc0luZGV4RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhU
TUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCitIVE1MSXNJbmRleEVsZW1l
bnQ6OkhUTUxJc0luZGV4RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCAqZG9jLCBIVE1MRm9ybUVsZW1lbnQgKmYpCisgICAgOiBIVE1MSW5wdXRFbGVtZW50KHRh
Z05hbWUsIGRvYywgZikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpc2luZGV4VGFnKSk7CiAg
ICAgc2V0RGVmYXVsdE5hbWUoaXNpbmRleFRhZy5sb2NhbE5hbWUoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8SFRNTElzSW5kZXhFbGVtZW50PiBIVE1MSXNJbmRleEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLXsKLSAgICByZXR1cm4gbmV3IEhU
TUxJc0luZGV4RWxlbWVudChpc2luZGV4VGFnLCBkb2N1bWVudCwgZm9ybSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8SFRNTElzSW5kZXhFbGVtZW50PiBIVE1MSXNJbmRleEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxl
bWVudCogZm9ybSkKLXsKLSAgICByZXR1cm4gbmV3IEhUTUxJc0luZGV4RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgZm9ybSk7Ci19Ci0KIHZvaWQgSFRNTElzSW5kZXhFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBwcm9tcHRBdHRyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5oCmluZGV4IDUyOGYzZTJjZWEw
ZTIzMDE2OWFiMTZmM2FlZmI1MmIzNjVkOTFjZmQuLmY4MTI0ZjY5MzQxOTE4M2M4YzUyMzhkYzFh
OTNmZGE2YWI3MGRlZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1l
bnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmgKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNyArMjAsNiBAQAogICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKgogICovCi0KICNpZm5kZWYgSFRNTElzSW5kZXhFbGVt
ZW50X2gKICNkZWZpbmUgSFRNTElzSW5kZXhFbGVtZW50X2gKIApAQCAtMzAsMjIgKzI5LDIxIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElzSW5kZXhFbGVtZW50IDogcHVibGlj
IEhUTUxJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxJ
c0luZGV4RWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTElzSW5kZXhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7Ci0KLSAgICBTdHJpbmcgcHJv
bXB0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcm9tcHQoY29uc3QgU3RyaW5nJik7Ci0KLXByaXZh
dGU6Ci0gICAgSFRNTElzSW5kZXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCosIEhUTUxGb3JtRWxlbWVudCopOworICAgIEhUTUxJc0luZGV4RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQgKmRvYywgSFRNTEZvcm1FbGVtZW50ICpmID0gMCk7CiAKICAg
ICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVy
biBUYWdTdGF0dXNGb3JiaWRkZW47IH0KICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0U3Vi
bWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKTsKKworICAgIFN0cmluZyBwcm9tcHQoKSBjb25z
dDsKKyAgICB2b2lkIHNldFByb21wdChjb25zdCBTdHJpbmcgJik7CisKK3Byb3RlY3RlZDoKKyAg
ICBTdHJpbmcgbV9wcm9tcHQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvL25hbWVzcGFjZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCA3NGMzNDY4OTEwYjA3NmU2YTIyMzFi
N2I1ZjE4NWJiMjMzY2QyYmE1Li4xYmZiNmY1YTc3ZTFiYzI4YzhiZTUxZmJkMmRiYzQ4MzAyZTU2
MmUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAotLyoKKy8qKgogICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsMjMgKzMzLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTExJRWxlbWVudDo6SFRN
TExJRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKK0hUTUxMSUVsZW1lbnQ6
OkhUTUxMSUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAsIG1fcmVxdWVzdGVkVmFs
dWUoMCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsaVRhZykpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
Ci17Ci0gICAgcmV0dXJuIG5ldyBIVE1MTElFbGVtZW50KGxpVGFnLCBkb2N1bWVudCk7Ci19Ci0K
LVBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4g
bmV3IEhUTUxMSUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwotfQotCiBib29sIEhUTUxMSUVs
ZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0
dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKGF0dHJOYW1lID09IHR5cGVB
dHRyKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxMSUVsZW1lbnQuaAppbmRleCA1Y2UwMGYyYjYzNjkyNDNiN2MyNGM2YjA4NDUy
NDYzMDk0MDJjYjBiLi42YjQ2YjQxMzA0OTQ0MjBmY2IzYjhkOTFiZjEwNjg3OTg3ZWI0ZTgwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MTElFbGVtZW50LmgKQEAgLTEsNyArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSwx
NiArMjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxMSUVsZW1lbnQgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxM
SUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxM
SUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAg
IFN0cmluZyB0eXBlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYpOwot
Ci0gICAgaW50IHZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWYWx1ZShpbnQpOwotCi1wcml2
YXRlOgogICAgIEhUTUxMSUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7
IHJldHVybiBUYWdTdGF0dXNPcHRpb25hbDsgfQpAQCAtNDksNiArMzgsMTMgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAorICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYpOworCisgICAgaW50IHZhbHVlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRWYWx1ZShpbnQpOworCitwcml2YXRlOgogICAgIGludCBtX3JlcXVl
c3RlZFZhbHVlOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1l
bnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCmluZGV4IGVkMGZhYjZk
M2RjNGQzZWJlMzQ4YjFmZDQ2NDdiZDAyZDE1MjcxNTMuLjdiYzgxZTIzNjM5YzlkZmVjMTIxZTU4
NDA4OWQ4MGJmOGMyOTAzMmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBTGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zOCw3
ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiBub2RlQXNMYWJlbGFibGVGb3JtQ29udHJvbChOb2RlKiBub2RlKQogewot
ICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8ICFzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgaWYgKCFub2RlIHx8
ICFub2RlLT5pc0hUTUxFbGVtZW50KCkgfHwgIXN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obm9k
ZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAg
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihub2RlKTsKQEAgLTQ4LDE1ICs0OCwxNCBAQCBzdGF0
aWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCogbm9kZUFzTGFiZWxhYmxlRm9ybUNvbnRyb2woTm9k
ZSogbm9kZSkKICAgICByZXR1cm4gZm9ybUNvbnRyb2xFbGVtZW50OwogfQogCi1pbmxpbmUgSFRN
TExhYmVsRWxlbWVudDo6SFRNTExhYmVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKK0hUTUxMYWJlbEVsZW1lbnQ6OkhUTUxMYWJlbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvYykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsYWJlbFRhZykpOwogfQogCi1QYXNzUmVm
UHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCitIVE1MTGFiZWxFbGVtZW50
Ojp+SFRNTExhYmVsRWxlbWVudCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTGFiZWxFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAogYm9vbCBIVE1MTGFiZWxFbGVtZW50Ojppc0ZvY3Vz
YWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaAppbmRleCA3NTlmZmNkM2I4MmQ2MmI0
YzJlYzc2YWYxZDdhMWMxMjBkMzM2NzAxLi5lNmI1MTNkNTRjMDBiMjEyNThlMzcxNzU0NjliNDAy
YTlkMGY3MmMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMSwxOCArMzEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxMYWJlbEVsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMYWJl
bEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAg
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2woKTsKLQotICAgIFN0cmluZyBhY2Nlc3NL
ZXkoKSBjb25zdDsKLSAgICB2b2lkIHNldEFjY2Vzc0tleShjb25zdCBTdHJpbmcmKTsKLSAgICAK
LSAgICBTdHJpbmcgaHRtbEZvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0SHRtbEZvcihjb25zdCBT
dHJpbmcmKTsKLQotcHJpdmF0ZToKICAgICBIVE1MTGFiZWxFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOworICAgIHZpcnR1YWwgfkhUTUxMYWJlbEVsZW1lbnQoKTsKIAog
ICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gNTsgfQogCkBAIC01
Nyw5ICs0NywyMCBAQCBwcml2YXRlOgogICAgIC8vIE92ZXJyaWRkZW4gdG8gZWl0aGVyIGNsaWNr
KCkgb3IgZm9jdXMoKSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sLgogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KiBjb250cm9sKCk7CisKKyAgICBTdHJpbmcgYWNjZXNzS2V5KCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgU3RyaW5nIGh0bWxGb3Io
KSBjb25zdDsKKyAgICB2b2lkIHNldEh0bWxGb3IoY29uc3QgU3RyaW5nJik7CisKICAgICB2b2lk
IGZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSk7CiAKKyBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKwor
ICAgIFN0cmluZyBtX2Zvcm1FbGVtZW50SUQ7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxMZWdlbmRFbGVtZW50LmNwcAppbmRleCAwYWE0MTQyN2RhNGFkZGZlZTk1MzNiYWE3NWIwZmJj
NjM4YjU2MzExLi41MTZjYTU0MjZjNDljZTIwM2Q2MGI2MzkxM2JjNjhhZjJkMDcxOTcwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqICAgICAg
ICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMzIsMTUgKzMyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotaW5saW5lIEhUTUxMZWdlbmRFbGVtZW50OjpIVE1MTGVnZW5k
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQs
IEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGZvcm0pCitIVE1MTGVnZW5kRWxlbWVudDo6SFRNTExlZ2VuZEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYywgSFRNTEZvcm1F
bGVtZW50ICpmKQorICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1lLCBkb2MsIGYp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGVnZW5kVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8
SFRNTExlZ2VuZEVsZW1lbnQ+IEhUTUxMZWdlbmRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCitIVE1MTGVnZW5kRWxlbWVudDo6fkhUTUxMZWdlbmRFbGVtZW50KCkKIHsKLSAgICByZXR1
cm4gbmV3IEhUTUxMZWdlbmRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKIH0KIAog
Ym9vbCBIVE1MTGVnZW5kRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CkBAIC03NCwyMyAr
NzMsMjMgQEAgdm9pZCBIVE1MTGVnZW5kRWxlbWVudDo6c2V0QWxpZ24oY29uc3QgU3RyaW5nICZ2
YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGUoYWxpZ25BdHRyLCB2YWx1ZSk7CiB9CiAKLUhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQqIEhUTUxMZWdlbmRFbGVtZW50Ojphc3NvY2lhdGVkQ29udHJvbCgpCitF
bGVtZW50ICpIVE1MTGVnZW5kRWxlbWVudDo6Zm9ybUVsZW1lbnQoKQogewogICAgIC8vIENoZWNr
IGlmIHRoZXJlJ3MgYSBmaWVsZHNldCBiZWxvbmdpbmcgdG8gdGhpcyBsZWdlbmQuCi0gICAgTm9k
ZSogZmllbGRzZXQgPSBwYXJlbnROb2RlKCk7CisgICAgTm9kZSAqZmllbGRzZXQgPSBwYXJlbnRO
b2RlKCk7CiAgICAgd2hpbGUgKGZpZWxkc2V0ICYmICFmaWVsZHNldC0+aGFzVGFnTmFtZShmaWVs
ZHNldFRhZykpCiAgICAgICAgIGZpZWxkc2V0ID0gZmllbGRzZXQtPnBhcmVudE5vZGUoKTsKICAg
ICBpZiAoIWZpZWxkc2V0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIC8vIEZpbmQgZmlyc3Qg
Zm9ybSBlbGVtZW50IGluc2lkZSB0aGUgZmllbGRzZXQgdGhhdCBpcyBub3QgYSBsZWdlbmQgZWxl
bWVudC4KLSAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNvbnNpZGVyIHRhYmluZGV4PwotICAgIE5v
ZGUqIG5vZGUgPSBmaWVsZHNldDsKKyAgICAvLyBGaW5kIGZpcnN0IGZvcm0gZWxlbWVudCBpbnNp
ZGUgdGhlIGZpZWxkc2V0LgorICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2FyZSBhYm91dCB0YWJp
bmRleD8KKyAgICBOb2RlICpub2RlID0gZmllbGRzZXQ7CiAgICAgd2hpbGUgKChub2RlID0gbm9k
ZS0+dHJhdmVyc2VOZXh0Tm9kZShmaWVsZHNldCkpKSB7Ci0gICAgICAgIGlmIChub2RlLT5pc0Vs
ZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkpIHsK
KyAgICAgICAgICAgIEhUTUxFbGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1l
bnQgKj4obm9kZSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQtPmhhc0xvY2FsTmFtZShsZWdl
bmRUYWcpICYmIGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihlbGVtZW50KTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MTAyLDE1ICsxMDEsMTUgQEAgdm9pZCBIVE1MTGVnZW5kRWxlbWVudDo6Zm9jdXMoYm9vbCkKICAg
ICBpZiAoaXNGb2N1c2FibGUoKSkKICAgICAgICAgRWxlbWVudDo6Zm9jdXMoKTsKICAgICAgICAg
Ci0gICAgLy8gVG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMnIGJlaGF2aW9yLCBuZXZlciByZXN0b3Jl
IHByZXZpb3VzIHNlbGVjdGlvbi4KLSAgICBpZiAoSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29u
dHJvbCA9IGFzc29jaWF0ZWRDb250cm9sKCkpCi0gICAgICAgIGNvbnRyb2wtPmZvY3VzKGZhbHNl
KTsKKyAgICAvLyB0byBtYXRjaCBvdGhlciBicm93c2VycywgbmV2ZXIgcmVzdG9yZSBwcmV2aW91
cyBzZWxlY3Rpb24KKyAgICBpZiAoRWxlbWVudCAqZWxlbWVudCA9IGZvcm1FbGVtZW50KCkpCisg
ICAgICAgIGVsZW1lbnQtPmZvY3VzKGZhbHNlKTsKIH0KIAogdm9pZCBIVE1MTGVnZW5kRWxlbWVu
dDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCkKIHsKLSAgICBpZiAoSFRN
TEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IGFzc29jaWF0ZWRDb250cm9sKCkpCi0gICAg
ICAgIGNvbnRyb2wtPmFjY2Vzc0tleUFjdGlvbihzZW5kVG9BbnlFbGVtZW50KTsKKyAgICBpZiAo
RWxlbWVudCAqZWxlbWVudCA9IGZvcm1FbGVtZW50KCkpCisgICAgICAgIGVsZW1lbnQtPmFjY2Vz
c0tleUFjdGlvbihzZW5kVG9BbnlFbGVtZW50KTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MTGVnZW5kRWxlbWVudC5oCmluZGV4IGZhMmFhMmJjNDcxOTI2Nzg4MGJmZDUxNzJkOGNk
ZDVjMzllZTIyNTAuLjFiMzk0ZTQxOGM0OTEyNGFkYzkwNGU5ZTE4YWFmNGY2MjQwMGNiYjIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTMwLDI0ICszMCwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhUTUxMZWdlbmRFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMZWdlbmRFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAgSFRN
TExlZ2VuZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1F
bGVtZW50KiA9IDApOworICAgIHZpcnR1YWwgfkhUTUxMZWdlbmRFbGVtZW50KCk7CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWNj
ZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCk7CisKKyAgICAvKioKKyAgICAgKiBU
aGUgZmlyc3QgZm9ybSBlbGVtZW50IGluIHRoZSBsZWdlbmQncyBmaWVsZHNldCAKKyAgICAgKi8K
KyAgICBFbGVtZW50KiBmb3JtRWxlbWVudCgpOwogCiAgICAgU3RyaW5nIGFjY2Vzc0tleSgpIGNv
bnN0OwotICAgIHZvaWQgc2V0QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0
QWNjZXNzS2V5KGNvbnN0IFN0cmluZyAmKTsKIAogICAgIFN0cmluZyBhbGlnbigpIGNvbnN0Owot
ICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRBbGlnbihjb25z
dCBTdHJpbmcgJik7CiAgICAgCi1wcml2YXRlOgotICAgIEhUTUxMZWdlbmRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwotCi0gICAgLy8g
Q29udHJvbCBpbiB0aGUgbGVnZW5kJ3MgZmllbGRzZXQgdGhhdCBnZXRzIGZvY3VzIGFuZCBhY2Nl
c3Mga2V5LgotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGFzc29jaWF0ZWRDb250cm9sKCk7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0OwotICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCk7Ci0gICAgdmlydHVh
bCB2b2lkIGZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSk7CisgICAg
dm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpOwogfTsKIAog
fSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBmNTJhMjhmMjc0NWY3
ZGVmNzNkOTE1N2ZiMWY4ZjE0MWExYzI1MmVhLi4wNjVkYzM2YWI1YWMwNDY3MjY1YWFmMzY0ZGZj
NzIwNWI0YTU5ODZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDYsOCArNDYsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWlu
bGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQotICAg
IDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCitIVE1MTGlua0VsZW1lbnQ6OkhUTUxM
aW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwgRG9jdW1lbnQgKmRvYywgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpCisgICAgOiBIVE1MRWxlbWVudChxTmFtZSwgZG9jKQorICAgICwg
bV9jYWNoZWRTaGVldCgwKQogICAgICwgbV9kaXNhYmxlZFN0YXRlKFVuc2V0KQogICAgICwgbV9s
b2FkaW5nKGZhbHNlKQogICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKQpA
QCAtNTUsMTEgKzU2LDYgQEAgaW5saW5lIEhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KgogICAgIEFTU0VSVChoYXNU
YWdOYW1lKGxpbmtUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IEhUTUxM
aW5rRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCi17Ci0gICAgcmV0dXJuIG5ldyBIVE1M
TGlua0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcik7Ci19Ci0KIEhU
TUxMaW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiB7CiAgICAgaWYgKG1fY2FjaGVkU2hl
ZXQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA0MjIzN2ZjN2IxYWQwNTBjYzBhN2U0MjE4
N2I2YjQzMjMyODc1NDEzLi4wMDYzNmQwYjMyYTRiMTk4NzQ5MDI2ODQ1OGYzMTQxMGU2MDBlYjkx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC00NCw4ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIFJlbEF0dHJpYnV0ZSgpIDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpLCBtX2lzSWNvbihmYWxz
ZSksIG1faXNBbHRlcm5hdGUoZmFsc2UpLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpIHsgfQogICAg
IH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7Ci0gICAg
dmlydHVhbCB+SFRNTExpbmtFbGVtZW50KCk7CisgICAgSFRNTExpbmtFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICB+SFRN
TExpbmtFbGVtZW50KCk7CisKKyAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWly
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNGb3JiaWRkZW47IH0KKyAgICB2aXJ0dWFs
IGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIGJvb2wgZGlzYWJs
ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2FibGVkKGJvb2wpOwpAQCAtNzYsMTYgKzc5LDcg
QEAgcHVibGljOgogCiAgICAgU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdDsKIAotICAgIGJvb2wg
aXNMb2FkaW5nKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2FibGVkU3RhdGUgPT0gRGlzYWJsZWQ7IH0KLSAgICBib29sIGlzRW5hYmxlZFZpYVNj
cmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0
OyB9Ci0gICAgYm9vbCBpc0ljb24oKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5tX2lz
SWNvbjsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1cyBlbmRUYWdSZXF1
aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c0ZvcmJpZGRlbjsgfQotICAgIHZpcnR1
YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMDsgfQotCisgICAgLy8gb3Zlcmxv
YWQgZnJvbSBIVE1MRWxlbWVudAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKIAogICAgIHZvaWQgcHJvY2VzcygpOwpAQCAtOTUsMjUgKzg5LDI1IEBA
IHByaXZhdGU6CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAgICAgdmlydHVh
bCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQq
IHNoZWV0KTsKKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBz
aGVldExvYWRlZCgpOwogCiAgICAgYm9vbCBpc0FsdGVybmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzYWJsZWRTdGF0ZSA9PSBVbnNldCAmJiBtX3JlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlOyB9
CisgICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09
IERpc2FibGVkOyB9CisgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQorICAgIGJvb2wgaXNJY29u
KCkgY29uc3QgeyByZXR1cm4gbV9yZWxBdHRyaWJ1dGUubV9pc0ljb247IH0KICAgICAKICAgICB2
b2lkIHNldERpc2FibGVkU3RhdGUoYm9vbCBfZGlzYWJsZWQpOwogCiAgICAgdmlydHVhbCBib29s
IGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogICAgIAotcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHRva2VuaXplUmVsQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUs
IFJlbEF0dHJpYnV0ZSYpOwogCi1wcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAotcHJpdmF0ZToKLSAgICBIVE1MTGlu
a0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpOwotCitwcm90ZWN0ZWQ6CiAgICAgZW51bSBEaXNhYmxlZFN0YXRlIHsKICAgICAgICAg
VW5zZXQsCiAgICAgICAgIEVuYWJsZWRWaWFTY3JpcHQsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKaW5kZXggZGQ4
MjJjZjdjMjU0MjE0ZjA1ZWYwODU5YzExZWMwMTcyMWE3ZmNhNy4uNDQ4MzlhZWZlOGQ0MDE0NjY2
ZGIyOTU0YTVlZWI5NGYxNmEyZjJiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxQYXJz
ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcApAQCAtNDMxLDYgKzQzMSw3
IEBAIGJvb2wgSFRNTFBhcnNlcjo6aW5zZXJ0Tm9kZShOb2RlKiBuLCBib29sIGZsYXQpCiBib29s
IEhUTUxQYXJzZXI6OmhhbmRsZUVycm9yKE5vZGUqIG4sIGJvb2wgZmxhdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIGludCB0YWdQcmlvcml0eSkKIHsKICAgICAvLyBFcnJvciBoYW5k
bGluZyBjb2RlLiAgVGhpcyBpcyBqdXN0IGFkIGhvYyBoYW5kbGluZyBvZiBzcGVjaWZpYyBwYXJl
bnQvY2hpbGQgY29tYmluYXRpb25zLgorICAgIEhUTUxFbGVtZW50KiBlOwogICAgIGJvb2wgaGFu
ZGxlZCA9IGZhbHNlOwogCiAgICAgLy8gMS4gQ2hlY2sgb3V0IHRoZSBlbGVtZW50J3MgdGFnIG5h
bWUgdG8gZGVjaWRlIGhvdyB0byBkZWFsIHdpdGggZXJyb3JzLgpAQCAtNTU4LDcgKzU1OSw3IEBA
IGJvb2wgSFRNTFBhcnNlcjo6aGFuZGxlRXJyb3IoTm9kZSogbiwgYm9vbCBmbGF0LCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSwKICAgICAgICAgICAgICAgICBlbHQtPmhhc0xvY2FsTmFt
ZSh0aXRsZVRhZykgfHwgZWx0LT5oYXNMb2NhbE5hbWUoaXNpbmRleFRhZykgfHwKICAgICAgICAg
ICAgICAgICBlbHQtPmhhc0xvY2FsTmFtZShiYXNlVGFnKSkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIW1faGVhZCkgewotICAgICAgICAgICAgICAgICAgICBtX2hlYWQgPSBIVE1MSGVhZEVsZW1l
bnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbV9oZWFkID0gbmV3
IEhUTUxIZWFkRWxlbWVudChoZWFkVGFnLCBtX2RvY3VtZW50KTsKICAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0Tm9kZShtX2hlYWQuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CkBAIC03MTAsNyArNzExLDggQEAgYm9vbCBIVE1M
UGFyc2VyOjpoYW5kbGVFcnJvcihOb2RlKiBuLCBib29sIGZsYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxOYW1lLAogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgaW5zZXJ0Tm9kZShIVE1MSHRtbEVsZW1lbnQ6
OmNyZWF0ZShtX2RvY3VtZW50KS5nZXQoKSk7CisgICAgICAgICAgICBlID0gbmV3IEhUTUxIdG1s
RWxlbWVudChodG1sVGFnLCBtX2RvY3VtZW50KTsKKyAgICAgICAgICAgIGluc2VydE5vZGUoZSk7
CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTc0MSw3
ICs3NDMsNyBAQCBib29sIEhUTUxQYXJzZXI6OmNvbW1lbnRDcmVhdGVFcnJvckNoZWNrKFRva2Vu
KiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIGJvb2wgSFRNTFBhcnNlcjo6aGVhZENyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICBpZiAoIW1faGVh
ZCB8fCBtX2N1cnJlbnQtPmxvY2FsTmFtZSgpID09IGh0bWxUYWcpIHsKLSAgICAgICAgbV9oZWFk
ID0gSFRNTEhlYWRFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgICAgIG1faGVhZCA9
IG5ldyBIVE1MSGVhZEVsZW1lbnQoaGVhZFRhZywgbV9kb2N1bWVudCk7CiAgICAgICAgIHJlc3Vs
dCA9IG1faGVhZDsKICAgICB9IGVsc2UKICAgICAgICAgcmVwb3J0RXJyb3IoTWlzcGxhY2VkSGVh
ZEVycm9yKTsKQEAgLTc4OSw3ICs3OTEsNyBAQCBib29sIEhUTUxQYXJzZXI6OmZvcm1DcmVhdGVF
cnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKICAgICAvLyBPbmx5IGNy
ZWF0ZSBhIG5ldyBmb3JtIGlmIHdlJ3JlIG5vdCBhbHJlYWR5IGluc2lkZSBvbmUuCiAgICAgLy8g
VGhpcyBpcyBjb25zaXN0ZW50IHdpdGggb3RoZXIgYnJvd3NlcnMnIGJlaGF2aW9yLgogICAgIGlm
ICghbV9jdXJyZW50Rm9ybUVsZW1lbnQpIHsKLSAgICAgICAgbV9jdXJyZW50Rm9ybUVsZW1lbnQg
PSBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICAgICAgbV9jdXJyZW50
Rm9ybUVsZW1lbnQgPSBuZXcgSFRNTEZvcm1FbGVtZW50KGZvcm1UYWcsIG1fZG9jdW1lbnQpOwog
ICAgICAgICByZXN1bHQgPSBtX2N1cnJlbnRGb3JtRWxlbWVudDsKICAgICAgICAgcENsb3NlckNy
ZWF0ZUVycm9yQ2hlY2sodCwgcmVzdWx0KTsKICAgICB9CkBAIC0xNTY2LDExICsxNTY4LDExIEBA
IHZvaWQgSFRNTFBhcnNlcjo6Y3JlYXRlSGVhZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgJiYgIW1faXNQYXJzaW5nRnJhZ21lbnQp
IHsKLSAgICAgICAgaW5zZXJ0Tm9kZShIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50
KS5nZXQoKSk7CisgICAgICAgIGluc2VydE5vZGUobmV3IEhUTUxIdG1sRWxlbWVudChodG1sVGFn
LCBtX2RvY3VtZW50KSk7CiAgICAgICAgIEFTU0VSVChtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKSB8fCBtX2lzUGFyc2luZ0ZyYWdtZW50KTsKICAgICB9CiAKLSAgICBtX2hlYWQgPSBIVE1M
SGVhZEVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICBtX2hlYWQgPSBuZXcgSFRNTEhl
YWRFbGVtZW50KGhlYWRUYWcsIG1fZG9jdW1lbnQpOwogCiAgICAgaWYgKG1faXNQYXJzaW5nRnJh
Z21lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OTAsMTEgKzE1OTIsMTEgQEAgdm9pZCBIVE1M
UGFyc2VyOjpjcmVhdGVIZWFkKCkKIAogUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpoYW5k
bGVJc2luZGV4KFRva2VuKiB0KQogewotICAgIFJlZlB0cjxOb2RlPiBuID0gSFRNTERpdkVsZW1l
bnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICBSZWZQdHI8Tm9kZT4gbiA9IG5ldyBIVE1MRGl2
RWxlbWVudChkaXZUYWcsIG1fZG9jdW1lbnQpOwogCiAgICAgTmFtZWROb2RlTWFwKiBhdHRycyA9
IHQtPmF0dHJzLmdldCgpOwogCi0gICAgUmVmUHRyPEhUTUxJc0luZGV4RWxlbWVudD4gaXNJbmRl
eCA9IEhUTUxJc0luZGV4RWxlbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIG1fY3VycmVudEZvcm1F
bGVtZW50LmdldCgpKTsKKyAgICBSZWZQdHI8SFRNTElzSW5kZXhFbGVtZW50PiBpc0luZGV4ID0g
bmV3IEhUTUxJc0luZGV4RWxlbWVudChpc2luZGV4VGFnLCBtX2RvY3VtZW50LCBtX2N1cnJlbnRG
b3JtRWxlbWVudC5nZXQoKSk7CiAgICAgaXNJbmRleC0+c2V0QXR0cmlidXRlTWFwKGF0dHJzKTsK
ICAgICBpc0luZGV4LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJraHRtbF9pc2luZGV4Iik7CiAK
QEAgLTE2MDUsMTAgKzE2MDcsMTAgQEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpoYW5k
bGVJc2luZGV4KFRva2VuKiB0KQogICAgICAgICB0LT5hdHRycyA9IDA7CiAgICAgfQogCi0gICAg
bi0+YWRkQ2hpbGQoSFRNTEhSRWxlbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpKTsKKyAgICBuLT5h
ZGRDaGlsZChuZXcgSFRNTEhSRWxlbWVudChoclRhZywgbV9kb2N1bWVudCkpOwogICAgIG4tPmFk
ZENoaWxkKFRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0ZXh0KSk7CiAgICAgbi0+YWRkQ2hpbGQo
aXNJbmRleC5yZWxlYXNlKCkpOwotICAgIG4tPmFkZENoaWxkKEhUTUxIUkVsZW1lbnQ6OmNyZWF0
ZShtX2RvY3VtZW50KSk7CisgICAgbi0+YWRkQ2hpbGQobmV3IEhUTUxIUkVsZW1lbnQoaHJUYWcs
IG1fZG9jdW1lbnQpKTsKIAogICAgIHJldHVybiBuLnJlbGVhc2UoKTsKIH0KQEAgLTE2MzAsNyAr
MTYzMiw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6ZmluaXNoZWQoKQogewogICAgIC8vIEluIHRoZSBj
YXNlIG9mIGEgY29tcGxldGVseSBlbXB0eSBkb2N1bWVudCwgaGVyZSdzIHRoZSBwbGFjZSB0byBj
cmVhdGUgdGhlIEhUTUwgZWxlbWVudC4KICAgICBpZiAobV9jdXJyZW50ICYmIG1fY3VycmVudC0+
aXNEb2N1bWVudE5vZGUoKSAmJiAhbV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAg
ICAgIGluc2VydE5vZGUoSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCkuZ2V0KCkp
OworICAgICAgICBpbnNlcnROb2RlKG5ldyBIVE1MSHRtbEVsZW1lbnQoaHRtbFRhZywgbV9kb2N1
bWVudCkpOwogCiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgImN1cnJlbnQiIGlzIG5vdCBsZWZ0
IHBvaW50aW5nIHRvIGEgbm9kZSB3aGVuIHRoZSBkb2N1bWVudCBpcyBkZXN0cm95ZWQuCiAgICAg
ZnJlZUJsb2NrKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluIGIv
V2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgppbmRleCA4ZTY3Y2JhNDk2M2ExOTg2MjczODA1
YjA1MjYyNmI0MGUxODVkN2EzLi4wNWJjZmU4MjE1MWNiZmMwNGM3ZWJmYmM1ODEyN2NkNWU4N2Iw
YzFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KQEAgLTM2LDQyICszNiw0MiBAQCBkZCBpbnRlcmZhY2VO
YW1lPUhUTUxFbGVtZW50CiBkZWwgaW50ZXJmYWNlTmFtZT1IVE1MTW9kRWxlbWVudAogZGZuIGlu
dGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGRpciBpbnRlcmZhY2VOYW1lPUhUTUxEaXJlY3RvcnlF
bGVtZW50Ci1kaXYKK2RpdiBjcmVhdGVXaXRoTmV3CiBkbCBpbnRlcmZhY2VOYW1lPUhUTUxETGlz
dEVsZW1lbnQKIGR0IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGVtIGludGVyZmFjZU5hbWU9
SFRNTEVsZW1lbnQKIGVtYmVkCiBmaWVsZHNldCBpbnRlcmZhY2VOYW1lPUhUTUxGaWVsZFNldEVs
ZW1lbnQsIGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAotZm9udAorZm9udCBjcmVhdGVXaXRo
TmV3CiBmb290ZXIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotZm9ybQorZm9ybSBjcmVhdGVX
aXRoTmV3CiBmcmFtZQotZnJhbWVzZXQgaW50ZXJmYWNlTmFtZT1IVE1MRnJhbWVTZXRFbGVtZW50
Ci1oMSBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxlbWVudAotaDIgaW50ZXJmYWNlTmFtZT1I
VE1MSGVhZGluZ0VsZW1lbnQKLWgzIGludGVyZmFjZU5hbWU9SFRNTEhlYWRpbmdFbGVtZW50Ci1o
NCBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxlbWVudAotaDUgaW50ZXJmYWNlTmFtZT1IVE1M
SGVhZGluZ0VsZW1lbnQKLWg2IGludGVyZmFjZU5hbWU9SFRNTEhlYWRpbmdFbGVtZW50Ci1oZWFk
CitmcmFtZXNldCBpbnRlcmZhY2VOYW1lPUhUTUxGcmFtZVNldEVsZW1lbnQsIGNyZWF0ZVdpdGhO
ZXcKK2gxIGludGVyZmFjZU5hbWU9SFRNTEhlYWRpbmdFbGVtZW50LCBjcmVhdGVXaXRoTmV3Cito
MiBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxlbWVudCwgY3JlYXRlV2l0aE5ldworaDMgaW50
ZXJmYWNlTmFtZT1IVE1MSGVhZGluZ0VsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKK2g0IGludGVyZmFj
ZU5hbWU9SFRNTEhlYWRpbmdFbGVtZW50LCBjcmVhdGVXaXRoTmV3CitoNSBpbnRlcmZhY2VOYW1l
PUhUTUxIZWFkaW5nRWxlbWVudCwgY3JlYXRlV2l0aE5ldworaDYgaW50ZXJmYWNlTmFtZT1IVE1M
SGVhZGluZ0VsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKK2hlYWQgY3JlYXRlV2l0aE5ldwogaGVhZGVy
IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGhncm91cCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVt
ZW50Ci1ociBpbnRlcmZhY2VOYW1lPUhUTUxIUkVsZW1lbnQKLWh0bWwKK2hyIGludGVyZmFjZU5h
bWU9SFRNTEhSRWxlbWVudCwgY3JlYXRlV2l0aE5ldworaHRtbCBjcmVhdGVXaXRoTmV3CiBpIGlu
dGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGlmcmFtZSBpbnRlcmZhY2VOYW1lPUhUTUxJRnJhbWVF
bGVtZW50Ci1pbWFnZSBtYXBUb1RhZ05hbWU9aW1nCi1pbWcgaW50ZXJmYWNlTmFtZT1IVE1MSW1h
Z2VFbGVtZW50LCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKLWlucHV0IGNvbnN0cnVjdG9y
TmVlZHNGb3JtRWxlbWVudAotaW5zIGludGVyZmFjZU5hbWU9SFRNTE1vZEVsZW1lbnQKLWlzaW5k
ZXggaW50ZXJmYWNlTmFtZT1IVE1MSXNJbmRleEVsZW1lbnQsIGNvbnN0cnVjdG9yTmVlZHNGb3Jt
RWxlbWVudAoraW1hZ2UgbWFwVG9UYWdOYW1lPWltZywgY3JlYXRlV2l0aE5ldworaW1nIGludGVy
ZmFjZU5hbWU9SFRNTEltYWdlRWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50LCBj
cmVhdGVXaXRoTmV3CitpbnB1dCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQsIGNyZWF0ZVdp
dGhOZXcKK2lucyBpbnRlcmZhY2VOYW1lPUhUTUxNb2RFbGVtZW50LCBjcmVhdGVXaXRoTmV3Citp
c2luZGV4IGludGVyZmFjZU5hbWU9SFRNTElzSW5kZXhFbGVtZW50LCBjb25zdHJ1Y3Rvck5lZWRz
Rm9ybUVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKIGtiZCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50
CiBrZXlnZW4gSlNJbnRlcmZhY2VOYW1lPUhUTUxTZWxlY3RFbGVtZW50LCBjb25zdHJ1Y3Rvck5l
ZWRzRm9ybUVsZW1lbnQKLWxhYmVsCitsYWJlbCBjcmVhdGVXaXRoTmV3CiBsYXllciBpbnRlcmZh
Y2VOYW1lPUhUTUxFbGVtZW50Ci1sZWdlbmQgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50Ci1s
aSBpbnRlcmZhY2VOYW1lPUhUTUxMSUVsZW1lbnQKLWxpbmsgY29uc3RydWN0b3JOZWVkc0NyZWF0
ZWRCeVBhcnNlcgorbGVnZW5kIGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCwgY3JlYXRlV2l0
aE5ldworbGkgaW50ZXJmYWNlTmFtZT1IVE1MTElFbGVtZW50LCBjcmVhdGVXaXRoTmV3CitsaW5r
IGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIsIGNyZWF0ZVdpdGhOZXcKIGxpc3Rpbmcg
aW50ZXJmYWNlTmFtZT1IVE1MUHJlRWxlbWVudAogbWFwCiBtYXJxdWVlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaAppbmRleCBhZjIzM2FlYjUzYmQwNDJlM2EwN2Y1NmUyZWU0MDJmYmNlN2Mw
ZGY1Li5hYmNiMjc3NTZhMTkwMjhiMmYxYmI3MmZiMzdhNzQ3MThiMWZjMzBiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgYm9v
bCBzaG91bGRXcmFwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcCAhPSBOb1dyYXA7IH0KIAor
ICAgIGJvb2wgcmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBpc1JlYWRPbmx5Rm9ybUNvbnRyb2wo
KTsgfQorCiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKaW5kZXggMTk2YzY3ZWYxY2M0ZmJiMTcyNmI1ZTBh
ZDE2YjNiOWYyMmIxYTVkNC4uODNhYzhlZWVlNDBlNTI0NWQ3NjJkNDg1MDdhNjJjMWE3ZjhmYWQz
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjgsNyArNjgsNyBAQCBUb2tlbml6ZXIqIEhUTUxWaWV3U291cmNlRG9jdW1l
bnQ6OmNyZWF0ZVRva2VuaXplcigpCiAKIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6Y3Jl
YXRlQ29udGFpbmluZ1RhYmxlKCkKIHsKLSAgICBSZWZQdHI8SFRNTEh0bWxFbGVtZW50PiBodG1s
ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUodGhpcyk7CisgICAgUmVmUHRyPEhUTUxIdG1sRWxl
bWVudD4gaHRtbCA9IG5ldyBIVE1MSHRtbEVsZW1lbnQoaHRtbFRhZywgdGhpcyk7CiAgICAgYWRk
Q2hpbGQoaHRtbCk7CiAgICAgaHRtbC0+YXR0YWNoKCk7CiAgICAgUmVmUHRyPEhUTUxCb2R5RWxl
bWVudD4gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKHRoaXMpOwpAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZUNvbnRhaW5pbmdUYWJsZSgp
CiAgICAgCiAgICAgLy8gQ3JlYXRlIGEgbGluZSBndXR0ZXIgZGl2IHRoYXQgY2FuIGJlIHVzZWQg
dG8gbWFrZSBzdXJlIHRoZSBndXR0ZXIgZXh0ZW5kcyBkb3duIHRoZSBoZWlnaHQgb2YgdGhlIHdo
b2xlCiAgICAgLy8gZG9jdW1lbnQuCi0gICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBkaXYgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKHRoaXMpOworICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4g
ZGl2ID0gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgdGhpcyk7CiAgICAgUmVmUHRyPE5hbWVk
Tm9kZU1hcD4gYXR0cnMgPSBOYW1lZE5vZGVNYXA6OmNyZWF0ZSgpOwogICAgIGF0dHJzLT5hZGRB
dHRyaWJ1dGUoQXR0cmlidXRlOjpjcmVhdGVNYXBwZWQoY2xhc3NBdHRyLCAid2Via2l0LWxpbmUt
Z3V0dGVyLWJhY2tkcm9wIikpOwogICAgIGRpdi0+c2V0QXR0cmlidXRlTWFwKGF0dHJzLnJlbGVh
c2UoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcCBiL1dl
YkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDY5YWFlZDFmNTBjMTM2MTg4YmE3
N2EyMDI5MzI3N2YzZDVlMDhjY2UuLmEzMDE5OTlmMTU5OGEwZDUxNTFlYzExYjk3Y2IzODI1MmFl
NmJjNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC05MywyNiArOTMsMTkgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW1hZ2VEb2N1bWVudEVsZW1lbnQg
OiBwdWJsaWMgSFRNTEltYWdlRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW1hZ2VEb2N1bWVudEVsZW1lbnQ+IGNyZWF0ZShJbWFnZURvY3VtZW50Kik7Ci0KLXByaXZh
dGU6Ci0gICAgSW1hZ2VEb2N1bWVudEVsZW1lbnQoSW1hZ2VEb2N1bWVudCogZG9jdW1lbnQpCi0g
ICAgICAgIDogSFRNTEltYWdlRWxlbWVudChpbWdUYWcsIGRvY3VtZW50KQotICAgICAgICAsIG1f
aW1hZ2VEb2N1bWVudChkb2N1bWVudCkKKyAgICBJbWFnZURvY3VtZW50RWxlbWVudChJbWFnZURv
Y3VtZW50KiBkb2MpCisgICAgICAgIDogSFRNTEltYWdlRWxlbWVudChpbWdUYWcsIGRvYykKKyAg
ICAgICAgLCBtX2ltYWdlRG9jdW1lbnQoZG9jKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5JbWFnZURvY3VtZW50RWxlbWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOwogCitwcml2YXRlOgogICAgIEltYWdlRG9jdW1lbnQqIG1faW1hZ2VE
b2N1bWVudDsKIH07CiAKLWlubGluZSBQYXNzUmVmUHRyPEltYWdlRG9jdW1lbnRFbGVtZW50PiBJ
bWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRlKEltYWdlRG9jdW1lbnQqIGRvY3VtZW50KQotewot
ICAgIHJldHVybiBuZXcgSW1hZ2VEb2N1bWVudEVsZW1lbnQoZG9jdW1lbnQpOwotfQotCiAvLyAt
LS0tLS0tLQogCiBzdGF0aWMgZmxvYXQgcGFnZVpvb21GYWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtMjA5LDcgKzIwMiw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKQogICAgIAogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5LCBlYyk7
CiAgICAgCi0gICAgUmVmUHRyPEltYWdlRG9jdW1lbnRFbGVtZW50PiBpbWFnZUVsZW1lbnQgPSBJ
bWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRlKHRoaXMpOworICAgIFJlZlB0cjxJbWFnZURvY3Vt
ZW50RWxlbWVudD4gaW1hZ2VFbGVtZW50ID0gbmV3IEltYWdlRG9jdW1lbnRFbGVtZW50KHRoaXMp
OwogICAgIAogICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmUiKTsgICAgICAgIAogICAgIGltYWdlRWxlbWVudC0+c2V0TG9h
ZE1hbnVhbGx5KHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZWM2OWVhMDc0MzE5
ODAxMDczZTk1NjhkNWM4ODJhZjE2NDc1YTBiZi4uNmY2Y2FkMGEwNjdkZTRmYjk2YmU2ODA1OTZi
MmQxOGVlYjUxZGQ5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOTgs
NyArMzk4LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0
YSogZHJhZ0RhdGEpCiAgICAgfQogCiAgICAgaWYgKEhUTUxJbnB1dEVsZW1lbnQqIGZpbGVJbnB1
dCA9IGFzRmlsZUlucHV0KGVsZW1lbnQpKSB7Ci0gICAgICAgIGlmIChmaWxlSW5wdXQtPmRpc2Fi
bGVkKCkpCisgICAgICAgIGlmICghZmlsZUlucHV0LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmICghZHJhZ0RhdGEtPmNvbnRh
aW5zRmlsZXMoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApp
bmRleCAzNDEzYjAyMGQ0OWQ2OTU5NTM0NTZjMGQ5NThiYTc3NGQyMzE4NDk3Li4xNjgyN2Y1NGMy
NzkyY2QyY2Q3YWQ4MjM1NDcyZTYyODU2Y2EzMTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MiwyOSArNjIsMTkgQEAgc3RhdGlj
IGNvbnN0IGZsb2F0IGNTZWVrUmVwZWF0RGVsYXkgPSAwLjFmOwogc3RhdGljIGNvbnN0IGZsb2F0
IGNTdGVwVGltZSA9IDAuMDdmOwogc3RhdGljIGNvbnN0IGZsb2F0IGNTZWVrVGltZSA9IDAuMmY7
CiAKLWlubGluZSBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6TWVkaWFDb250cm9sU2hh
ZG93Um9vdEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogSFRN
TERpdkVsZW1lbnQoZGl2VGFnLCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkpCitNZWRpYUNvbnRy
b2xTaGFkb3dSb290RWxlbWVudDo6TWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50LCBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCisgICAgOiBIVE1M
RGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFF
bGVtZW50KSAKIHsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVu
dD4gTWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVt
ZW50PiBlbGVtZW50ID0gbmV3IE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50KG1lZGlhRWxl
bWVudCk7Ci0KICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGUoKTsKICAgICByb290U3R5bGUtPmluaGVyaXRGcm9tKG1lZGlhRWxlbWVudC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKSk7CiAgICAgcm9vdFN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKICAg
ICByb290U3R5bGUtPnNldFBvc2l0aW9uKFJlbGF0aXZlUG9zaXRpb24pOwotCi0gICAgUmVuZGVy
TWVkaWFDb250cm9sU2hhZG93Um9vdCogcmVuZGVyZXIgPSBuZXcgKG1lZGlhRWxlbWVudC0+cmVu
ZGVyZXIoKS0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyTWVkaWFDb250cm9sU2hhZG93Um9vdChlbGVt
ZW50LmdldCgpKTsKKyAgICBSZW5kZXJNZWRpYUNvbnRyb2xTaGFkb3dSb290KiByZW5kZXJlciA9
IG5ldyAobWVkaWFFbGVtZW50LT5yZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJNZWRp
YUNvbnRyb2xTaGFkb3dSb290KHRoaXMpOwogICAgIHJlbmRlcmVyLT5zZXRTdHlsZShyb290U3R5
bGUucmVsZWFzZSgpKTsKLQotICAgIGVsZW1lbnQtPnNldFJlbmRlcmVyKHJlbmRlcmVyKTsKLSAg
ICBlbGVtZW50LT5zZXRBdHRhY2hlZCgpOwotICAgIGVsZW1lbnQtPnNldEluRG9jdW1lbnQoKTsK
LQotICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKKyAgICBzZXRSZW5kZXJlcihyZW5kZXJl
cik7CisgICAgc2V0QXR0YWNoZWQoKTsKKyAgICBzZXRJbkRvY3VtZW50KCk7CiB9CiAKIHZvaWQg
TWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ6OnVwZGF0ZVN0eWxlKCkKQEAgLTk3LDggKzg3
LDggQEAgdm9pZCBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6dXBkYXRlU3R5bGUoKQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lZGlhQ29udHJvbEVsZW1lbnQ6
Ok1lZGlhQ29udHJvbEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBQc2V1
ZG9JZCBwc2V1ZG8pCi0gICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIG1lZGlhRWxlbWVudC0+
ZG9jdW1lbnQoKSkKK01lZGlhQ29udHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBQc2V1ZG9JZCBwc2V1ZG8sIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCiAgICAgLCBt
X21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3BzZXVkb1N0eWxlSWQocHNldWRv
KQogewpAQCAtMTI4LDExICsxMTgsNiBAQCBNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRy
b2xFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgUHNldWRvSQogICAgIH0K
IH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xFbGVtZW50PiBNZWRpYUNvbnRyb2xFbGVtZW50
OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9T
dHlsZUlkKQotewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sRWxlbWVudChtZWRpYUVsZW1l
bnQsIHBzZXVkb1N0eWxlSWQpOwotfQotCiB2b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmF0dGFj
aFRvUGFyZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKICAgICBwYXJlbnQtPmFkZENoaWxkKHRoaXMp
OwpAQCAtMjE1LDE0ICsyMDAsOSBAQCB2b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVN0
eWxlKCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFD
b250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFD
b250cm9sRWxlbWVudChtZWRpYUVsZW1lbnQsIE1FRElBX0NPTlRST0xTX1RJTUVMSU5FX0NPTlRB
SU5FUikKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK01lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCwgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVs
ZW1lbnQoZG9jdW1lbnQsIE1FRElBX0NPTlRST0xTX1RJTUVMSU5FX0NPTlRBSU5FUiwgZWxlbWVu
dCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVu
dChtZWRpYUVsZW1lbnQpOwogfQogCiBib29sIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCkBAIC0yMzMsMjgg
KzIxMywyMyBAQCBib29sIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLy8gVGhpcyBpcyBmb3IgTWVk
aWFDb250cm9sbGVyVGhlbWVDbGFzc2ljOgogICAgIC8vIElmIHRoZXJlIGlzIG5vIHN0eWxlIGZv
ciBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudCBzdHlsZSwgZG9uJ3QgaGlkZQogICAg
IC8vIHRoZSB0aW1lbGluZS4KLSAgICBpZiAoIW1lZGlhRWxlbWVudCgpLT5yZW5kZXJlcigpLT5n
ZXRDYWNoZWRQc2V1ZG9TdHlsZShNRURJQV9DT05UUk9MU19TVEFUVVNfRElTUExBWSkpCisgICAg
aWYgKCFtX21lZGlhRWxlbWVudC0+cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoTUVE
SUFfQ09OVFJPTFNfU1RBVFVTX0RJU1BMQVkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGZsb2F0IGR1cmF0aW9uID0gbWVkaWFFbGVtZW50KCktPmR1cmF0aW9uKCk7CisgICAgZmxvYXQg
ZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKICAgICByZXR1cm4gIWlzbmFu
KGR1cmF0aW9uKSAmJiAhaXNpbmYoZHVyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFF
bGVtZW50LCBNRURJQV9DT05UUk9MU19WT0xVTUVfU0xJREVSX0NPTlRBSU5FUikKK01lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvYywgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jLCBNRURJQV9DT05UUk9MU19WT0xVTUVf
U0xJREVSX0NPTlRBSU5FUiwgZWxlbWVudCkKICAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQogICAg
ICwgbV94KDApCiAgICAgLCBtX3koMCkKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotewot
ICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCht
ZWRpYUVsZW1lbnQpOwotfQotCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpzdHlsZUZvckVsZW1lbnQoKQogewogICAgIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBNZWRpYUNvbnRyb2xFbGVtZW50OjpzdHlsZUZvckVs
ZW1lbnQoKTsKQEAgLTI5MCwxNyArMjY1LDEyIEBAIGJvb2wgTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyQ29udGFpbmVyRWxlbWVudDo6aGl0VGVzdChjb25zdCBJbnRQb2ludCYgYWJzUG9pbnQpCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFN0
YXR1c0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1l
ZGlhRWxlbWVudCwgTUVESUFfQ09OVFJPTFNfU1RBVFVTX0RJU1BMQVkpCitNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQorICAgIDogTWVkaWFD
b250cm9sRWxlbWVudChkb2N1bWVudCwgTUVESUFfQ09OVFJPTFNfU1RBVFVTX0RJU1BMQVksIGVs
ZW1lbnQpCiAgICAgLCBtX3N0YXRlQmVpbmdEaXNwbGF5ZWQoTm90aGluZykKIHsKIH0KIAotUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sU3Rh
dHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQp
Ci17Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChtZWRp
YUVsZW1lbnQpOwotfQotCiB2b2lkIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Ojp1
cGRhdGUoKQogewogICAgIE1lZGlhQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZSgpOwpAQCAtMzA4LDkg
KzI3OCw5IEBAIHZvaWQgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnVwZGF0ZSgp
CiAgICAgLy8gR2V0IHRoZSBuZXcgc3RhdGUgdGhhdCB3ZSdsbCBoYXZlIHRvIGRpc3BsYXkuCiAg
ICAgU3RhdGVCZWluZ0Rpc3BsYXllZCBuZXdTdGF0ZVRvRGlzcGxheSA9IE5vdGhpbmc7CiAKLSAg
ICBpZiAobWVkaWFFbGVtZW50KCktPnJlYWR5U3RhdGUoKSAhPSBIVE1MTWVkaWFFbGVtZW50OjpI
QVZFX0VOT1VHSF9EQVRBICYmICFtZWRpYUVsZW1lbnQoKS0+Y3VycmVudFNyYygpLmlzRW1wdHko
KSkKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSAhPSBIVE1MTWVkaWFFbGVt
ZW50OjpIQVZFX0VOT1VHSF9EQVRBICYmICFtX21lZGlhRWxlbWVudC0+Y3VycmVudFNyYygpLmlz
RW1wdHkoKSkKICAgICAgICAgbmV3U3RhdGVUb0Rpc3BsYXkgPSBMb2FkaW5nOwotICAgIGVsc2Ug
aWYgKG1lZGlhRWxlbWVudCgpLT5tb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVT
dHJlYW0pCisgICAgZWxzZSBpZiAobV9tZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSA9PSBN
ZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSkKICAgICAgICAgbmV3U3RhdGVUb0Rpc3BsYXkgPSBMaXZl
QnJvYWRjYXN0OwogCiAgICAgLy8gUHJvcGFnYXRlIG9ubHkgaWYgbmVlZGVkLgpAQCAtMzM2LDE0
ICszMDYsMTQgQEAgYm9vbCBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKCFNZWRpYUNvbnRyb2xF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGZsb2F0IGR1cmF0aW9uID0gbWVkaWFFbGVtZW50KCktPmR1cmF0aW9uKCk7CisgICAgZmxv
YXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKICAgICByZXR1cm4gKGlz
bmFuKGR1cmF0aW9uKSB8fCBpc2luZihkdXJhdGlvbikpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgICAgCi1NZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbElucHV0RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIFBzZXVkb0lk
IHBzZXVkbywgY29uc3QgU3RyaW5nJiB0eXBlKQotICAgIDogSFRNTElucHV0RWxlbWVudChpbnB1
dFRhZywgbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpKQorTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
OjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBQc2V1ZG9JZCBw
c2V1ZG8sIGNvbnN0IFN0cmluZyYgdHlwZSwgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQorICAgIDogSFRNTElucHV0RWxlbWVudChpbnB1dFRhZywgZG9jdW1lbnQpCiAgICAgLCBtX21l
ZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3BzZXVkb1N0eWxlSWQocHNldWRvKQog
ewpAQCAtNDAyLDcgKzM3Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp1cGRh
dGUoKQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6
OnN0eWxlRm9yRWxlbWVudCgpCiB7Ci0gICAgcmV0dXJuIG1lZGlhRWxlbWVudCgpLT5yZW5kZXJl
cigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb1N0eWxlSWQpOworICAgIHJldHVybiBt
X21lZGlhRWxlbWVudC0+cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9T
dHlsZUlkKTsKIH0KIAogYm9vbCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQpAQCAtNDEwLDcgKzM4MCw3IEBAIGJvb2wgTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkK
ICAgICBBU1NFUlQoZG9jdW1lbnQoKS0+cGFnZSgpKTsKIAogICAgIHJldHVybiBIVE1MSW5wdXRF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+
cmVuZGVyZXIoKQotICAgICAgICAmJiAoIXN0eWxlLT5oYXNBcHBlYXJhbmNlKCkgfHwgZG9jdW1l
bnQoKS0+cGFnZSgpLT50aGVtZSgpLT5zaG91bGRSZW5kZXJNZWRpYUNvbnRyb2xQYXJ0KHN0eWxl
LT5hcHBlYXJhbmNlKCksIG1lZGlhRWxlbWVudCgpKSk7CisgICAgICAgICYmICghc3R5bGUtPmhh
c0FwcGVhcmFuY2UoKSB8fCBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPnNob3VsZFJlbmRl
ck1lZGlhQ29udHJvbFBhcnQoc3R5bGUtPmFwcGVhcmFuY2UoKSwgbV9tZWRpYUVsZW1lbnQpKTsK
IH0KIAogdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmF0dGFjaCgpCkBAIC00MjIsNyAr
MzkyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgYm9v
bCBuZWVkc1JlbmRlcmVyID0gcmVuZGVyZXJJc05lZWRlZChzdHlsZS5nZXQoKSk7CiAgICAgaWYg
KCFuZWVkc1JlbmRlcmVyKQogICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IGNyZWF0ZVJlbmRlcmVyKG1lZGlhRWxlbWVudCgpLT5yZW5kZXJlcigpLT5yZW5kZXJB
cmVuYSgpLCBzdHlsZS5nZXQoKSk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNyZWF0
ZVJlbmRlcmVyKG1fbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgpLCBzdHls
ZS5nZXQoKSk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogICAgIHJlbmRl
cmVyLT5zZXRTdHlsZShzdHlsZS5nZXQoKSk7CkBAIC00MzksNyArNDA5LDcgQEAgdm9pZCBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmF0dGFjaCgpCiAKIHZvaWQgTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50Ojp1cGRhdGVTdHlsZSgpCiB7Ci0gICAgaWYgKCFtZWRpYUVsZW1lbnQoKSB8fCAhbWVk
aWFFbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV9t
ZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JFbGVtZW50KCk7CkBAIC00NzUsMjAgKzQ0
NSwxNSBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6c2V0RGlzcGxheVR5cGUoTWVk
aWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFD
b250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQot
ICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTUVESUFfQ09OVFJP
TFNfTVVURV9CVVRUT04sICJidXR0b24iKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJv
bE11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK01lZGlhQ29udHJvbE11dGVCdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQs
IEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQoZG9jdW1lbnQsIE1FRElBX0NPTlRST0xTX01VVEVfQlVUVE9OLCAiYnV0dG9uIiwgZWxlbWVu
dCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KG1lZGlh
RWxlbWVudCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRN
dXRlZCghbWVkaWFFbGVtZW50KCktPm11dGVkKCkpOworICAgICAgICBtX21lZGlhRWxlbWVudC0+
c2V0TXV0ZWQoIW1fbWVkaWFFbGVtZW50LT5tdXRlZCgpKTsKICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwpAQCAtNDk2LDI1ICs0NjEsMjAgQEAgdm9pZCBNZWRpYUNvbnRyb2xN
dXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIHZv
aWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKIHsK
LSAgICBzZXREaXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSA/IE1lZGlhVW5NdXRl
QnV0dG9uIDogTWVkaWFNdXRlQnV0dG9uKTsKKyAgICBzZXREaXNwbGF5VHlwZShtX21lZGlhRWxl
bWVudC0+bXV0ZWQoKSA/IE1lZGlhVW5NdXRlQnV0dG9uIDogTWVkaWFNdXRlQnV0dG9uKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudCht
ZWRpYUVsZW1lbnQsIE1FRElBX0NPTlRST0xTX1BMQVlfQlVUVE9OLCAiYnV0dG9uIikKLXsKLX0K
LQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQp
CitNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQorICAg
IDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNRURJQV9DT05UUk9MU19QTEFZ
X0JVVFRPTiwgImJ1dHRvbiIsIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpOwogfQogCiB2b2lkIE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAg
ICAgICBtZWRpYUVsZW1lbnQoKS0+dG9nZ2xlUGxheVN0YXRlKCk7CisgICAgICAgIG1fbWVkaWFF
bGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
ZXZlbnQpOwpAQCAtNTIyLDI5ICs0ODIsMjEgQEAgdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIHZvaWQgTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKIHsKLSAgICBzZXRE
aXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+Y2FuUGxheSgpID8gTWVkaWFQbGF5QnV0dG9uIDog
TWVkaWFQYXVzZUJ1dHRvbik7CisgICAgc2V0RGlzcGxheVR5cGUobV9tZWRpYUVsZW1lbnQtPmNh
blBsYXkoKSA/IE1lZGlhUGxheUJ1dHRvbiA6IE1lZGlhUGF1c2VCdXR0b24pOwogfQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKLSAgICA6IE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIHBzZXVkb0lkLCAiYnV0dG9uIikKK01lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQsIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgZm9yd2FyZCkKKyAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgZm9yd2FyZCA/IE1FRElBX0NP
TlRST0xTX1NFRUtfRk9SV0FSRF9CVVRUT04gOiBNRURJQV9DT05UUk9MU19TRUVLX0JBQ0tfQlVU
VE9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidXR0b24iLCBlbGVtZW50KQor
ICAgICwgbV9mb3J3YXJkKGZvcndhcmQpCiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAgICAgLCBt
X2NhcHR1cmluZyhmYWxzZSkKICAgICAsIG1fc2Vla1RpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xT
ZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9T
dHlsZUlkKQotewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQo
bWVkaWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKTsKLX0KLQotaW5saW5lIGJvb2wgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHBzZXVkb1N0eWxlSWQoKSA9PSBNRURJQV9DT05UUk9MU19TRUVLX0ZPUldBUkRfQlVUVE9O
OwotfQotCiB2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2Vkb3duRXZlbnQpIHsKQEAgLTU1Miw3ICs1MDQsNyBAQCB2b2lkIE1lZGlhQ29u
dHJvbFNlZWtCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
ICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKHRoaXMpOwogICAgICAgICB9
Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5wYXVzZShldmVudC0+ZnJvbVVzZXJHZXN0dXJlKCkp
OworICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UoZXZlbnQtPmZyb21Vc2VyR2VzdHVyZSgp
KTsKICAgICAgICAgbV9zZWVrVGltZXIuc3RhcnRSZXBlYXRpbmcoY1NlZWtSZXBlYXREZWxheSk7
CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KSB7CkBAIC01NjQsOCArNTE2
LDggQEAgdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGlm
IChtX3NlZWtpbmcgfHwgbV9zZWVrVGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICAgICAgaWYg
KCFtX3NlZWtpbmcpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCBzdGVwVGltZSA9IGlzRm9yd2Fy
ZEJ1dHRvbigpID8gY1N0ZXBUaW1lIDogLWNTdGVwVGltZTsKLSAgICAgICAgICAgICAgICBtZWRp
YUVsZW1lbnQoKS0+c2V0Q3VycmVudFRpbWUobWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkg
KyBzdGVwVGltZSwgZWMpOworICAgICAgICAgICAgICAgIGZsb2F0IHN0ZXBUaW1lID0gbV9mb3J3
YXJkID8gY1N0ZXBUaW1lIDogLWNTdGVwVGltZTsKKyAgICAgICAgICAgICAgICBtX21lZGlhRWxl
bWVudC0+c2V0Q3VycmVudFRpbWUobV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkgKyBzdGVw
VGltZSwgZWMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgp
OwogICAgICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CkBAIC01NzksOCArNTMxLDggQEAgdm9p
ZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVk
aWFDb250cm9sU2Vla0J1dHRvbkUKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgIG1fc2Vl
a2luZyA9IHRydWU7Ci0gICAgZmxvYXQgc2Vla1RpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/IGNT
ZWVrVGltZSA6IC1jU2Vla1RpbWU7Ci0gICAgbWVkaWFFbGVtZW50KCktPnNldEN1cnJlbnRUaW1l
KG1lZGlhRWxlbWVudCgpLT5jdXJyZW50VGltZSgpICsgc2Vla1RpbWUsIGVjKTsKKyAgICBmbG9h
dCBzZWVrVGltZSA9IG1fZm9yd2FyZCA/IGNTZWVrVGltZSA6IC1jU2Vla1RpbWU7CisgICAgbV9t
ZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgp
ICsgc2Vla1RpbWUsIGVjKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVu
dDo6ZGV0YWNoKCkKQEAgLTU5MiwyMiArNTQ0LDE4IEBAIHZvaWQgTWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiAgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpkZXRh
Y2goKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVk
aWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50KGVsZW1lbnQsIE1FRElBX0NPTlRST0xTX1JFV0lORF9CVVRUT04sICJidXR0b24iKQot
ewotfQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCwgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKKyAgICA6IE1lZGlhQ29u
dHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTUVESUFfQ09OVFJPTFNfUkVXSU5EX0JVVFRPTiwg
ImJ1dHRvbiIsIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xSZXdpbmRC
dXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUmV3aW5k
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAg
bWVkaWFFbGVtZW50KCktPnJld2luZCgzMCk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5yZXdp
bmQoMzApOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9ICAgIAog
ICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtNjE2
LDIwICs1NjQsMTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRp
YUVsZW1lbnQsIE1FRElBX0NPTlRST0xTX1JFVFVSTl9UT19SRUFMVElNRV9CVVRUT04sICJidXR0
b24iKQorTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TE1lZGlhRWxlbWVudCogZWxlbWVudCkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChk
b2N1bWVudCwgTUVESUFfQ09OVFJPTFNfUkVUVVJOX1RPX1JFQUxUSU1FX0JVVFRPTiwgImJ1dHRv
biIsIGVsZW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVt
ZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotewotICAgIHJldHVy
biBuZXcgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVt
ZW50KTsKLX0KLQogdm9pZCBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50
KCktPnJldHVyblRvUmVhbHRpbWUoKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJldHVyblRv
UmVhbHRpbWUoKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQog
ICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtNjM4
LDIxICs1ODEsMTYgQEAgdm9pZCBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTUVESUFfQ09OVFJPTFNfVE9HR0xFX0NMT1NFRF9D
QVBUSU9OU19CVVRUT04sICJidXR0b24iKQorTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqIGRvYywgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKKyAgICA6IE1l
ZGlhQ29udHJvbElucHV0RWxlbWVudChkb2MsIE1FRElBX0NPTlRST0xTX1RPR0dMRV9DTE9TRURf
Q0FQVElPTlNfQlVUVE9OLCAiYnV0dG9uIiwgZWxlbWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKLXsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpOwotfQotCiB2b2lkIE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldENsb3NlZENhcHRp
b25zVmlzaWJsZSghbWVkaWFFbGVtZW50KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKLSAg
ICAgICAgc2V0Q2hlY2tlZChtZWRpYUVsZW1lbnQoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkp
OworICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCFtX21l
ZGlhRWxlbWVudC0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOworICAgICAgICBzZXRDaGVja2Vk
KG1fbWVkaWFFbGVtZW50LT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTY2MCwxOSArNTk4LDE1IEBAIHZvaWQgTWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBlCiAKIHZvaWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCiB7Ci0gICAgc2V0RGlzcGxheVR5cGUobWVk
aWFFbGVtZW50KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpID8gTWVkaWFIaWRlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24gOiBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbik7CisgICAgc2V0RGlz
cGxheVR5cGUobV9tZWRpYUVsZW1lbnQtPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpID8gTWVkaWFI
aWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gOiBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbik7
CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxl
bWVudCwgTUVESUFfQ09OVFJPTFNfVElNRUxJTkUsICJyYW5nZSIpCi17Ci19CisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVF
bGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCitNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFRpbWVsaW5lRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1FRElB
X0NPTlRST0xTX1RJTUVMSU5FLCAicmFuZ2UiLCBlbGVtZW50KQogewotICAgIHJldHVybiBuZXcg
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KG1lZGlhRWxlbWVudCk7CiB9CiAKIHZvaWQgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKQEAgLTY4NSw3ICs2MTksNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkKLSAgICAg
ICAgbWVkaWFFbGVtZW50KCktPmJlZ2luU2NydWJiaW5nKCk7CisgICAgICAgIG1fbWVkaWFFbGVt
ZW50LT5iZWdpblNjcnViYmluZygpOwogCiAgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIApAQCAtNjkzLDM5ICs2MjcsMzQgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh2YWx1ZSgpLnRvRG91YmxlKCkpOwotICAgIGlmICh0aW1lICE9IG1lZGlhRWxlbWVu
dCgpLT5jdXJyZW50VGltZSgpKSB7CisgICAgaWYgKHRpbWUgIT0gbV9tZWRpYUVsZW1lbnQtPmN1
cnJlbnRUaW1lKCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgbWVkaWFF
bGVtZW50KCktPnNldEN1cnJlbnRUaW1lKHRpbWUsIGVjKTsKKyAgICAgICAgbV9tZWRpYUVsZW1l
bnQtPnNldEN1cnJlbnRUaW1lKHRpbWUsIGVjKTsKICAgICB9CiAKICAgICBSZW5kZXJTbGlkZXIq
IHNsaWRlciA9IHRvUmVuZGVyU2xpZGVyKHJlbmRlcmVyKCkpOwogICAgIGlmIChzbGlkZXIgJiYg
c2xpZGVyLT5pbkRyYWdNb2RlKCkpCi0gICAgICAgIHRvUmVuZGVyTWVkaWEobWVkaWFFbGVtZW50
KCktPnJlbmRlcmVyKCkpLT51cGRhdGVUaW1lRGlzcGxheSgpOworICAgICAgICB0b1JlbmRlck1l
ZGlhKG1fbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpKS0+dXBkYXRlVGltZURpc3BsYXkoKTsKIAog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCi0gICAg
ICAgIG1lZGlhRWxlbWVudCgpLT5lbmRTY3J1YmJpbmcoKTsKKyAgICAgICAgbV9tZWRpYUVsZW1l
bnQtPmVuZFNjcnViYmluZygpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dDo6dXBkYXRlKGJvb2wgdXBkYXRlRHVyYXRpb24pIAogewogICAgIGlmICh1cGRhdGVEdXJhdGlv
bikgewotICAgICAgICBmbG9hdCBkdXJhdGlvbiA9IG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbigp
OwotICAgICAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoaXNmaW5pdGUo
ZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7CisgICAgICAgIGZsb2F0IGR1ciA9IG1fbWVkaWFF
bGVtZW50LT5kdXJhdGlvbigpOworICAgICAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5n
OjpudW1iZXIoaXNmaW5pdGUoZHVyKSA/IGR1ciA6IDApKTsKICAgICB9Ci0gICAgc2V0VmFsdWUo
U3RyaW5nOjpudW1iZXIobWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkpKTsKKyAgICBzZXRW
YWx1ZShTdHJpbmc6Om51bWJlcihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSkpOwogICAg
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6dXBkYXRlKCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwg
TUVESUFfQ09OVFJPTFNfVk9MVU1FX1NMSURFUiwgInJhbmdlIikKLXsKLX0KLQotUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1FRElBX0NPTlRST0xTX1ZPTFVNRV9T
TElERVIsICJyYW5nZSIsIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50KG1lZGlhRWxlbWVudCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBA
IC03NDMsMTYgKzY3MiwxNiBAQCB2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICByZXR1cm47CiAKICAg
ICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUo
KSk7Ci0gICAgaWYgKHZvbHVtZSAhPSBtZWRpYUVsZW1lbnQoKS0+dm9sdW1lKCkpIHsKKyAgICBp
ZiAodm9sdW1lICE9IG1fbWVkaWFFbGVtZW50LT52b2x1bWUoKSkgewogICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSh2b2x1bWUs
IGVjKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKICAg
ICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogfQogCiB2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckVsZW1lbnQ6OnVwZGF0ZSgpCiB7Ci0gICAgZmxvYXQgdm9sdW1lID0gbWVkaWFFbGVtZW50
KCktPnZvbHVtZSgpOworICAgIGZsb2F0IHZvbHVtZSA9IG1fbWVkaWFFbGVtZW50LT52b2x1bWUo
KTsKICAgICBpZiAodmFsdWUoKS50b0Zsb2F0KCkgIT0gdm9sdW1lKQogICAgICAgICBzZXRWYWx1
ZShTdHJpbmc6Om51bWJlcih2b2x1bWUpKTsKICAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6
OnVwZGF0ZSgpOwpAQCAtNzYwLDIwICs2ODksMTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50Ojp1cGRhdGUoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLWlubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFDb250
cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTUVESUFfQ09O
VFJPTFNfRlVMTFNDUkVFTl9CVVRUT04sICJidXR0b24iKQotewotfQotCi1QYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK01l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1l
bnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1FRElBX0NPTlRS
T0xTX0ZVTExTQ1JFRU5fQlVUVE9OLCAiYnV0dG9uIiwgZWxlbWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CiB9
CiAKIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxz
Y3JlZW4oKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmVudGVyRnVsbHNjcmVlbigpOwogICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAgICAgSFRNTElucHV0RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CkBAIC03ODEsMTggKzcwNSwxMyBAQCB2
b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1p
bmxpbmUgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1
ZG8pCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1lZGlhRWxlbWVudCwgcHNldWRvKQorTWVk
aWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50LCBQc2V1ZG9JZCBwc2V1ZG8sIEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50LCBwc2V1ZG8sIGVs
ZW1lbnQpCiAgICAgLCBtX2N1cnJlbnRWYWx1ZSgwKQogICAgICwgbV9pc1Zpc2libGUodHJ1ZSkK
IHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ+IE1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCwgUHNldWRvSWQgcHNldWRvU3R5bGVJZCkKLXsKLSAgICByZXR1cm4gbmV3IE1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQsIHBzZXVkb1N0eWxlSWQpOwot
fQotCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQ6OnN0eWxlRm9yRWxlbWVudCgpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9
IE1lZGlhQ29udHJvbEVsZW1lbnQ6OnN0eWxlRm9yRWxlbWVudCgpOwpAQCAtODIzLDYgKzc0Miw2
IEBAIHZvaWQgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpzZXRDdXJyZW50VmFsdWUo
ZmxvYXQgdGltZSkKICAgICBtX2N1cnJlbnRWYWx1ZSA9IHRpbWU7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKK30gLy9uYW1lc3BhY2UgV2Vi
Q29yZQorI2VuZGlmIC8vIGVuYWJsZSh2aWRlbykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5oCmluZGV4IDY4YzA2YTM3MjZmZTY3YmY1NzUxM2I5OTJlMTdmOTM2ODRlM2Zi
MzguLjIxODMxY2VlZjdiMTA2ZTU0N2IzN2EwZjJkODNiOTFhMjQ2Mjc4MzUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIsMTYgKzcyLDE0
IEBAIEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KFJlbmRlck9iamVjdCop
OwogCiBjbGFzcyBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2hh
ZG93Um9vdEVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2b2lkIHVw
ZGF0ZVN0eWxlKCk7Ci0gICAgCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxl
bWVudChEb2N1bWVudCosIEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgTm9k
ZSogc2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CiAKKyAgICB2
b2lkIHVwZGF0ZVN0eWxlKCk7CisgICAgCitwcml2YXRlOgogICAgIEhUTUxNZWRpYUVsZW1lbnQq
IG1fbWVkaWFFbGVtZW50OyAgICAKIH07CiAKQEAgLTg5LDI3ICs4NywyMSBAQCBwcml2YXRlOgog
CiBjbGFzcyBNZWRpYUNvbnRyb2xFbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xFbGVtZW50PiBjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCosIFBzZXVkb0lkKTsKLQorICAgIE1lZGlhQ29udHJvbEVsZW1lbnQo
RG9jdW1lbnQqLCBQc2V1ZG9JZCwgSFRNTE1lZGlhRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1l
bnQoKTsKICAgICB2b2lkIGF0dGFjaFRvUGFyZW50KEVsZW1lbnQqKTsKICAgICB2b2lkIHVwZGF0
ZSgpOwotICAgIHZvaWQgdXBkYXRlU3R5bGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5
bGUoKTsKIAogICAgIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5VHlwZTsgfQogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLQotcHJvdGVjdGVkOgot
ICAgIE1lZGlhQ29udHJvbEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIFBzZXVkb0lkKTsKLQot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7Ci0KLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudCgpOwotCi1wcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAKK3Byb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlh
RWxlbWVudDsgICAKICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxlSWQ7CiAgICAgTWVkaWFDb250
cm9sRWxlbWVudFR5cGUgbV9kaXNwbGF5VHlwZTsgIC8vIHNvbWUgZWxlbWVudHMgY2FuIHNob3cg
bXVsdGlwbGUgdHlwZXMgKGUuZy4gcGxheS9wYXVzZSkKQEAgLTExOSwxMCArMTExLDcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCosIEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOwogfTsKIApAQCAtMTMwLDggKzExOSw3
IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKLQorICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNv
bnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqLCBIVE1MTWVkaWFFbGVtZW50Kik7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQoKTsKICAgICB2b2lkIHNl
dFZpc2libGUoYm9vbCk7CiAgICAgYm9vbCBpc1Zpc2libGUoKSB7IHJldHVybiBtX2lzVmlzaWJs
ZTsgfQpAQCAtMTM5LDggKzEyNyw2IEBAIHB1YmxpYzoKICAgICBib29sIGhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmIGFic1BvaW50KTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKLQogICAgIGJvb2wgbV9p
c1Zpc2libGU7CiAgICAgaW50IG1feCwgbV95OwogfTsKQEAgLTE0OSwxNSArMTM1LDEwIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCop
OwotCi0gICAgdm9pZCB1cGRhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xTdGF0
dXNEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0KKyAgICBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudChEb2N1bWVudCosIEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlKCk7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqKTsKLQorcHJpdmF0ZToKICAgICBlbnVtIFN0YXRlQmVpbmdEaXNwbGF5ZWQg
eyBOb3RoaW5nLCBMb2FkaW5nLCBMaXZlQnJvYWRjYXN0IH07CiAgICAgU3RhdGVCZWluZ0Rpc3Bs
YXllZCBtX3N0YXRlQmVpbmdEaXNwbGF5ZWQ7CiB9OwpAQCAtMTY2LDMyICsxNDcsMjQgQEAgcHJp
dmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IDogcHVibGljIEhUTUxJbnB1
dEVsZW1lbnQgewogcHVibGljOgorICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudChEb2N1bWVu
dCosIFBzZXVkb0lkLCBjb25zdCBTdHJpbmcmIHR5cGUsIEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKTsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGVGb3JFbGVtZW50KCk7CiAgICAgdm9pZCBhdHRhY2hUb1BhcmVudChFbGVtZW50Kik7CiAg
ICAgdm9pZCB1cGRhdGUoKTsKICAgICB2b2lkIHVwZGF0ZVN0eWxlKCk7CiAKICAgICBib29sIGhp
dFRlc3QoY29uc3QgSW50UG9pbnQmIGFic1BvaW50KTsKLQogICAgIE1lZGlhQ29udHJvbEVsZW1l
bnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5VHlwZTsgfQogCiAg
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRp
YUVsZW1lbnQ7IH0KLQotcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudChI
VE1MTWVkaWFFbGVtZW50KiwgUHNldWRvSWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0KLSAgICB2
b2lkIHNldERpc3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKLQotICAgIFBzZXVk
b0lkIHBzZXVkb1N0eWxlSWQoKSBjb25zdCB7IHJldHVybiBtX3BzZXVkb1N0eWxlSWQ7IH0KLQot
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRp
YUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCitwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgeyB9CisgICAgdm9pZCBzZXREaXNw
bGF5VHlwZShNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50
KiBtX21lZGlhRWxlbWVudDsgICAKICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxlSWQ7CkBAIC0y
MDIsMTMgKzE3NSw4IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbE11dGVCdXR0b25F
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50Kik7Ci0KKyAgICBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChE
b2N1bWVudCosIEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbE11dGVCdXR0
b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKLQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVE
aXNwbGF5VHlwZSgpOwogfTsKIApAQCAtMjE2LDEzICsxODQsOCBAQCBwcml2YXRlOgogCiBjbGFz
cyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwotCisgICAgTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBIVE1MTWVkaWFFbGVtZW50Kik7CiAg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKLQotcHJpdmF0ZToK
LSAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKIH07CiAKQEAgLTIzMCwxOCAr
MTkzLDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVk
aWFFbGVtZW50KiwgUHNldWRvSWQpOwotCisgICAgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqLCBIVE1MTWVkaWFFbGVtZW50KiwgYm9vbCBmb3J3YXJkKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotCi1wcml2YXRlOgotICAgIE1l
ZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBQc2V1ZG9JZCk7
Ci0KLSAgICBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0OwotCiAgICAgdmlydHVhbCB2b2lk
IGRldGFjaCgpOwogICAgIHZvaWQgc2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ+Kik7CiAKK3ByaXZhdGU6CisgICAgYm9vbCBtX2ZvcndhcmQ7CiAgICAg
Ym9vbCBtX3NlZWtpbmc7CiAgICAgYm9vbCBtX2NhcHR1cmluZzsKICAgICBUaW1lcjxNZWRpYUNv
bnRyb2xTZWVrQnV0dG9uRWxlbWVudD4gbV9zZWVrVGltZXI7CkBAIC0yNTEsMzcgKzIwOSwyNCBA
QCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqKTsKLQorICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
LCBIVE1MTWVkaWFFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogY2xhc3MgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQg
OiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKLQorICAgIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRp
bWVCdXR0b25FbGVtZW50KERvY3VtZW50KiwgSFRNTE1lZGlhRWxlbWVudCopOwogICAgIHZpcnR1
YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgTWVk
aWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCop
OwogfTsgICAgCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgTWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlh
Q29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCopOwotCisgICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b25FbGVtZW50KERvY3VtZW50KiwgSFRNTE1lZGlhRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgTWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsK
LQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpOwogfTsgICAgCiAKQEAgLTI4
OSw1NSArMjM0LDQwIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKEhUTUxN
ZWRpYUVsZW1lbnQqKTsKLQorICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChEb2N1bWVu
dCosIEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopOwogICAgIHZvaWQgdXBkYXRlKGJvb2wgdXBkYXRlRHVyYXRpb24gPSB0cnVl
KTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCopOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFz
cyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKLQorICAgIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqLCBIVE1MTWVkaWFFbGVtZW50
Kik7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKLSAgICB2
b2lkIHVwZGF0ZSgpOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoKTsKIH07
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKLQorICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KERvY3VtZW50KiwgSFRNTE1lZGlhRWxlbWVudCop
OwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0KLXByaXZh
dGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBN
ZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3Bs
YXlFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIFBzZXVkb0lkKTsKLQorICAgIE1l
ZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCosIFBzZXVkb0lkLCBIVE1MTWVk
aWFFbGVtZW50Kik7CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KCk7CiAKICAgICB2b2lkIHNldEN1
cnJlbnRWYWx1ZShmbG9hdCk7CiAgICAgZmxvYXQgY3VycmVudFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50VmFsdWU7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIFBzZXVkb0lkKTsKLQotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KCk7CiAgICAgZmxvYXQgbV9j
dXJyZW50VmFsdWU7CiAgICAgYm9vbCBtX2lzVmlzaWJsZTsKIH07CkBAIC0zNTIsOCArMjgyLDcg
QEAgcHVibGljOgogICAgIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi19IC8v
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAorfSAvL25hbWVz
cGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gZW5hYmxlKHZpZGVvKQogI2VuZGlmIC8vIE1lZGlhQ29u
dHJvbEVsZW1lbnRzX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcAppbmRleCBkNGQ3M2JjZWJmNmNmMjQwYjcwYzA4NGY1OGY4OGQ0Y2MzZTE4OWJiLi4x
YWUxNDliZmRhYzBiZjNkOGUzMTc1YjdkNWJjZjMyNTczZWM4NTZhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC01MCwzMCArNTAsMTcgQEAg
Y29uc3QgaW50IGljb25GaWxlbmFtZVNwYWNpbmcgPSAyOwogY29uc3QgaW50IGRlZmF1bHRXaWR0
aE51bUNoYXJzID0gMzQ7CiBjb25zdCBpbnQgYnV0dG9uU2hhZG93SGVpZ2h0ID0gMjsKIAotY2xh
c3MgU2hhZG93SW5wdXRFbGVtZW50IDogcHVibGljIEhUTUxJbnB1dEVsZW1lbnQgeworY2xhc3Mg
SFRNTEZpbGVVcGxvYWRJbm5lckJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgSFRNTElucHV0RWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93SW5wdXRFbGVtZW50PiBj
cmVhdGUoTm9kZSogc2hhZG93UGFyZW50KTsKLQotcHJpdmF0ZToKLSAgICBTaGFkb3dJbnB1dEVs
ZW1lbnQoTm9kZSogc2hhZG93UGFyZW50KTsKKyAgICBIVE1MRmlsZVVwbG9hZElubmVyQnV0dG9u
RWxlbWVudChEb2N1bWVudCosIE5vZGUqIHNoYWRvd1BhcmVudCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgTm9k
ZSogc2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CiAKK3ByaXZh
dGU6CiAgICAgTm9kZSogbV9zaGFkb3dQYXJlbnQ7ICAgIAogfTsKIAotaW5saW5lIFNoYWRvd0lu
cHV0RWxlbWVudDo6U2hhZG93SW5wdXRFbGVtZW50KE5vZGUqIHNoYWRvd1BhcmVudCkKLSAgICA6
IEhUTUxJbnB1dEVsZW1lbnQoaW5wdXRUYWcsIHNoYWRvd1BhcmVudC0+ZG9jdW1lbnQoKSkKLSAg
ICAsIG1fc2hhZG93UGFyZW50KHNoYWRvd1BhcmVudCkKLXsKLX0KLQotaW5saW5lIFBhc3NSZWZQ
dHI8U2hhZG93SW5wdXRFbGVtZW50PiBTaGFkb3dJbnB1dEVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBz
aGFkb3dQYXJlbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBTaGFkb3dJbnB1dEVsZW1lbnQoc2hhZG93
UGFyZW50KTsKLX0KLQogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZpbGVVcGxvYWRD
b250cm9sKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQogICAgIDogUmVuZGVyQmxvY2soaW5wdXQp
CiAgICAgLCBtX2J1dHRvbigwKQpAQCAtMTU2LDcgKzE0Myw3IEBAIHZvaWQgUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBBU1NFUlQoaW5wdXRFbGVtZW50
LT5pbnB1dFR5cGUoKSA9PSBIVE1MSW5wdXRFbGVtZW50OjpGSUxFKTsKICAgICAKICAgICBpZiAo
IW1fYnV0dG9uKSB7Ci0gICAgICAgIG1fYnV0dG9uID0gU2hhZG93SW5wdXRFbGVtZW50OjpjcmVh
dGUoaW5wdXRFbGVtZW50KTsKKyAgICAgICAgbV9idXR0b24gPSBuZXcgSFRNTEZpbGVVcGxvYWRJ
bm5lckJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQoKSwgaW5wdXRFbGVtZW50KTsKICAgICAgICAgbV9i
dXR0b24tPnNldElucHV0VHlwZSgiYnV0dG9uIik7CiAgICAgICAgIG1fYnV0dG9uLT5zZXRWYWx1
ZShmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwogICAgICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IGJ1dHRvblN0eWxlID0gY3JlYXRlQnV0dG9uU3R5bGUoc3R5bGUoKSk7CkBAIC0zMjYsNCAr
MzEzLDEwIEBAIFN0cmluZyBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZmlsZUNob29zZXItPmJhc2VuYW1lRm9yV2lkdGgoc3R5bGUo
KS0+Zm9udCgpLCBtYXhGaWxlbmFtZVdpZHRoKCkpOwogfQogICAgIAorSFRNTEZpbGVVcGxvYWRJ
bm5lckJ1dHRvbkVsZW1lbnQ6OkhUTUxGaWxlVXBsb2FkSW5uZXJCdXR0b25FbGVtZW50KERvY3Vt
ZW50KiBkb2MsIE5vZGUqIHNoYWRvd1BhcmVudCkKKyAgICA6IEhUTUxJbnB1dEVsZW1lbnQoaW5w
dXRUYWcsIGRvYykKKyAgICAsIG1fc2hhZG93UGFyZW50KHNoYWRvd1BhcmVudCkKK3sKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCmluZGV4IGJh
NjBlZDA2NjFmYTllNGIxOTc2NDA3YTg4YjA1YzMzZTI2ZGUzM2QuLjcxMDA0MzVhOTYxMThmYTY3
OGRiNzZhMzQ3YWY3Mzc3MjEyNjZjNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAg
LTE3MCw4NCArMTcwLDg0IEBAIHZvaWQgUmVuZGVyTWVkaWE6OmxheW91dCgpCiB2b2lkIFJlbmRl
ck1lZGlhOjpjcmVhdGVDb250cm9sc1NoYWRvd1Jvb3QoKQogewogICAgIEFTU0VSVCghbV9jb250
cm9sc1NoYWRvd1Jvb3QpOwotICAgIG1fY29udHJvbHNTaGFkb3dSb290ID0gTWVkaWFDb250cm9s
U2hhZG93Um9vdEVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQoKSk7CisgICAgbV9jb250cm9s
c1NoYWRvd1Jvb3QgPSBuZXcgTWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQoZG9jdW1lbnQo
KSwgbWVkaWFFbGVtZW50KCkpOwogICAgIGFkZENoaWxkKG1fY29udHJvbHNTaGFkb3dSb290LT5y
ZW5kZXJlcigpKTsKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlUGFuZWwoKQogewogICAg
IEFTU0VSVCghbV9wYW5lbCk7Ci0gICAgbV9wYW5lbCA9IE1lZGlhQ29udHJvbEVsZW1lbnQ6OmNy
ZWF0ZShtZWRpYUVsZW1lbnQoKSwgTUVESUFfQ09OVFJPTFNfUEFORUwpOworICAgIG1fcGFuZWwg
PSBuZXcgTWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCgpLCBNRURJQV9DT05UUk9MU19QQU5F
TCwgbWVkaWFFbGVtZW50KCkpOwogICAgIG1fcGFuZWwtPmF0dGFjaFRvUGFyZW50KG1fY29udHJv
bHNTaGFkb3dSb290LmdldCgpKTsKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlTXV0ZUJ1
dHRvbigpCiB7CiAgICAgQVNTRVJUKCFtX211dGVCdXR0b24pOwotICAgIG1fbXV0ZUJ1dHRvbiA9
IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KCkpOwor
ICAgIG1fbXV0ZUJ1dHRvbiA9IG5ldyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChkb2N1
bWVudCgpLCBtZWRpYUVsZW1lbnQoKSk7CiAgICAgbV9tdXRlQnV0dG9uLT5hdHRhY2hUb1BhcmVu
dChtX3BhbmVsLmdldCgpKTsKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlUGxheUJ1dHRv
bigpCiB7CiAgICAgQVNTRVJUKCFtX3BsYXlCdXR0b24pOwotICAgIG1fcGxheUJ1dHRvbiA9IE1l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KCkpOworICAg
IG1fcGxheUJ1dHRvbiA9IG5ldyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudChkb2N1bWVu
dCgpLCBtZWRpYUVsZW1lbnQoKSk7CiAgICAgbV9wbGF5QnV0dG9uLT5hdHRhY2hUb1BhcmVudCht
X3BhbmVsLmdldCgpKTsKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlU2Vla0JhY2tCdXR0
b24oKQogewogICAgIEFTU0VSVCghbV9zZWVrQmFja0J1dHRvbik7Ci0gICAgbV9zZWVrQmFja0J1
dHRvbiA9IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50
KCksIE1FRElBX0NPTlRST0xTX1NFRUtfQkFDS19CVVRUT04pOworICAgIG1fc2Vla0JhY2tCdXR0
b24gPSBuZXcgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQoKSwgbWVkaWFF
bGVtZW50KCksIGZhbHNlKTsKICAgICBtX3NlZWtCYWNrQnV0dG9uLT5hdHRhY2hUb1BhcmVudCht
X3BhbmVsLmdldCgpKTsKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlU2Vla0ZvcndhcmRC
dXR0b24oKQogewogICAgIEFTU0VSVCghbV9zZWVrRm9yd2FyZEJ1dHRvbik7Ci0gICAgbV9zZWVr
Rm9yd2FyZEJ1dHRvbiA9IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpjcmVhdGUobWVk
aWFFbGVtZW50KCksIE1FRElBX0NPTlRST0xTX1NFRUtfRk9SV0FSRF9CVVRUT04pOworICAgIG1f
c2Vla0ZvcndhcmRCdXR0b24gPSBuZXcgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoZG9j
dW1lbnQoKSwgbWVkaWFFbGVtZW50KCksIHRydWUpOwogICAgIG1fc2Vla0ZvcndhcmRCdXR0b24t
PmF0dGFjaFRvUGFyZW50KG1fcGFuZWwuZ2V0KCkpOwogfQogCiB2b2lkIFJlbmRlck1lZGlhOjpj
cmVhdGVSZXdpbmRCdXR0b24oKQogewogICAgIEFTU0VSVCghbV9yZXdpbmRCdXR0b24pOwotICAg
IG1fcmV3aW5kQnV0dG9uID0gTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KG1lZGlhRWxlbWVudCgpKTsKKyAgICBtX3Jld2luZEJ1dHRvbiA9IG5ldyBNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50KGRvY3VtZW50KCksIG1lZGlhRWxlbWVudCgpKTsKICAgICBtX3Jl
d2luZEJ1dHRvbi0+YXR0YWNoVG9QYXJlbnQobV9wYW5lbC5nZXQoKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyTWVkaWE6OmNyZWF0ZVJldHVyblRvUmVhbHRpbWVCdXR0b24oKQogewogICAgIEFTU0VSVCgh
bV9yZXR1cm5Ub1JlYWx0aW1lQnV0dG9uKTsKLSAgICBtX3JldHVyblRvUmVhbHRpbWVCdXR0b24g
PSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlh
RWxlbWVudCgpKTsKKyAgICBtX3JldHVyblRvUmVhbHRpbWVCdXR0b24gPSBuZXcgTWVkaWFDb250
cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQoKSwgbWVkaWFFbGVtZW50
KCkpOwogICAgIG1fcmV0dXJuVG9SZWFsdGltZUJ1dHRvbi0+YXR0YWNoVG9QYXJlbnQobV9wYW5l
bC5nZXQoKSk7CiB9CiAKIHZvaWQgUmVuZGVyTWVkaWE6OmNyZWF0ZVRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uKCkKIHsKICAgICBBU1NFUlQoIW1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24p
OwotICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSBNZWRpYUNvbnRyb2xUb2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQoKSk7CisgICAg
bV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IG5ldyBNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQoKSwgbWVkaWFFbGVtZW50KCkpOwogICAg
IG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmF0dGFjaFRvUGFyZW50KG1fcGFuZWwuZ2V0
KCkpOwogfQogCiB2b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVTdGF0dXNEaXNwbGF5KCkKIHsKICAg
ICBBU1NFUlQoIW1fc3RhdHVzRGlzcGxheSk7Ci0gICAgbV9zdGF0dXNEaXNwbGF5ID0gTWVkaWFD
b250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQoKSk7CisgICAg
bV9zdGF0dXNEaXNwbGF5ID0gbmV3IE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KGRv
Y3VtZW50KCksIG1lZGlhRWxlbWVudCgpKTsKICAgICBtX3N0YXR1c0Rpc3BsYXktPmF0dGFjaFRv
UGFyZW50KG1fcGFuZWwuZ2V0KCkpOwogfQogCiB2b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVUaW1l
bGluZUNvbnRhaW5lcigpCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVsaW5lQ29udGFpbmVyKTsKLSAg
ICBtX3RpbWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KCkpOworICAgIG1fdGltZWxpbmVDb250YWluZXIgPSBu
ZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KCksIG1lZGlh
RWxlbWVudCgpKTsKICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5hdHRhY2hUb1BhcmVudChtX3Bh
bmVsLmdldCgpKTsKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlVGltZWxpbmUoKQogewog
ICAgIEFTU0VSVCghbV90aW1lbGluZSk7Ci0gICAgbV90aW1lbGluZSA9IE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCgpKTsKKyAgICBtX3RpbWVsaW5lID0g
bmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChkb2N1bWVudCgpLCBtZWRpYUVsZW1lbnQo
KSk7CiAgICAgbV90aW1lbGluZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIp
OwogICAgIG1fdGltZWxpbmUtPmF0dGFjaFRvUGFyZW50KG1fdGltZWxpbmVDb250YWluZXIuZ2V0
KCkpOwogfQpAQCAtMjU1LDE0ICsyNTUsMTQgQEAgdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlVGlt
ZWxpbmUoKQogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlVm9sdW1lU2xpZGVyQ29udGFpbmVyKCkK
IHsKICAgICBBU1NFUlQoIW1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKTsKLSAgICBtX3ZvbHVtZVNs
aWRlckNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZShtZWRpYUVsZW1lbnQoKSk7CisgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXIgPSBu
ZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCgpLCBt
ZWRpYUVsZW1lbnQoKSk7CiAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPmF0dGFjaFRvUGFy
ZW50KG1fcGFuZWwuZ2V0KCkpOwogfQogCiB2b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVWb2x1bWVT
bGlkZXIoKQogewogICAgIEFTU0VSVCghbV92b2x1bWVTbGlkZXIpOwotICAgIG1fdm9sdW1lU2xp
ZGVyID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVu
dCgpKTsKKyAgICBtX3ZvbHVtZVNsaWRlciA9IG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJF
bGVtZW50KGRvY3VtZW50KCksIG1lZGlhRWxlbWVudCgpKTsKICAgICBtX3ZvbHVtZVNsaWRlci0+
c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwogICAgIG1fdm9sdW1lU2xpZGVy
LT5zZXRBdHRyaWJ1dGUobWF4QXR0ciwgIjEiKTsKICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0QXR0
cmlidXRlKHZhbHVlQXR0ciwgU3RyaW5nOjpudW1iZXIobWVkaWFFbGVtZW50KCktPnZvbHVtZSgp
KSk7CkBAIC0yNzIsMjEgKzI3MiwyMSBAQCB2b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVWb2x1bWVT
bGlkZXIoKQogdm9pZCBSZW5kZXJNZWRpYTo6Y3JlYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIHsK
ICAgICBBU1NFUlQoIW1fY3VycmVudFRpbWVEaXNwbGF5KTsKLSAgICBtX2N1cnJlbnRUaW1lRGlz
cGxheSA9IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVu
dCgpLCBNRURJQV9DT05UUk9MU19DVVJSRU5UX1RJTUVfRElTUExBWSk7CisgICAgbV9jdXJyZW50
VGltZURpc3BsYXkgPSBuZXcgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50
KCksIE1FRElBX0NPTlRST0xTX0NVUlJFTlRfVElNRV9ESVNQTEFZLCBtZWRpYUVsZW1lbnQoKSk7
CiAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPmF0dGFjaFRvUGFyZW50KG1fdGltZWxpbmVDb250
YWluZXIuZ2V0KCkpOwogfQogCiB2b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVUaW1lUmVtYWluaW5n
RGlzcGxheSgpCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVSZW1haW5pbmdEaXNwbGF5KTsKLSAgICBt
X3RpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50Ojpj
cmVhdGUobWVkaWFFbGVtZW50KCksIE1FRElBX0NPTlRST0xTX1RJTUVfUkVNQUlOSU5HX0RJU1BM
QVkpOworICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBuZXcgTWVkaWFDb250cm9sVGltZURp
c3BsYXlFbGVtZW50KGRvY3VtZW50KCksIE1FRElBX0NPTlRST0xTX1RJTUVfUkVNQUlOSU5HX0RJ
U1BMQVksIG1lZGlhRWxlbWVudCgpKTsKICAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5hdHRh
Y2hUb1BhcmVudChtX3RpbWVsaW5lQ29udGFpbmVyLmdldCgpKTsKIH0KIAogdm9pZCBSZW5kZXJN
ZWRpYTo6Y3JlYXRlRnVsbHNjcmVlbkJ1dHRvbigpCiB7CiAgICAgQVNTRVJUKCFtX2Z1bGxzY3Jl
ZW5CdXR0b24pOwotICAgIG1fZnVsbHNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KCkpOworICAgIG1fZnVsbHNjcmVl
bkJ1dHRvbiA9IG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChkb2N1bWVu
dCgpLCBtZWRpYUVsZW1lbnQoKSk7CiAgICAgbV9mdWxsc2NyZWVuQnV0dG9uLT5hdHRhY2hUb1Bh
cmVudChtX3BhbmVsLmdldCgpKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNz
LmNwcAppbmRleCBhYzNmYjE1ODVjYWQ2NGQ3NjlkODZmOTQyNjJlMjA3MzFiNDBhMTZmLi5jZjk4
ZjE4ZWVkOTdlMzk2MjlhNjAwMjg2MTE4YjJkNTFiZmEwN2UxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUHJvZ3Jlc3MuY3BwCkBAIC0xOSw3ICsxOSw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotCiAjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKIAogI2luY2x1ZGUgIlJlbmRlclByb2dy
ZXNzLmgiCkBAIC0zOSwyNiArMzgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
Y2xhc3MgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyZXNzVmFsdWVFbGVtZW50PiBjcmVhdGUo
Tm9kZSogc2hhZG93UGFyZW50KTsKKyAgICBQcm9ncmVzc1ZhbHVlRWxlbWVudChEb2N1bWVudCos
IE5vZGUqIHNoYWRvd1BhcmVudCk7CiAKIHByaXZhdGU6ICAgICAgICAKLSAgICBQcm9ncmVzc1Zh
bHVlRWxlbWVudChOb2RlKiBzaGFkb3dQYXJlbnQpOwotCiAgICAgdmlydHVhbCBib29sIGlzU2hh
ZG93Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIE5vZGUqIHNoYWRv
d1BhcmVudE5vZGUoKSB7IHJldHVybiBtX3NoYWRvd1BhcmVudDsgfQogCiAgICAgTm9kZSogbV9z
aGFkb3dQYXJlbnQ7CiB9OwogCi1pbmxpbmUgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6OlByb2dyZXNz
VmFsdWVFbGVtZW50KE5vZGUqIHNoYWRvd1BhcmVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50KGRp
dlRhZywgc2hhZG93UGFyZW50LT5kb2N1bWVudCgpKQotICAgICwgbV9zaGFkb3dQYXJlbnQoc2hh
ZG93UGFyZW50KQotewotfQotCi1pbmxpbmUgUGFzc1JlZlB0cjxQcm9ncmVzc1ZhbHVlRWxlbWVu
dD4gUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCitQcm9n
cmVzc1ZhbHVlRWxlbWVudDo6UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
LCBOb2RlKiBzaGFkb3dQYXJlbnQpCis6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQp
CissIG1fc2hhZG93UGFyZW50KHNoYWRvd1BhcmVudCkKIHsKLSAgICByZXR1cm4gbmV3IFByb2dy
ZXNzVmFsdWVFbGVtZW50KHNoYWRvd1BhcmVudCk7CiB9CiAKIFJlbmRlclByb2dyZXNzOjpSZW5k
ZXJQcm9ncmVzcyhIVE1MUHJvZ3Jlc3NFbGVtZW50KiBlbGVtZW50KQpAQCAtMTQ0LDcgKzEzNiw3
IEBAIHZvaWQgUmVuZGVyUHJvZ3Jlc3M6OnVwZGF0ZVZhbHVlUGFydFN0YXRlKCkKIHsKICAgICBi
b29sIG5lZWRMYXlvdXQgPSAhc3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpIHx8IG1fdmFsdWVQYXJ0
OwogICAgIGlmICghc3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYmICFtX3ZhbHVlUGFydCkgewot
ICAgICAgICBtX3ZhbHVlUGFydCA9IFByb2dyZXNzVmFsdWVFbGVtZW50OjpjcmVhdGUobm9kZSgp
KTsKKyAgICAgICAgbV92YWx1ZVBhcnQgPSBuZXcgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQoZG9jdW1l
bnQoKSwgbm9kZSgpKTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclZhbHVl
UGFydCA9IGNyZWF0ZVN0eWxlRm9yVmFsdWVQYXJ0KHN0eWxlKCkpOwogICAgICAgICBtX3ZhbHVl
UGFydC0+c2V0UmVuZGVyZXIobV92YWx1ZVBhcnQtPmNyZWF0ZVJlbmRlcmVyKHJlbmRlckFyZW5h
KCksIHN0eWxlRm9yVmFsdWVQYXJ0LmdldCgpKSk7CiAgICAgICAgIG1fdmFsdWVQYXJ0LT5yZW5k
ZXJlcigpLT5zZXRTdHlsZShzdHlsZUZvclZhbHVlUGFydC5yZWxlYXNlKCkpOwpAQCAtMjIzLDUg
KzIxNSw0IEBAIEhUTUxQcm9ncmVzc0VsZW1lbnQqIFJlbmRlclByb2dyZXNzOjpwcm9ncmVzc0Vs
ZW1lbnQoKSBjb25zdAogfSAgICAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDMyNGQxZmRlOTM5NmJjYjUzOGUzMWEz
YjFjODljMGRlNWRiM2NjYWUuLjFjYTU3MWVlM2FiYmNjN2FjYTJjMDI3M2YyMmUwM2YzYjFhZjRj
ODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtNTQsMTkgKzU0LDE2IEBAIHN0
YXRpYyBkb3VibGUgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAg
ICByZXR1cm4gcmFuZ2UucHJvcG9ydGlvbkZyb21WYWx1ZShyYW5nZS52YWx1ZUZyb21FbGVtZW50
KGVsZW1lbnQpKTsKIH0KIAotLy8gRklYTUU6IENvdWxkIHNoYXJlIGNvZGUgd2l0aCB0aGUgU2xp
ZGVyRGl2RWxlbWVudCBjbGFzcyBpbiBSZW5kZXJQcm9ncmVzcy4KIGNsYXNzIFNsaWRlclRodW1i
RWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U2xpZGVyVGh1bWJFbGVtZW50PiBjcmVhdGUoTm9kZSogc2hhZG93UGFyZW50KTsK
LQorICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCosIE5vZGUqIHNoYWRvd1BhcmVudCk7
CisgICAgCiAgICAgYm9vbCBpbkRyYWdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pbkRyYWdNb2Rl
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAogcHJpdmF0ZTogICAgICAgIAotICAgIFNsaWRlclRo
dW1iRWxlbWVudChOb2RlKiBzaGFkb3dQYXJlbnQpOwotICAgIAogICAgIHZpcnR1YWwgYm9vbCBp
c1NoYWRvd05vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBOb2RlKiBz
aGFkb3dQYXJlbnROb2RlKCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0KIApAQCAtNzUsMTgg
KzcyLDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luRHJhZ01vZGU7CiB9OwogCi1pbmxpbmUg
U2xpZGVyVGh1bWJFbGVtZW50OjpTbGlkZXJUaHVtYkVsZW1lbnQoTm9kZSogc2hhZG93UGFyZW50
KQotICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBzaGFkb3dQYXJlbnQtPmRvY3VtZW50KCkp
CitTbGlkZXJUaHVtYkVsZW1lbnQ6OlNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQsIE5vZGUqIHNoYWRvd1BhcmVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9j
dW1lbnQpCiAgICAgLCBtX3NoYWRvd1BhcmVudChzaGFkb3dQYXJlbnQpCiAgICAgLCBtX2luRHJh
Z01vZGUoZmFsc2UpCiB7CiB9CiAKLWlubGluZSBQYXNzUmVmUHRyPFNsaWRlclRodW1iRWxlbWVu
dD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoTm9kZSogc2hhZG93UGFyZW50KQotewotICAg
IHJldHVybiBuZXcgU2xpZGVyVGh1bWJFbGVtZW50KHNoYWRvd1BhcmVudCk7Ci19Ci0KIHZvaWQg
U2xpZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsK
ICAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSkgewpAQCAtMzEzLDcgKzMwNSw3IEBAIHZv
aWQgUmVuZGVyU2xpZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiAgICAgLy8gTGF5b3V0IHdp
bGwgdGFrZSBjYXJlIG9mIHRoZSB0aHVtYidzIHNpemUgYW5kIHBvc2l0aW9uLgogICAgIGlmICgh
bV90aHVtYikgewotICAgICAgICBtX3RodW1iID0gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUo
bm9kZSgpKTsKKyAgICAgICAgbV90aHVtYiA9IG5ldyBTbGlkZXJUaHVtYkVsZW1lbnQoZG9jdW1l
bnQoKSwgbm9kZSgpKTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiB0aHVtYlN0eWxlID0g
Y3JlYXRlVGh1bWJTdHlsZShzdHlsZSgpKTsKICAgICAgICAgbV90aHVtYi0+c2V0UmVuZGVyZXIo
bV90aHVtYi0+Y3JlYXRlUmVuZGVyZXIocmVuZGVyQXJlbmEoKSwgdGh1bWJTdHlsZS5nZXQoKSkp
OwogICAgICAgICBtX3RodW1iLT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0aHVtYlN0eWxlLnJlbGVh
c2UoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggNzcyNDYx
OWUwZDhiMWYxZjU2YTlmMmRjZDQ0N2FmM2JmYzhlZGNhYy4uNmU5YmY1N2E1NGVkMmZhM2U2OWI4
OTRkMzNlYTQ3ZTk4ZTllYzcxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmNyZWF0ZVN1
YnRyZWVJZk5lZWRlZChUZXh0Q29udHJvbElubmVyRWxlbWVudCogaW5uZXJCbG9jCiAgICAgICAg
IC8vIEZvciBub24tc2VhcmNoIGZpZWxkcywgdGhlcmUgaXMgbm8gaW50ZXJtZWRpYXRlIGlubmVy
QmxvY2sgYXMgdGhlIHNoYWRvdyBub2RlLgogICAgICAgICAvLyBtX2lubmVyVGV4dCB3aWxsIGJl
IHRoZSBzaGFkb3cgbm9kZSBpbiB0aGF0IGNhc2UuICAgICAgICAKICAgICAgICAgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlID0gaW5uZXJCbG9jayA/IGlubmVyQmxvY2stPnJlbmRlcmVyKCktPnN0
eWxlKCkgOiBzdHlsZSgpOwotICAgICAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCksIGlubmVyQmxvY2sgPyAwIDogbm9kZSgpKTsK
KyAgICAgICAgbV9pbm5lclRleHQgPSBuZXcgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGRv
Y3VtZW50KCksIGlubmVyQmxvY2sgPyAwIDogbm9kZSgpKTsKICAgICAgICAgbV9pbm5lclRleHQt
PmF0dGFjaElubmVyRWxlbWVudChpbm5lckJsb2NrID8gaW5uZXJCbG9jayA6IG5vZGUoKSwgY3Jl
YXRlSW5uZXJUZXh0U3R5bGUocGFyZW50U3R5bGUpLCByZW5kZXJBcmVuYSgpKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cAppbmRleCA3OTY5OGI5NjBiNDQyYzI3YThiNjIyY2Y2M2VjNzI5YTllYzU0YjMyLi43ZjQwOTQ0
N2NhOWY0NzhhZmNkMjMyNzk4ODYyZmQ2MTM3NzFmOTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTUyMSw3ICs1MjEsNyBA
QCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlU3VidHJlZUlmTmVlZGVk
KCkKICAgICBpZiAoIWlucHV0RWxlbWVudCgpLT5pc1NlYXJjaEZpZWxkKCkpIHsKICAgICAgICAg
UmVuZGVyVGV4dENvbnRyb2w6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZChtX2lubmVyQmxvY2suZ2V0
KCkpOwogICAgICAgICBpZiAoaW5wdXRFbGVtZW50KCktPmhhc1NwaW5CdXR0b24oKSAmJiAhbV9v
dXRlclNwaW5CdXR0b24pIHsKLSAgICAgICAgICAgIG1fb3V0ZXJTcGluQnV0dG9uID0gU3BpbkJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShub2RlKCkpOworICAgICAgICAgICAgbV9vdXRlclNwaW5CdXR0
b24gPSBuZXcgU3BpbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQoKSwgbm9kZSgpKTsKICAgICAgICAg
ICAgIG1fb3V0ZXJTcGluQnV0dG9uLT5hdHRhY2hJbm5lckVsZW1lbnQobm9kZSgpLCBjcmVhdGVP
dXRlclNwaW5CdXR0b25TdHlsZSgpLCByZW5kZXJBcmVuYSgpKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CkBAIC01MjksMTMgKzUyOSwxMyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6Y3JlYXRlU3VidHJlZUlmTmVlZGVkKCkKIAogICAgIGlmICghbV9pbm5lckJsb2Nr
KSB7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgaW5uZXIgYmxvY2sgZWxlbWVudAotICAgICAgICBt
X2lubmVyQmxvY2sgPSBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKG5vZGUoKSk7Cisg
ICAgICAgIG1faW5uZXJCbG9jayA9IG5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVudChkb2N1bWVu
dCgpLCBub2RlKCkpOwogICAgICAgICBtX2lubmVyQmxvY2stPmF0dGFjaElubmVyRWxlbWVudChu
b2RlKCksIGNyZWF0ZUlubmVyQmxvY2tTdHlsZShzdHlsZSgpKSwgcmVuZGVyQXJlbmEoKSk7CiAg
ICAgfQogCiAgICAgaWYgKCFtX3Jlc3VsdHNCdXR0b24pIHsKICAgICAgICAgLy8gQ3JlYXRlIHRo
ZSBzZWFyY2ggcmVzdWx0cyBidXR0b24gZWxlbWVudAotICAgICAgICBtX3Jlc3VsdHNCdXR0b24g
PSBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Cisg
ICAgICAgIG1fcmVzdWx0c0J1dHRvbiA9IG5ldyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVt
ZW50KGRvY3VtZW50KCkpOwogICAgICAgICBtX3Jlc3VsdHNCdXR0b24tPmF0dGFjaElubmVyRWxl
bWVudChtX2lubmVyQmxvY2suZ2V0KCksIGNyZWF0ZVJlc3VsdHNCdXR0b25TdHlsZShtX2lubmVy
QmxvY2stPnJlbmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKICAgICB9CiAKQEAg
LTU0NCw3ICs1NDQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRl
U3VidHJlZUlmTmVlZGVkKCkKIAogICAgIGlmICghbV9jYW5jZWxCdXR0b24pIHsKICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBjYW5jZWwgYnV0dG9uIGVsZW1lbnQKLSAgICAgICAgbV9jYW5jZWxCdXR0
b24gPSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsK
KyAgICAgICAgbV9jYW5jZWxCdXR0b24gPSBuZXcgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50KGRvY3VtZW50KCkpOwogICAgICAgICBtX2NhbmNlbEJ1dHRvbi0+YXR0YWNoSW5uZXJFbGVt
ZW50KG1faW5uZXJCbG9jay5nZXQoKSwgY3JlYXRlQ2FuY2VsQnV0dG9uU3R5bGUobV9pbm5lckJs
b2NrLT5yZW5kZXJlcigpLT5zdHlsZSgpKSwgcmVuZGVyQXJlbmEoKSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggZWQx
MjYxMTZkMWMwMTMzMGE2YmY0NzhlNWU0ZWE1ZWNjZGQyODNiMi4uODRmN2MwZmIyNGI2ODhhNjNj
Y2IxYTg2NmI1NDA3NmQ3OWQzZDM4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsMTcgKzQwLDE0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQogY2xhc3Mg
UmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1Ymxp
YzoKICAgICBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2soTm9kZSogbm9kZSwgYm9vbCBpc011
bHRpTGluZSkgOiBSZW5kZXJCbG9jayhub2RlKSwgbV9tdWx0aUxpbmUoaXNNdWx0aUxpbmUpIHsg
fQogCi1wcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBI
aXRUZXN0QWN0aW9uKTsKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBv
aW50KGNvbnN0IEludFBvaW50Jik7Ci0KLSAgICBib29sIG1fbXVsdGlMaW5lOworICAgIHByaXZh
dGU6CisgICAgICAgIGJvb2wgbV9tdWx0aUxpbmU7CiB9OwogCiBib29sIFJlbmRlclRleHRDb250
cm9sSW5uZXJCbG9jazo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0
VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpAQCAtNzksMTkgKzc2LDEyIEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmIHBvCiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KGNv
bnRlbnRzUG9pbnQpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRl
eHRDb250cm9sSW5uZXJFbGVtZW50OjpUZXh0Q29udHJvbElubmVyRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQsIE5vZGUqIHNoYWRvd1BhcmVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRh
ZywgZG9jdW1lbnQpCitUZXh0Q29udHJvbElubmVyRWxlbWVudDo6VGV4dENvbnRyb2xJbm5lckVs
ZW1lbnQoRG9jdW1lbnQqIGRvYywgTm9kZSogc2hhZG93UGFyZW50KQorICAgIDogSFRNTERpdkVs
ZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvYykKICAgICAsIG1fc2hhZG93UGFyZW50KHNoYWRv
d1BhcmVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gVGV4
dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCi17Ci0gICAg
cmV0dXJuIG5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVudChzaGFkb3dQYXJlbnQtPmRvY3VtZW50
KCksIHNoYWRvd1BhcmVudCk7Ci19Ci0KIHZvaWQgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0
dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlLCBSZW5kZXJBcmVuYSogYXJlbmEpCiB7CiAgICAgLy8gV2hlbiBhZGRpbmcgdGhlc2UgZWxl
bWVudHMsIGNyZWF0ZSB0aGUgcmVuZGVyZXIgJiBzdHlsZSBmaXJzdCBiZWZvcmUgYWRkaW5nIHRv
IHRoZSBET00uCkBAIC0xMTcsMjkgKzEwNywyMSBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPFJlbmRlcgog
ICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyKTsKIH0KIAotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
LCBOb2RlKiBzaGFkb3dQYXJlbnQpCi0gICAgOiBUZXh0Q29udHJvbElubmVyRWxlbWVudChkb2N1
bWVudCwgc2hhZG93UGFyZW50KQorVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQqIGRvYywgTm9kZSogc2hhZG93UGFyZW50KQor
ICAgIDogVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9jLCBzaGFkb3dQYXJlbnQpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIHNoYWRvd1BhcmVu
dCkKK3ZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQoZG9jdW1lbnQsIHNoYWRvd1BhcmVudCk7Ci19Ci0KLXZvaWQgVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICAvLyBG
SVhNRTogSW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGFkZCBhIHdheSB0byBoYXZlIGRlZmF1bHQg
ZXZlbnQgbGlzdGVuZXJzLgotICAgIC8vIFRoZW4gd2Ugd291bGQgYWRkIG9uZSB0byB0aGUgdGV4
dCBmaWVsZCdzIGlubmVyIGRpdiwgYW5kIHdlIHdvdWxkbid0IG5lZWQgdGhpcyBzdWJjbGFzcy4K
LSAgICAvLyBPciBwb3NzaWJseSB3ZSBjb3VsZCBqdXN0IHVzZSBhIG5vcm1hbCBldmVudCBsaXN0
ZW5lci4KLSAgICBpZiAoZXZlbnQtPmlzQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKSB8fCBldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZl
bnQpIHsKLSAgICAgICAgaWYgKE5vZGUqIHNoYWRvd0FuY2VzdG9yID0gc2hhZG93QW5jZXN0b3JO
b2RlKCkpCi0gICAgICAgICAgICBzaGFkb3dBbmNlc3Rvci0+ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudCk7CisgICAgLy8gRklYTUU6IEluIHRoZSBmdXR1cmUsIHdlIHNob3VsZCBhZGQgYSB3YXkg
dG8gaGF2ZSBkZWZhdWx0IGV2ZW50IGxpc3RlbmVycy4gIFRoZW4gd2Ugd291bGQgYWRkIG9uZSB0
byB0aGUgdGV4dCBmaWVsZCdzIGlubmVyIGRpdiwgYW5kIHdlIHdvdWxkbid0IG5lZWQgdGhpcyBz
dWJjbGFzcy4KKyAgICBOb2RlKiBzaGFkb3dBbmNlc3RvciA9IHNoYWRvd0FuY2VzdG9yTm9kZSgp
OworICAgIGlmIChzaGFkb3dBbmNlc3RvcikgeworICAgICAgICBpZiAoZXZ0LT5pc0JlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50KCkgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLndlYmtpdEVk
aXRhYmxlQ29udGVudENoYW5nZWRFdmVudCkKKyAgICAgICAgICAgIHNoYWRvd0FuY2VzdG9yLT5k
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2dCk7CiAgICAgfQotICAgIGlmIChldmVudC0+ZGVmYXVsdEhh
bmRsZWQoKSkKLSAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZl
bnQpOworICAgIGlmICghZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQorICAgICAgICBIVE1MRGl2RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQpOwogfQogCiBSZW5kZXJPYmplY3QqIFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCkBAIC0xNTMsMjMgKzEzNSwxNiBAQCBSZW5kZXJPYmplY3QqIFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2so
dGhpcywgbXVsdGlMaW5lKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1pbmxpbmUgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBUZXh0Q29udHJvbElu
bmVyRWxlbWVudChkb2N1bWVudCkKK1NlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OlNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvYykKKyAgICA6IFRleHRD
b250cm9sSW5uZXJFbGVtZW50KGRvYykKIHsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBuZXcgU2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uRWxlbWVudChkb2N1bWVudCk7Ci19Ci0KLXZvaWQgU2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2dCkKIHsKICAgICAvLyBPbiBtb3VzZWRvd24sIGJyaW5nIHVwIGEgbWVudSwgaWYgbmVlZGVk
CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwotICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3Rh
dGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewor
ICAgIGlmIChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgZXZ0
LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZ0KS0+YnV0dG9u
KCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAgICAgICAgaW5w
dXQtPnNlbGVjdCgpOwogICAgICAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUqIHJlbmRl
cmVyID0gdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoaW5wdXQtPnJlbmRlcmVyKCkpOwpA
QCAtMTc3LDI2ICsxNTIsMTggQEAgdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHJlbmRlcmVy
LT5oaWRlUG9wdXAoKTsKICAgICAgICAgZWxzZSBpZiAoaW5wdXQtPm1heFJlc3VsdHMoKSA+IDAp
CiAgICAgICAgICAgICByZW5kZXJlci0+c2hvd1BvcHVwKCk7Ci0gICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOworICAgICAgICBldnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
fQotCi0gICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKLSAgICAgICAgSFRNTERpdkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworICAgIGlmICghZXZ0LT5kZWZhdWx0
SGFuZGxlZCgpKQorICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dnQpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBUZXh0Q29udHJvbElubmVyRWxlbWVudChkb2N1
bWVudCkKK1NlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50KERvY3VtZW50KiBkb2MpCisgICAgOiBUZXh0Q29udHJvbElubmVyRWxlbWVu
dChkb2MpCiAgICAgLCBtX2NhcHR1cmluZyhmYWxzZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ+IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gbmV3IFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChkb2N1bWVudCk7Ci19Ci0KIHZvaWQgU2VhcmNoRmllbGRD
YW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChtX2NhcHR1cmluZykgewpA
QCAtMjA3LDcxICsxNzQsNjAgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6
OmRldGFjaCgpCiB9CiAKIAotdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQordm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKIHsKICAgICAvLyBJ
ZiB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLCBvbiBtb3VzZXVwLCBjbGVhciB0aGUgdmFsdWUsIGFu
ZCBzZXQgc2VsZWN0aW9uCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwotICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+aXNNb3Vz
ZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0g
TGVmdEJ1dHRvbikgewotICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT52aXNp
YmxlVG9IaXRUZXN0aW5nKCkpIHsKKyAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlZG93bkV2ZW50ICYmIGV2dC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91
c2VFdmVudCo+KGV2dCktPmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKKyAgICAgICAgaW5wdXQt
PmZvY3VzKCk7CisgICAgICAgIGlucHV0LT5zZWxlY3QoKTsKKyAgICAgICAgZXZ0LT5zZXREZWZh
dWx0SGFuZGxlZCgpOworICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT52aXNp
YmxlVG9IaXRUZXN0aW5nKCkpCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQoKS0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKHRoaXMpOwogICAgICAgICAgICAgICAgIG1fY2Fw
dHVyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpbnB1dC0+
Zm9jdXMoKTsKLSAgICAgICAgaW5wdXQtPnNlbGVjdCgpOwotICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNldXBFdmVudCAmJiBldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8
TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgeworICAgIH0gZWxz
ZSBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBldnQtPmlz
TW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldnQpLT5idXR0b24oKSA9
PSBMZWZ0QnV0dG9uKSB7CiAgICAgICAgIGlmIChtX2NhcHR1cmluZyAmJiByZW5kZXJlcigpICYm
IHJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3RpbmcoKSkgewotICAgICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKLSAgICAg
ICAgICAgICAgICBtX2NhcHR1cmluZyA9IGZhbHNlOwotICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGhvdmVyZWQoKSkgewogICAgICAgICAgICAgICAgIGlucHV0LT5zZXRWYWx1ZSgiIik7
CiAgICAgICAgICAgICAgICAgaW5wdXQtPm9uU2VhcmNoKCk7Ci0gICAgICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0
SGFuZGxlZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKKyAgICAgICAgICAgICAgICBt
X2NhcHR1cmluZyA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCi0g
ICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKLSAgICAgICAgSFRNTERpdkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworICAgIGlmICghZXZ0LT5kZWZhdWx0SGFuZGxl
ZCgpKQorICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQpOwog
fQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBTcGluQnV0dG9u
RWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQoTm9kZSogc2hhZG93UGFyZW50KQotICAgIDogVGV4
dENvbnRyb2xJbm5lckVsZW1lbnQoc2hhZG93UGFyZW50LT5kb2N1bWVudCgpLCBzaGFkb3dQYXJl
bnQpCitTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvYywg
Tm9kZSogc2hhZG93UGFyZW50KQorICAgIDogVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9jLCBz
aGFkb3dQYXJlbnQpCiAgICAgLCBtX2NhcHR1cmluZyhmYWxzZSkKICAgICAsIG1fb25VcEJ1dHRv
bihmYWxzZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxTcGluQnV0dG9uRWxlbWVudD4gU3BpbkJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCit2b2lkIFNwaW5CdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBT
cGluQnV0dG9uRWxlbWVudChzaGFkb3dQYXJlbnQpOwotfQotCi12b2lkIFNwaW5CdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoIWV2ZW50
LT5pc01vdXNlRXZlbnQoKSkgewotICAgICAgICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgp
KQotICAgICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OworICAgIGlmICghZXZ0LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBpZiAoIWV2dC0+ZGVm
YXVsdEhhbmRsZWQoKSkKKyAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBNb3VzZUV2ZW50KiBt
b3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICBpZiAobW91
c2VFdmVudC0+YnV0dG9uKCkgIT0gTGVmdEJ1dHRvbikgewotICAgICAgICBpZiAoIWV2ZW50LT5k
ZWZhdWx0SGFuZGxlZCgpKQotICAgICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOworICAgIGNvbnN0IE1vdXNlRXZlbnQqIG1ldnQgPSBzdGF0aWNfY2Fz
dDxNb3VzZUV2ZW50Kj4oZXZ0KTsKKyAgICBpZiAobWV2dC0+YnV0dG9uKCkgIT0gTGVmdEJ1dHRv
bikgeworICAgICAgICBpZiAoIWV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAgICAgICAgICAgIEhU
TUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2dCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAgSW50UG9pbnQgbG9jYWwg
PSByb3VuZGVkSW50UG9pbnQocmVuZGVyQm94KCktPmFic29sdXRlVG9Mb2NhbChtb3VzZUV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlLCB0cnVlKSk7Ci0gICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICBJbnRQb2ludCBsb2NhbCA9IHJv
dW5kZWRJbnRQb2ludChyZW5kZXJCb3goKS0+YWJzb2x1dGVUb0xvY2FsKG1ldnQtPmFic29sdXRl
TG9jYXRpb24oKSwgZmFsc2UsIHRydWUpKTsKKyAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgaWYgKHJlbmRlckJveCgpLT5ib3JkZXJCb3hS
ZWN0KCkuY29udGFpbnMobG9jYWwpKSB7CiAgICAgICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAg
ICAgICAgICAgIGlucHV0LT5zZWxlY3QoKTsKQEAgLTI3OSw5ICsyMzUsOSBAQCB2b2lkIFNwaW5C
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAg
ICAgICAgICBpbnB1dC0+c3RlcFVwRnJvbVJlbmRlcmVyKDEpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGlucHV0LT5zdGVwVXBGcm9tUmVuZGVyZXIoLTEpOwotICAgICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICBldnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KSB7CisgICAgfSBlbHNlIGlmIChldnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHsKICAgICAgICAgaWYgKHJlbmRlckJv
eCgpLT5ib3JkZXJCb3hSZWN0KCkuY29udGFpbnMobG9jYWwpKSB7CiAgICAgICAgICAgICBpZiAo
IW1fY2FwdHVyaW5nKSB7CiAgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKQEAgLTMwMiw5ICsyNTgsOCBAQCB2b2lkIFNwaW5CdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KLQotICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCi0gICAg
ICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKyAgICBpZiAo
IWV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZ0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaAppbmRleCBlZDE4ODdlN2M5YjM0MGE0ZTE4Y2QxODI5YzllZDgwNmFh
ZDQ1MzY0Li5mNTlhYzk2OTQ1NjJjOWVkYjI5NzJhNGJiZWMzN2QwMzA4NGU1MjUyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM0LDc2ICszNCw1NSBAQCBjbGFzcyBTdHJpbmc7CiAKIGNsYXNzIFRleHRDb250cm9sSW5uZXJF
bGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gY3JlYXRlKE5vZGUqIHNoYWRvd1BhcmVu
dCk7Ci0KLSAgICB2b2lkIGF0dGFjaElubmVyRWxlbWVudChOb2RlKiwgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4sIFJlbmRlckFyZW5hKik7Ci0KLXByb3RlY3RlZDoKICAgICBUZXh0Q29udHJvbElu
bmVyRWxlbWVudChEb2N1bWVudCosIE5vZGUqIHNoYWRvd1BhcmVudCA9IDApOwotCi1wcml2YXRl
OgorICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0gCiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93Tm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZG93UGFyZW50OyB9CiAgICAgdmlydHVhbCBOb2RlKiBzaGFkb3dQYXJlbnROb2Rl
KCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0KICAgICB2b2lkIHNldFNoYWRvd1BhcmVudE5v
ZGUoTm9kZSogbm9kZSkgeyBtX3NoYWRvd1BhcmVudCA9IG5vZGU7IH0KLQorICAgIHZvaWQgYXR0
YWNoSW5uZXJFbGVtZW50KE5vZGUqLCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiwgUmVuZGVyQXJl
bmEqKTsKKyAgICAKK3ByaXZhdGU6CiAgICAgTm9kZSogbV9zaGFkb3dQYXJlbnQ7CiB9OwogCiBj
bGFzcyBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQgOiBwdWJsaWMgVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTm9kZSogc2hhZG93UGFyZW50KTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0KLXByaXZhdGU6
CiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50KiwgTm9kZSogc2hhZG93
UGFyZW50KTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOyAgCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKIH07CiAKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1l
bnQgOiBwdWJsaWMgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1
bWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
LQotcHJpdmF0ZToKICAgICBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KERvY3VtZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIH07CiAK
IGNsYXNzIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBUZXh0Q29udHJv
bElubmVyRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VhcmNoRmll
bGRDYW5jZWxCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0KLXByaXZhdGU6CiAgICAgU2VhcmNo
RmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50Kik7Ci0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
LQorcHJpdmF0ZToKICAgICBib29sIG1fY2FwdHVyaW5nOwogfTsKIAogY2xhc3MgU3BpbkJ1dHRv
bkVsZW1lbnQgOiBwdWJsaWMgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoTm9kZSopOwotCi0g
ICAgLy8gRklYTUU6ICJTcGluIGJ1dHRvbiBvbiB1cCBidXR0b24iIGlzIG5vdCBhIHBocmFzZSB3
aXRoIGEgc2luZ2xlIGNsZWFyIG1lYW5pbmcuCi0gICAgLy8gTmVlZCBhIG5hbWUgZm9yIHRoaXMg
dGhhdCBtYWtlcyBpdCBjbGVhcmVyLgotICAgIGJvb2wgb25VcEJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb25VcEJ1dHRvbjsgfQotCi1wcml2YXRlOgotICAgIFNwaW5CdXR0b25FbGVtZW50KE5v
ZGUqKTsKLQorICAgIFNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50KiwgTm9kZSopOwogICAgIHZp
cnR1YWwgYm9vbCBpc1NwaW5CdXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSktPmlzRW5hYmxlZEZvcm1Db250cm9s
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCisg
ICAgYm9vbCBvblVwQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9vblVwQnV0dG9uOyB9CisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3BpbkJ1dHRvbk5vZGVOYW1lKCk7CisKK3ByaXZh
dGU6CiAgICAgYm9vbCBtX2NhcHR1cmluZzsKICAgICBib29sIG1fb25VcEJ1dHRvbjsKIH07CiAK
LX0gLy8gbmFtZXNwYWNlCit9IC8vbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3ZDg4ZmVkZjIy
MWZmMWFjYTllOTBlYzQ2NTczMjgzYzU4Y2RiNWNlLi5kMDg4MjVlMjFhZjUwYmVmZmQ5NWUyNDhh
NzYyMWJjNzdhYmU5M2YwIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA1LTMwICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByNjA0MTguCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzYwNDE4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTkzNworCisgICAgICAgICJCcm9rZSB0aGUgQXBwbGUgV2luZG93cywgUXQsIGFuZCBD
aHJvbWl1bSBidWlsZCBib3RzIgorICAgICAgICAoUmVxdWVzdGVkIGJ5IGR5ZHggb24gI3dlYmtp
dCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGVsZW1lbnRXaXRoTmFtZTppbkZvcm06XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjb250cm9sc0luRm9ybTpdKToKKwogMjAx
MC0wNS0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IDUxZmQ1YmFjODFmZTgxY2Y1NzRkMTIwNmM1YTIyMTM0NWJmZjY5YTQuLjI2
ODQwMDQ3NTRhNmY2NmQxNTQyNzZhNDI1MDEyOWYyZjI5NTM0NzggMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjgyLDExICsyODIsMTEgQEAgc3Rh
dGljIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnRGcm9tRE9NRWxlbWVudChET01FbGVtZW50
ICplbGVtZW50KQogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVu
dEZyb21ET01FbGVtZW50KGZvcm0pOwogICAgIGlmICghZm9ybUVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPiYgZWxl
bWVudHMgPSBmb3JtRWxlbWVudC0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CisgICAgVmVjdG9yPEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqPiYgZWxlbWVudHMgPSBmb3JtRWxlbWVudC0+Zm9ybUVsZW1l
bnRzOwogICAgIEF0b21pY1N0cmluZyB0YXJnZXROYW1lID0gbmFtZTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZWxlbWVudHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudCogZWx0ID0gZWxlbWVudHNbaV07Ci0gICAgICAgIGlmIChlbHQtPm5hbWUo
KSA9PSB0YXJnZXROYW1lKQorICAgICAgICBpZiAoZWx0LT5mb3JtQ29udHJvbE5hbWUoKSA9PSB0
YXJnZXROYW1lKQogICAgICAgICAgICAgcmV0dXJuIGtpdChlbHQpOwogICAgIH0KICAgICByZXR1
cm4gbmlsOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnRGcm9tRE9NRWxlbWVudChET01FbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghZm9y
bUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3Vs
dHMgPSBuaWw7Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPiYgZWxl
bWVudHMgPSBmb3JtRWxlbWVudC0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CisgICAgVmVjdG9yPEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqPiYgZWxlbWVudHMgPSBmb3JtRWxlbWVudC0+Zm9ybUVsZW1l
bnRzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50cy5zaXplKCk7IGkrKykg
ewogICAgICAgICBpZiAoZWxlbWVudHNbaV0tPmlzRW51bWVyYXRhYmxlKCkpIHsgLy8gU2tpcCBv
cHRpb24gZWxlbWVudHMsIG90aGVyIGR1ZHMKICAgICAgICAgICAgIERPTUVsZW1lbnQqIGRlID0g
a2l0KGVsZW1lbnRzW2ldKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>