<?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>102114</bug_id>
          
          <creation_ts>2012-11-13 11:54:23 -0800</creation_ts>
          <short_desc>Rename NATIVE_TYPE_ERR to TypeError</short_desc>
          <delta_ts>2012-11-14 12:23:19 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>91679</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765883</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 11:54:23 -0800</bug_when>
    <thetext>Rename NATIVE_TYPE_ERR to TypeError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765902</commentid>
    <comment_count>1</comment_count>
      <attachid>173945</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 12:03:45 -0800</bug_when>
    <thetext>Created attachment 173945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765905</commentid>
    <comment_count>2</comment_count>
      <attachid>173945</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 12:07:06 -0800</bug_when>
    <thetext>Comment on attachment 173945
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=173945&amp;action=review

&gt; Source/WebCore/bindings/v8/V8ThrowException.h:32
&gt; +enum V8ErrorType {

Prefixing &quot;ErrorType&quot; itself is not strictly necessary, but there seems to be precedent for prefix consistency between enum and members.

&gt; Source/WebCore/dom/Element.cpp:-1523
&gt; -        ec = NATIVE_TYPE_ERR;

These need to be switched to TYPE_MISMATCH_ERR in another patch. Uploading here for now to exercise build bots.

&gt; Source/WebCore/dom/Element.cpp:-1565
&gt; -        ec = NATIVE_TYPE_ERR;

Ditto.

&gt; Source/WebCore/dom/ExceptionCode.h:68
&gt; +        // WebIDL exception types, handled by the binding layer.

I don&apos;t know if we should add all of these now given that they&apos;re unused/untested. But I wanted to see if the build bots are happy with these names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765907</commentid>
    <comment_count>3</comment_count>
      <attachid>173945</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-13 12:07:21 -0800</bug_when>
    <thetext>Comment on attachment 173945
Patch

LGTM... I would r+ if I was a reviewere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766002</commentid>
    <comment_count>4</comment_count>
      <attachid>173974</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 13:37:45 -0800</bug_when>
    <thetext>Created attachment 173974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766116</commentid>
    <comment_count>5</comment_count>
      <attachid>173974</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-13 15:40:13 -0800</bug_when>
    <thetext>Comment on attachment 173974
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=173974&amp;action=review

&gt; Source/WebCore/ChangeLog:9
&gt; +        V8 binding code had colliding enum members, which required prefixing.

For consistency I want to make the same change for JSC too. SyntaxError -&gt; jsSyntaxError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766125</commentid>
    <comment_count>6</comment_count>
      <attachid>173974</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 15:44:17 -0800</bug_when>
    <thetext>Comment on attachment 173974
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=173974&amp;action=review

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        V8 binding code had colliding enum members, which required prefixing.
&gt; 
&gt; For consistency I want to make the same change for JSC too. SyntaxError -&gt; jsSyntaxError

I didn&apos;t find a similar enum in the JSC code. Can you point me at what would need updating?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766126</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-13 15:45:56 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I didn&apos;t find a similar enum in the JSC code. Can you point me at what would need updating?

Ah, JSC uses createSyntaxError() etc instead of enums. Sorry, ignore my comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766129</commentid>
    <comment_count>8</comment_count>
      <attachid>173974</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 15:48:17 -0800</bug_when>
    <thetext>Comment on attachment 173974
Patch

Thanks. Going ahead with claiming WebCore::GeneralError, WebCore::RangeError etc. in the ExceptionCode enum, even though the types aren&apos;t handled by binding code yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766230</commentid>
    <comment_count>9</comment_count>
      <attachid>173974</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-13 17:34:37 -0800</bug_when>
    <thetext>Comment on attachment 173974
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=173974&amp;action=review

&gt; Source/WebCore/dom/ExceptionCode.h:75
&gt; +        GeneralError = 100,
&gt; +        EvalError = 101,
&gt; +        RangeError = 102,
&gt; +        ReferenceError = 103,
&gt; +        SyntaxError = 104,
&gt; +        TypeError = 105,
&gt; +        URIError = 106,

I agree that we might want to add these some day, but it seems a little dangerous to add them all now when they are not implemented in the bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767139</commentid>
    <comment_count>10</comment_count>
      <attachid>174215</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 11:47:24 -0800</bug_when>
    <thetext>Created attachment 174215
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767171</commentid>
    <comment_count>11</comment_count>
      <attachid>174215</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 12:23:15 -0800</bug_when>
    <thetext>Comment on attachment 174215
Patch for landing

Clearing flags on attachment: 174215

Committed r134646: &lt;http://trac.webkit.org/changeset/134646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767172</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 12:23:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173945</attachid>
            <date>2012-11-13 12:03:45 -0800</date>
            <delta_ts>2012-11-13 13:37:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102114-20121113120146.patch</filename>
            <type>text/plain</type>
            <size>35582</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM1ZWIxOWM3YTRhMDMy
YzExNjJmYjQ4MjgwYjNmNWZhMTI5M2Q4Yy4uZDgzNWJhYWFlZWNjYjYzMmI3ZTc1MzM0OGI0Nzlj
YTRjNTQyNmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTExLTEzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIE5BVElWRV9U
WVBFX0VSUiB0byBUeXBlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjExNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERlZmluZXMgbmFtZXMgKG1vc3RseSkgbWF0Y2hpbmcgV2ViSURMIGV4Y2Vw
dGlvbiB0eXBlcyBmb3IgdXNlIGJ5IGRvbSAoZXRjKSBjb2RlLgorICAgICAgICBWOCBiaW5kaW5n
IGNvZGUgaGFkIGNvbGxpZGluZyBlbnVtIG1lbWJlcnMsIHdoaWNoIHJlcXVpcmVkIHByZWZpeGlu
Zy4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IGludGVybmFsIHJlbmFtZXMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOiBzL05BVElWRV9UWVBFX0VS
Ui9UeXBlRXJyb3IvZworICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjphZHZhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpzdHJpbmdUb01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1v
ZGVUb1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpzZXRET01FeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOiBQcmVmaXggRXJyb3JUeXBlIGVudW0vbWVtYmVycyB3
LyBWOC92OC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVFeHRlbnNpb246Ok9uU2xlZXBEZXRlY3Rl
ZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHA6IERpdHRvLgorICAgICAg
ICAoX05QTl9TZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEJpbmRpbmcuaDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpucE9i
amVjdEludm9rZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpucE9iamVjdFNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6Om5wT2JqZWN0UHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFRocm93RXhjZXB0aW9uLmNwcDogUmVuYW1lIEFMTCB0aGUgZXJyb3JzIQorICAgICAgICAoV2Vi
Q29yZTo6VjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGhyb3dFeGNlcHRpb246OnRocm93RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhU
aHJvd0V4Y2VwdGlvbjo6dGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhUaHJv
d0V4Y2VwdGlvbjo6dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5oOgorICAgICAgICAoVjhUaHJvd0V4Y2VwdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDog
UHJlZml4aW5nIChjb250aW51ZWQpCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlckN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1
ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0V2ViR0xBcnJheVdpdGhBcnJheUJ1ZmZlckFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0V2ViR0xBcnJh
eUhlbHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3Bw
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpjbGVhckRhdGFDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjphcHBlbmRDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3Rv
bS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxSZXN1bHRTZXRSb3dMaXN0Ojpp
dGVtQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogRklYTUU6IFRoaXMgc2hv
dWxkIG5vdCBiZSB1c2luZyBOQVRJVkVfVFlQRV9FUlIgeWV0IGFueXdheS4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZSk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUu
aDogQWRkIFdlYklETCBleGNlcHRpb24gdHlwZXMuCisKIDIwMTItMTEtMTMgIERpbWl0cmkgR2xh
emtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTM0MzY3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKaW5kZXggYmViMDFjNDYyODJhM2UzZjg5YWQ0NjQxZDUxNGM0NWI4YmU5OTFm
Yy4uMGYzYTYwM2ZiZjJiNDE3YTMzZjZlYzljNzI4NDJhNGRmMTdmNzRmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0xNzAsNyArMTcw
LDcgQEAgdm9pZCBJREJDdXJzb3I6OmFkdmFuY2UobG9uZyBsb25nIGNvdW50LCBFeGNlcHRpb25D
b2RlJiBlYykKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBvbmx5IG5lZWQgdG8gY2hlY2sg
Zm9yIDAgb25jZSB3ZWJraXQub3JnL2IvOTY3OTggbGFuZHMuCiAgICAgaWYgKGNvdW50IDwgMSB8
fCBjb3VudCA+IFVJTlRfTUFYKSB7Ci0gICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOworICAg
ICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzEwLDcg
KzMxMCw3IEBAIElEQkN1cnNvcjo6RGlyZWN0aW9uIElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4oSURCQ3Vyc29yOjpORVhUICsgKGRpcmVjdGlvblN0
cmluZ1swXSAtICcwJykpOwogICAgIH0KIAotICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOworICAg
IGVjID0gVHlwZUVycm9yOwogICAgIHJldHVybiBJREJDdXJzb3I6Ok5FWFQ7CiB9CiAKQEAgLTMz
MCw3ICszMzAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uVG9T
dHJpbmcodW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcAogICAgICAgICByZXR1cm4gSURC
Q3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5pcXVlKCk7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBl
YyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJl
dHVybiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggODQ1MzA1MjFh
YjY1ZDg4OWFmZmVjMDQ1MTFkMTE3MTRmZDhkZjZmOS4uOGVmNmUyNDA1NzQxNDBiOGI3Mjk0ODc5
ZThmYjgyMzBkODk1ODBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIFBhc3NSZWZQdHI8SURCVmVy
c2lvbkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRlCiAgICAgfQogCiAgICAgaWYgKHZlcnNpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgZWMg
PSBOQVRJVkVfVFlQRV9FUlI7CisgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKaW5kZXggZTc4OTEzYmEwNGNiYmM3MzMyMjgzZjA1ZjRiYWFhNTAwMGIzZTBi
ZS4uY2I0ODVmNTA0ZmJiMjZmOTA1MWY0ZmU5NGU4ZjlhMDQ4ZmVlYWUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTExMCw3ICsx
MTAsNyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBvbmx5IG5lZWQgdG8gY2hlY2sgZm9yIDAgb25jZSB3ZWJraXQub3JnL2IvOTY3OTggbGFuZHMu
CiAgICAgY29uc3QgaW50NjRfdCBtYXhFQ01BU2NyaXB0SW50ZWdlciA9IDB4MjAwMDAwMDAwMDAw
MDBMTCAtIDE7CiAgICAgaWYgKHZlcnNpb24gPCAxIHx8IHZlcnNpb24gPiBtYXhFQ01BU2NyaXB0
SW50ZWdlcikgewotICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBU
eXBlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gb3BlbkludGVy
bmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24sIGVjKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBQYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjbwogewogICAgIEFTU0VSVCh2ZXJzaW9uID49IDEgfHwgdmVyc2lv
biA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pOwogICAgIGlmIChuYW1lLmlz
TnVsbCgpKSB7Ci0gICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOworICAgICAgICBlYyA9IFR5
cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghaXNDb250ZXh0VmFs
aWQoY29udGV4dCkpCkBAIC0xNDAsNyArMTQwLDcgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMK
IFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0ZURh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKLSAgICAg
ICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CisgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChjb250ZXh0KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cAppbmRleCA3YjE3NWU2NDEwZWY1ZmFmMGU1NzczYTE5MGZhMzJkODQ4MmY1Mzc5Li45ZWYzNDk1
ZDhlMjRmYTVjMmIxYmY0MTE2YTVlYWRhZDk4M2Y5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zNjcsNyArMzY3
LDcgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwor
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
IChjb250YWluc0luZGV4KG5hbWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNTMxZjJmMDkxNThhMjc1Njk2NWU1
MTNhMzZiNmExMmNkYjY2ZmNmOC4uOWZlMzVjOTQ3YzA0ZTcyNGFmNzUwZmFhNGFhOGM5ZWRhZjdl
MTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcApAQCAtMzU0LDcgKzM1NCw3IEBAIElEQlRyYW5zYWN0aW9uOjpNb2RlIElE
QlRyYW5zYWN0aW9uOjpzdHJpbmdUb01vZGUoY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBTY3Jp
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbjo6TW9kZT4oSURCVHJh
bnNhY3Rpb246OlJFQURfT05MWSArIChtb2RlU3RyaW5nWzBdIC0gJzAnKSk7CiAgICAgfQogCi0g
ICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CisgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgcmV0dXJu
IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk7CiB9CiAKQEAgLTM3NCw3ICszNzQsNyBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcoSURCVHJhbnNhY3Rp
b246Ok1vZGUgbW9kZSwgRXhjZQogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBkNzZlMGUxZGMw
OTk3MzM4NTEyNjZlODE1Nzc3ODdjYmU0NWQ0ZjhhLi4zMGVjY2VjODlhMGQwNDI1ZGYwMjA3YmYw
NmVjNGY1YmRiMzExMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAKQEAgLTE4Niw3ICsxODYsOCBAQCB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEV4Y2VwdGlvbkNvZGUgZWMpCiAgICAgaWYgKCFlYyB8fCBleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVjID09IE5BVElWRV9UWVBFX0VS
UikgeworICAgIC8vIEZJWE1FOiBIYW5kbGUgb3RoZXIgV2ViSURMIGV4Y2VwdGlvbiB0eXBlcy4K
KyAgICBpZiAoZWMgPT0gVHlwZUVycm9yKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
YXRlRXh0ZW5zaW9uLmNwcAppbmRleCAxMWEzYjA5YzA1YzI2ZWY2N2NiZGRiZDJjMWE0ZTllNGZi
YzlmMzA3Li5kY2U1ODNhNTY1MmQ5NjliNmUzMzRjMDc4NjQ2Y2ZiMzhmNzYxMTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcApAQCAtMTE4LDcgKzEx
OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBEYXRlRXh0ZW5zaW9uOjpTZXR1cChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gRGF0ZUV4dGVuc2lv
bjo6T25TbGVlcERldGVjdGVkKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgcmV0
dXJuIHRocm93RXJyb3IoR2VuZXJhbEVycm9yLCAiVG9vIG11Y2ggdGltZSBzcGVudCBpbiB1bmxv
YWQgaGFuZGxlci4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRocm93RXJyb3Io
djhHZW5lcmFsRXJyb3IsICJUb28gbXVjaCB0aW1lIHNwZW50IGluIHVubG9hZCBoYW5kbGVyLiIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggMmYyNzNlMTJjNTIyNmRi
NzZmNDNiYzYzM2UwN2Y0MTQ1NjEwNTE5OC4uZTk0MWU2MzFmOWEwMTQwNjAxNjY0OTFkYWZkOWQ2
MDMxYTE2MTg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAK
QEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIF9OUE5fU2V0RXhjZXB0aW9uKE5QT2JqZWN0KiBucE9i
amVjdCwgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogICAgIGlmICghbnBPYmplY3QgfHwgbnBPYmpl
Y3QtPl9jbGFzcyAhPSBucFNjcmlwdE9iamVjdENsYXNzKSB7CiAgICAgICAgIC8vIFdlIHdvbid0
IGJlIGFibGUgdG8gZmluZCBhIHByb3BlciBzY29wZSBmb3IgdGhpcyBleGNlcHRpb24sIHNvIGp1
c3QgdGhyb3cgaXQuCiAgICAgICAgIC8vIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIEpTQywgd2hp
Y2ggdGhyb3dzIGEgZ2xvYmFsIGV4Y2VwdGlvbiBhbGwgdGhlIHRpbWUuCi0gICAgICAgIHRocm93
RXJyb3IoR2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKKyAgICAgICAgdGhyb3dFcnJvcih2OEdlbmVy
YWxFcnJvciwgbWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgX05QTl9TZXRFeGNl
cHRpb24oTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBOUFVURjggKm1lc3NhZ2UpCiAgICAgdjg6
OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOwogICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhj
ZXB0aW9uQ2F0Y2hlcjsKIAotICAgIHRocm93RXJyb3IoR2VuZXJhbEVycm9yLCBtZXNzYWdlKTsK
KyAgICB0aHJvd0Vycm9yKHY4R2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKIH0KIAogYm9vbCBfTlBO
X0VudW1lcmF0ZShOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QsIE5QSWRlbnRpZmllcioqIGlk
ZW50aWZpZXIsIHVpbnQzMl90KiBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwCmluZGV4IGJhMzE3MzNmNmNiNWE4ODIwZjc1ZTdkMTNjNDI4OWFlYjBjZWU1NjQu
LmU1MGQ0NjRmMDUwODRiMzA0YTAwNzEyOTkzMDc4MDlkYjEyNjBjNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCBleGNlcHRpb25Db2RlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKICAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9u
KGV4Y2VwdGlvbkNvZGUsIGlzb2xhdGUpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhy
b3dFcnJvcihFcnJvclR5cGUgZXJyb3JUeXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0aHJvd0Vycm9yKFY4RXJyb3JU
eXBlIGVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7CiAgICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRpb246OnRocm93RXJyb3IoZXJyb3JUeXBlLCBt
ZXNzYWdlLCBpc29sYXRlKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCBib29sIGhhbmRsZU91dE9m
TWVtb3J5KCkKIAogdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlTWF4UmVjdXJzaW9uRGVwdGhF
eGNlZWRlZCgpCiB7Ci0gICAgdGhyb3dFcnJvcihSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0
YWNrIHNpemUgZXhjZWVkZWQuIik7CisgICAgdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsICJNYXhp
bXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpWYWx1ZT4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRl
eCAzOGI5ZTMyOWIxYzc3YTI1MzUyOGM3N2EwNDM0ZmU4YmQ1ZjcyZmNkLi5kOWUzNzY4OTNjZDEy
NjJhZTJhZWE4NTU4ZGQ0ODE4NDk3MDc5ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuaApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHNldERPTUV4Y2VwdGlvbihpbnQsIHY4OjpJc29sYXRlKik7CiAK
ICAgICAvLyBTY2hlZHVsZSBhIEphdmFTY3JpcHQgZXJyb3IgdG8gYmUgdGhyb3duLgotICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0aHJvd0Vycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciosIHY4
OjpJc29sYXRlKiA9IDApOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0aHJvd0Vycm9yKFY4
RXJyb3JUeXBlLCBjb25zdCBjaGFyKiwgdjg6Oklzb2xhdGUqID0gMCk7CiAKICAgICAvLyBTY2hl
ZHVsZSBhIEphdmFTY3JpcHQgZXJyb3IgdG8gYmUgdGhyb3duLgogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0aHJvd0Vycm9yKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSogPSAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggMTlhYmQ5
ZTcwZjFiYmI0ODhkNzE5M2Q3NWRlYWUyYmZhZTFiNTdkMy4uYjVhMjFjMGU4YzkyZDg3NjY4ODZm
YzEyZDMxNTU2NjJiY2EzYzE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHAKQEAgLTg5LDE0ICs4OSwxNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG5wT2JqZWN0SW52b2tlSW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBJbnZvawogICAg
ICAgICAvLyBUaGUgaG9sZGVyIG9iamVjdCBpcyBub3QgYSBzdWJ0eXBlIG9mIEhUTUxQbHVnSW5F
bGVtZW50LCBpdCBtdXN0IGJlIGFuIE5QT2JqZWN0IHdoaWNoIGhhcyB0aHJlZQogICAgICAgICAv
LyBpbnRlcm5hbCBmaWVsZHMuCiAgICAgICAgIGlmIChhcmdzLkhvbGRlcigpLT5JbnRlcm5hbEZp
ZWxkQ291bnQoKSAhPSBucE9iamVjdEludGVybmFsRmllbGRDb3VudCkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFJlZmVyZW5jZUVycm9yLCAiTlBNZXRob2QgY2FsbGVkIG9uIG5vbi1O
UE9iamVjdCIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE1ldGhvZCBjYWxsZWQgb24gbm9uLU5QT2JqZWN0Iiwg
YXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgICAgIG5wT2JqZWN0ID0gdjhPYmplY3RUb05QT2Jq
ZWN0KGFyZ3MuSG9sZGVyKCkpOwogICAgIH0KIAogICAgIC8vIFZlcmlmeSB0aGF0IG91ciB3cmFw
cGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRl
ZC4KICAgICBpZiAoIW5wT2JqZWN0IHx8ICFfTlBOX0lzQWxpdmUobnBPYmplY3QpKQotICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmVmZXJlbmNl
RXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgLy8g
V3JhcCB1cCBwYXJhbWV0ZXJzLgogICAgIGludCBudW1BcmdzID0gYXJncy5MZW5ndGgoKTsKQEAg
LTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0SW52
b2tlSW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBJbnZvawogICAgIH0KIAogICAgIGlm
ICghcmV0dmFsKQotICAgICAgICB0aHJvd0Vycm9yKEdlbmVyYWxFcnJvciwgIkVycm9yIGNhbGxp
bmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgdGhy
b3dFcnJvcih2OEdlbmVyYWxFcnJvciwgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0
LiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXJn
czsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJm5wQXJnc1tpXSk7CkBA
IC0yMDksMTIgKzIwOSwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0
R2V0UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5QSQogICAgIC8vIFZlcmlm
eSB0aGF0IG91ciB3cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdoaWNoCiAgICAgLy8g
aGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3QgfHwgIV9OUE5fSXNB
bGl2ZShucE9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJlZmVyZW5jZUVycm9y
LCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOwogCiAKICAg
ICBpZiAobnBPYmplY3QtPl9jbGFzcy0+aGFzUHJvcGVydHkgJiYgbnBPYmplY3QtPl9jbGFzcy0+
Z2V0UHJvcGVydHkgJiYgbnBPYmplY3QtPl9jbGFzcy0+aGFzUHJvcGVydHkobnBPYmplY3QsIGlk
ZW50aWZpZXIpKSB7CiAgICAgICAgIGlmICghX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRl
ZCIsIGlzb2xhdGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSZWZlcmVuY2VF
cnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKIAogICAgICAgICBOUFZhcmlhbnQg
cmVzdWx0OwogICAgICAgICBWT0lEX1RPX05QVkFSSUFOVChyZXN1bHQpOwpAQCAtMjMwLDExICsy
MzAsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEdldFByb3BlcnR5
KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKICAgICB9CiAKICAgICBpZiAoIV9OUE5f
SXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJlZmVyZW5jZUVy
cm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOwogCiAg
ICAgaWYgKGtleS0+SXNTdHJpbmcoKSAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2QgJiYg
bnBPYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewogICAg
ICAgICBpZiAoIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBk
ZWxldGVkIiwgaXNvbGF0ZSk7CiAKICAgICAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkID0gc3Rh
dGljX2Nhc3Q8UHJpdmF0ZUlkZW50aWZpZXIqPihpZGVudGlmaWVyKTsKICAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBWOE5QVGVt
cGxhdGVNYXA6OnNoYXJlZEluc3RhbmNlKCkuZ2V0KGlkKTsKQEAgLTI5MiwxMyArMjkyLDEzIEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RTZXRQcm9wZXJ0eSh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAKICAgICAvLyBWZXJpZnkgdGhhdCBvdXIgd3JhcHBl
ciB3YXNuJ3QgdXNpbmcgYSBOUE9iamVjdCB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQu
CiAgICAgaWYgKCFucE9iamVjdCB8fCAhX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkgewotICAgICAg
ICB0aHJvd0Vycm9yKFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUp
OworICAgICAgICB0aHJvd0Vycm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVk
IiwgaXNvbGF0ZSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsgIC8vIEludGVyY2VwdGVkLCBidXQg
YW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uCiAgICAgfQogCiAgICAgaWYgKG5wT2JqZWN0LT5fY2xh
c3MtPmhhc1Byb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5ICYmIG5wT2Jq
ZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5KG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewogICAgICAg
ICBpZiAoIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxl
dGVkIiwgaXNvbGF0ZSk7CiAKICAgICAgICAgTlBWYXJpYW50IG5wVmFsdWU7CiAgICAgICAgIFZP
SURfVE9fTlBWQVJJQU5UKG5wVmFsdWUpOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHY4OjpIYW5kbGU8
djg6OkFycmF5PiBucE9iamVjdFByb3BlcnR5RW51bWVyYXRvcihjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvLCBiCiAgICAgLy8gVmVyaWZ5IHRoYXQgb3VyIHdyYXBwZXIgd2Fzbid0IHVzaW5n
IGEgTlBPYmplY3Qgd2hpY2gKICAgICAvLyBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQuCiAgICAg
aWYgKCFucE9iamVjdCB8fCAhX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKLSAgICAgICAgdGhyb3dF
cnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpbmZvLkdldElzb2xhdGUo
KSk7CisgICAgICAgIHRocm93RXJyb3IodjhSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0
ZWQiLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICBpZiAoTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJ
T05fSEFTX0VOVU0obnBPYmplY3QtPl9jbGFzcykgJiYgbnBPYmplY3QtPl9jbGFzcy0+ZW51bWVy
YXRlKSB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmNwcAppbmRleCBmMGFkYzAxMmY2NGVjMzc2NDY5ZWRl
MzRhZWQ5ZmY4OTliYmIxZjc5Li4wYzE1NmUzNWE4ZmFjMTM4NDExNGVkMjBlODUyOWYwNWRjZjdm
ZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9u
LmNwcApAQCAtNTMsNyArNTMsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2Vw
dGlvbjo6c2V0RE9NRXhjZXB0aW9uKGludCBlYywgdjg6Oklzb2xhdGUqIGlzbwogICAgIGlmIChl
YyA8PSAwIHx8IHY4OjpWODo6SXNFeGVjdXRpb25UZXJtaW5hdGluZygpKQogICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIAotICAgIGlmIChlYyA9PSBOQVRJVkVfVFlQRV9FUlIpCisgICAg
Ly8gRklYTUU6IEhhbmRsZSBvdGhlciBXZWJJREwgZXhjZXB0aW9uIHR5cGVzLgorICAgIGlmIChl
YyA9PSBUeXBlRXJyb3IpCiAgICAgICAgIHJldHVybiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd1R5
cGVFcnJvcigwLCBpc29sYXRlKTsKIAogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbihlYyk7CkBAIC03NywxOCArNzgsMTggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJc29sYXRlKiBpc28K
IAogI3VuZGVmIFRSWV9UT19DUkVBVEVfRVhDRVBUSU9OCiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd0Vycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFy
KiBtZXNzYWdlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFRocm93RXhjZXB0aW9uOjp0aHJvd0Vycm9yKFY4RXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIGNhc2UgUmFuZ2VFcnJvcjoKKyAgICBjYXNlIHY4UmFuZ2VFcnJvcjoKICAgICAgICAgcmV0
dXJuIHY4OjpUaHJvd0V4Y2VwdGlvbih2ODo6RXhjZXB0aW9uOjpSYW5nZUVycm9yKHY4U3RyaW5n
KG1lc3NhZ2UsIGlzb2xhdGUpKSk7Ci0gICAgY2FzZSBSZWZlcmVuY2VFcnJvcjoKKyAgICBjYXNl
IHY4UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNlcHRpb24odjg6
OkV4Y2VwdGlvbjo6UmVmZXJlbmNlRXJyb3IodjhTdHJpbmcobWVzc2FnZSwgaXNvbGF0ZSkpKTsK
LSAgICBjYXNlIFN5bnRheEVycm9yOgorICAgIGNhc2UgdjhTeW50YXhFcnJvcjoKICAgICAgICAg
cmV0dXJuIHY4OjpUaHJvd0V4Y2VwdGlvbih2ODo6RXhjZXB0aW9uOjpTeW50YXhFcnJvcih2OFN0
cmluZyhtZXNzYWdlLCBpc29sYXRlKSkpOwotICAgIGNhc2UgVHlwZUVycm9yOgorICAgIGNhc2Ug
djhUeXBlRXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNlcHRpb24odjg6OkV4Y2Vw
dGlvbjo6VHlwZUVycm9yKHY4U3RyaW5nKG1lc3NhZ2UsIGlzb2xhdGUpKSk7Ci0gICAgY2FzZSBH
ZW5lcmFsRXJyb3I6CisgICAgY2FzZSB2OEdlbmVyYWxFcnJvcjoKICAgICAgICAgcmV0dXJuIHY4
OjpUaHJvd0V4Y2VwdGlvbih2ODo6RXhjZXB0aW9uOjpFcnJvcih2OFN0cmluZyhtZXNzYWdlLCBp
c29sYXRlKSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtOTgsMTIgKzk5LDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9u
Ojp0aHJvd0Vycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtCiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd1R5cGVFcnJvcihjb25zdCBjaGFyKiBt
ZXNzYWdlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gVjhUaHJvd0V4Y2Vw
dGlvbjo6dGhyb3dFcnJvcihUeXBlRXJyb3IsIChtZXNzYWdlID8gbWVzc2FnZSA6ICJUeXBlIGVy
cm9yIiksIGlzb2xhdGUpOworICAgIHJldHVybiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd0Vycm9y
KHY4VHlwZUVycm9yLCAobWVzc2FnZSA/IG1lc3NhZ2UgOiAiVHlwZSBlcnJvciIpLCBpc29sYXRl
KTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGhyb3dFeGNlcHRpb246OnRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3Iodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJu
IFY4VGhyb3dFeGNlcHRpb246OnRocm93RXJyb3IoVHlwZUVycm9yLCAiTm90IGVub3VnaCBhcmd1
bWVudHMiLCBpc29sYXRlKTsKKyAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dFcnJv
cih2OFR5cGVFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgaXNvbGF0ZSk7CiB9CiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd0Vycm9yKHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IGV4Y2VwdGlvbiwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmgKaW5kZXggNGY1M2QyMjgyMjcz
OTg4MDI3ZGY1MDFmM2U0NTZhN2E5ZGNlZGI1OC4uMmY0NmFmYTI4YzM0NDc3MDJhOTU2ZDA5OTE3
ZjBmYjBmNDI2N2EyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhU
aHJvd0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dF
eGNlcHRpb24uaApAQCAtMjksMTkgKzI5LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ZW51bSBFcnJvclR5cGUgewotICAgIFJhbmdlRXJyb3IsCi0gICAgUmVmZXJlbmNlRXJyb3IsCi0g
ICAgU3ludGF4RXJyb3IsCi0gICAgVHlwZUVycm9yLAotICAgIEdlbmVyYWxFcnJvcgorZW51bSBW
OEVycm9yVHlwZSB7CisgICAgdjhSYW5nZUVycm9yLAorICAgIHY4UmVmZXJlbmNlRXJyb3IsCisg
ICAgdjhTeW50YXhFcnJvciwKKyAgICB2OFR5cGVFcnJvciwKKyAgICB2OEdlbmVyYWxFcnJvcgog
fTsKIAogY2xhc3MgVjhUaHJvd0V4Y2VwdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzZXRET01FeGNlcHRpb24oaW50LCB2ODo6SXNvbGF0ZSopOwogCi0g
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0aHJvd0Vycm9yKEVycm9yVHlwZSwgY29u
c3QgY2hhciosIHY4OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdGhyb3dFcnJvcihWOEVycm9yVHlwZSwgY29uc3QgY2hhciosIHY4OjpJc29sYXRlKiA9
IDApOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcih2ODo6TG9j
YWw8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqID0gMCk7CiAKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRocm93VHlwZUVycm9yKGNvbnN0IGNoYXIqID0gMCwgdjg6Oklzb2xhdGUq
ID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCAxNWM1ZTkwMGJmNWU0ZjZhNzk5YzkyZmJj
Mjg4NWEyMTYxM2FjZWYwLi45NDNjMDY0YzkwNzg2NWJlY2Y1NDcwNDg0NmYyMGE2ZTkyZWFhNzM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBTY3JpcHRWYWx1ZSBX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBjb25zdCBTdAogICAgICAgICBzdGF0ZS0+bGluZU51bWJlciA9IG1lc3NhZ2UtPkdldExpbmVO
dW1iZXIoKTsKICAgICAgICAgc3RhdGUtPnNvdXJjZVVSTCA9IHRvV2ViQ29yZVN0cmluZyhtZXNz
YWdlLT5HZXRTY3JpcHRSZXNvdXJjZU5hbWUoKSk7CiAgICAgICAgIGlmIChtX3dvcmtlckNvbnRl
eHQtPnNhbml0aXplU2NyaXB0RXJyb3Ioc3RhdGUtPmVycm9yTWVzc2FnZSwgc3RhdGUtPmxpbmVO
dW1iZXIsIHN0YXRlLT5zb3VyY2VVUkwpKQotICAgICAgICAgICAgc3RhdGUtPmV4Y2VwdGlvbiA9
IHRocm93RXJyb3IoR2VuZXJhbEVycm9yLCBzdGF0ZS0+ZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgc3RhdGUtPmV4Y2VwdGlvbiA9IHRocm93RXJyb3IodjhHZW5lcmFs
RXJyb3IsIHN0YXRlLT5lcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHN0YXRlLT5leGNlcHRpb24gPSBTY3JpcHRWYWx1ZShleGNlcHRpb25DYXRj
aGVyLkV4Y2VwdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCmluZGV4IGZiMDBhMWFkNzllNDZm
MDczMmI4MWZjOTkxYjAyNzUxZGJiYzQ1Y2IuLjg3YzI1NjU1ZmNkNzQzM2QzZDMyODNiYzY3N2Zh
ZDYwODZiMDlmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXIKICAgICBpZiAobGVuZ3RoID49IDApCiAgICAgICAgIGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCksIDEpOwog
ICAgIGlmICghYnVmZmVyLmdldCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihSYW5nZUVy
cm9yLCAiQXJyYXlCdWZmZXIgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50
ZWdlci4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4
UmFuZ2VFcnJvciwgIkFycmF5QnVmZmVyIHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0
aXZlIGludGVnZXIuIiwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIGJ1ZmZlci0+c2V0RGVhbGxv
Y2F0aW9uT2JzZXJ2ZXIoVjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5j
ZSgpKTsKICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnko
YnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8g
YSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAppbmRl
eCA0YTcxZGZmZDQ2MjVmMDU2ODdlYzc4ZDAwOTI2MGIzZTgwZGQ2NGU4Li4yZjA5Y2Q0ZGExNmIw
NjFkYWMzODBkMjVjODQ3ODE2NDFmMTNlYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaApAQCAt
ODMsMTYgKzgzLDE2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFycmF5
V2l0aEFycmF5QnVmZmVyQXJndW1lbnQoY29uc3Qgdjg6OkFyZ3VtCiAgICAgICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoIkNvdWxkIG5vdCBjb252ZXJ0IGFyZ3VtZW50IDIgdG8gYSBudW1i
ZXIiLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKChidWYt
PmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgJSBzaXplb2YoRWxlbWVudFR5cGUpKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIkFycmF5QnVmZmVyIGxlbmd0aCBtaW51
cyB0aGUgYnl0ZU9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgZWxlbWVudCBzaXplLiIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFu
Z2VFcnJvciwgIkFycmF5QnVmZmVyIGxlbmd0aCBtaW51cyB0aGUgYnl0ZU9mZnNldCBpcyBub3Qg
YSBtdWx0aXBsZSBvZiB0aGUgZWxlbWVudCBzaXplLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICAgICAgbGVuZ3RoID0gKGJ1Zi0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAvIHNpemVvZihFbGVt
ZW50VHlwZSk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkg
PCAwKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihSYW5nZUVycm9yLCB0b29MYXJnZVNpemUs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSYW5nZUVy
cm9yLCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIFJlZlB0cjxBcnJh
eUNsYXNzPiBhcnJheSA9IEFycmF5Q2xhc3M6OmNyZWF0ZShidWYsIG9mZnNldCwgbGVuZ3RoKTsK
ICAgICBpZiAoIWFycmF5KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihSYW5nZUVycm9yLCB0
b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IodjhSYW5nZUVycm9yLCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAg
IHJldHVybiB3cmFwQXJyYXlCdWZmZXJWaWV3KGFyZ3MsIHR5cGUsIGFycmF5LCBhcnJheVR5cGUs
IGhhc0luZGV4ZXIpOwogfQpAQCAtMTUwLDExICsxNTAsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnN0cnVjdFdlYkdMQXJyYXkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgV3JhcHBl
clR5cGUKICAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gc291cmNlLT5sZW5ndGgoKTsKIAogICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA8IDApCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihSYW5nZUVycm9yLCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFy
Z2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICAgICAgUmVmUHRyPEFycmF5Q2xhc3M+
IGFycmF5ID0gQXJyYXlDbGFzczo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOwogICAgICAg
ICBpZiAoIWFycmF5LmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VF
cnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsIHRvb0xhcmdlU2l6ZSwgYXJncy5HZXRJc29sYXRl
KCkpOwogCiAgICAgICAgIGFycmF5LT5idWZmZXIoKS0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIo
VjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpKTsKICAgICAgICAg
djg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KGFycmF5LT5ieXRl
TGVuZ3RoKCkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25z
dHJ1Y3RXZWJHTEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAg
ICAgfQogCiAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbikgPCAwKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihSYW5nZUVycm9yLCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSYW5nZUVycm9yLCB0b29MYXJnZVNp
emUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIFJlZlB0cjxBcnJheUNsYXNzPiBhcnJheTsK
ICAgICBpZiAoZG9JbnN0YW50aWF0aW9uKSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnN0cnVjdFdlYkdMQXJyYXkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cywgV3JhcHBlclR5cGUKICAgICB9CiAKICAgICBpZiAoIWFycmF5LmdldCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihSYW5nZUVycm9yLCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSYW5nZUVycm9yLCB0b29MYXJnZVNp
emUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmIChkb0luc3RhbnRpYXRpb24pIHsKICAg
ICAgICAgYXJyYXktPmJ1ZmZlcigpLT5zZXREZWFsbG9jYXRpb25PYnNlcnZlcihWOEFycmF5QnVm
ZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXI6Omluc3RhbmNlKCkpOwpAQCAtMjM2LDcgKzIzNiw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRXZWJHTEFycmF5SGVscGVyKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDIpCiAgICAgICAgICAg
ICBvZmZzZXQgPSB0b1VJbnQzMihhcmdzWzFdKTsKICAgICAgICAgaWYgKCFpbXBsLT5zZXQoc3Jj
LCBvZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgb3V0
T2ZSYW5nZUxlbmd0aEFuZE9mZnNldCwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IodjhSYW5nZUVycm9yLCBvdXRPZlJhbmdlTGVuZ3RoQW5kT2Zmc2V0
LCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAg
ICAgfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFdlYkdM
QXJyYXlIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgICAgIG9mZnNl
dCA9IHRvVUludDMyKGFyZ3NbMV0pOwogICAgICAgICB1aW50MzJfdCBsZW5ndGggPSB0b1VJbnQz
MihhcnJheS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpKTsKICAgICAgICAgaWYgKCFp
bXBsLT5jaGVja0luYm91bmREYXRhKG9mZnNldCwgbGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKFJhbmdlRXJyb3IsIG91dE9mUmFuZ2VMZW5ndGhBbmRPZmZzZXQsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJv
ciwgb3V0T2ZSYW5nZUxlbmd0aEFuZE9mZnNldCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAg
ICBib29sIGNvcGllZCA9IGNvcHlFbGVtZW50cyhhcmdzLkhvbGRlcigpLCBhcnJheSwgbGVuZ3Ro
LCBvZmZzZXQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgaWYgKCFjb3BpZWQpIHsKICAg
ICAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRD
dXN0b20uY3BwCmluZGV4IDAxYThjYTdiZGUxNDNmYzgxMjBmZjhlMTExYjRkOGYwMjUwODg3ZjUu
LjBmMmIwMjkzMzVmZTQ2NTdhMDQwMGJiODQyZjhlZGQ2OWEyODg4MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0Nv
bnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgICAg
ICBpZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgICAgIGlmICghYXVkaW9Db250ZXh0LmdldCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoU3ludGF4RXJyb3IsICJhdWRpbyByZXNvdXJjZXMgdW5hdmFp
bGFibGUgZm9yIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3Rpb24iLCBhcmdzLkdldElzb2xhdGUoKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiYXVkaW8gcmVz
b3VyY2VzIHVuYXZhaWxhYmxlIGZvciBBdWRpb0NvbnRleHQgY29uc3RydWN0aW9uIiwgYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENvbnN0cnVjdG9yIGZvciBv
ZmZsaW5lIChyZW5kZXItdGFyZ2V0KSBBdWRpb0NvbnRleHQgd2hpY2ggcmVuZGVycyBpbnRvIGFu
IEF1ZGlvQnVmZmVyLgogICAgICAgICAvLyBuZXcgQXVkaW9Db250ZXh0KGluIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZDaGFubmVscywgaW4gdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgaW4g
ZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC03MSwxNSArNzEsMTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGEKIAogICAgICAgICBpbnQzMl90IG51bWJlck9mQ2hhbm5lbHMgPSB0b0ludDMyKGFyZ3Nb
MF0sIG9rKTsKICAgICAgICAgaWYgKCFvayB8fCBudW1iZXJPZkNoYW5uZWxzIDw9IDAgfHwgbnVt
YmVyT2ZDaGFubmVscyA+IDEwKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU3ludGF4
RXJyb3IsICJJbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4RXJyb3IsICJJbnZhbGlkIG51
bWJlciBvZiBjaGFubmVscyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICBpbnQzMl90
IG51bWJlck9mRnJhbWVzID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CiAgICAgICAgIGlmICghb2sg
fHwgbnVtYmVyT2ZGcmFtZXMgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5
bnRheEVycm9yLCAiSW52YWxpZCBudW1iZXIgb2YgZnJhbWVzIiwgYXJncy5HZXRJc29sYXRlKCkp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgIkludmFsaWQg
bnVtYmVyIG9mIGZyYW1lcyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICBmbG9hdCBz
YW1wbGVSYXRlID0gdG9GbG9hdChhcmdzWzJdKTsKICAgICAgICAgaWYgKHNhbXBsZVJhdGUgPD0g
MCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAiSW52YWxpZCBz
YW1wbGUgcmF0ZSIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHY4U3ludGF4RXJyb3IsICJJbnZhbGlkIHNhbXBsZSByYXRlIiwgYXJncy5HZXRJc29s
YXRlKCkpOwogCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBhdWRpb0Nv
bnRleHQgPSBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KGRvY3VtZW50LCBudW1i
ZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSwgZWMpOwpAQCAtODgsNyAr
ODgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIH0KIAogICAgIGlmICghYXVkaW9D
b250ZXh0LmdldCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIkVy
cm9yIGNyZWF0aW5nIEF1ZGlvQ29udGV4dCIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgIkVycm9yIGNyZWF0aW5nIEF1ZGlvQ29u
dGV4dCIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAKICAgICAvLyBUcmFuc2Zvcm0gdGhlIGhv
bGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhdWRpbyBjb250ZXh0LgogICAgIFY4
RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgYXVkaW9Db250
ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QmxvYkN1c3RvbS5jcHAKaW5kZXggMGVjYzU5ZTMwYzc1ZmVhNjFiMDE3YmExN2M4NTkyM2Y5MGNk
MjUwZC4uNGE5NGI0M2IwMzZkMTExZGQ0YmY5ODdjYzcxNjBmOTljNjkzYjM5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKQEAg
LTk5LDcgKzk5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QmxvYjo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICBpZiAodHJ5Q2F0Y2hU
eXBlLkhhc0NhdWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2hU
eXBlLkV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlmICghdHlwZS5j
b250YWluc09ubHlBU0NJSSgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU3ludGF4
RXJyb3IsICJ0eXBlIG11c3QgY29uc2lzdCBvZiBBU0NJSSBjaGFyYWN0ZXJzIiwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwg
InR5cGUgbXVzdCBjb25zaXN0IG9mIEFTQ0lJIGNoYXJhY3RlcnMiLCBhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgICAgIHR5cGUubWFrZUxvd2VyKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRl
eCBmY2E4OTkxMTFmOGU2NjQxZmRiZDJhZTExNWY2YjkzZGEyNmVlN2JiLi40ZGNkZDdlNTE2YTU2
Yzg2MWQ2NGU1ZDYzY2FmYTI2MDZiNDljZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpjbGVhckRhdGFDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIH0KIAogICAgIGlmIChhcmdzLkxlbmd0
aCgpICE9IDEpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAiY2xlYXJE
YXRhOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4RXJyb3IsICJjbGVhckRhdGE6IEludmFs
aWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIFN0cmlu
ZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIGNsaXBib2FyZC0+Y2xlYXJE
YXRhKHR5cGUpOwpAQCAtODgsNyArODgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlw
Ym9hcmQ6OnNldERyYWdJbWFnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0g
MykKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU3ludGF4RXJyb3IsICJzZXREcmFnSW1hZ2U6
IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgInNldERyYWdJbWFnZTogSW52YWxp
ZCBudW1iZXIgb2YgYXJndW1lbnRzIiwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgaW50IHgg
PSB0b0ludDMyKGFyZ3NbMV0pOwogICAgIGludCB5ID0gdG9JbnQzMihhcmdzWzJdKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRh
Q3VzdG9tLmNwcAppbmRleCAzM2JlN2U5OWQ1MzlmMWY2ZWM4YzIzYzNiOGUwMTE3YzMxYTQ4MTlk
Li45NDgxZWUzMmRjN2QzMzQ1NTM3NTZlOGJlMDljZTZmMjAzZmY0Y2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0
b20uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1E
YXRhOjphcHBlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIElOQ19T
VEFUUygiRE9NLkZvcm1EYXRhLmFwcGVuZCgpIik7CiAgICAgCiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIk5vdCBlbm91
Z2ggYXJndW1lbnRzIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcih2OFN5bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVudHMiLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAKICAgICBET01Gb3JtRGF0YSogZG9tRm9ybURhdGEgPSBWOERPTUZvcm1EYXRhOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cAppbmRleCA3MDkxMWRhMTIxNjFjMjhhMWNmYTc4OGIzOGZlNzkxNjZjYjdlZGVlLi41ODk5NDk0
MTAxNjVmNTUwMjMyODRlMmJjNTc5NzMzYjRiYTBjMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhT
UUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQog
ICAgIElOQ19TVEFUUygiRE9NLlNRTFJlc3VsdFNldFJvd0xpc3QuaXRlbSgpIik7CiAKICAgICBp
ZiAoIWFyZ3MuTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9y
LCAiSXRlbSBpbmRleCBpcyByZXF1aXJlZC4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4RXJyb3IsICJJdGVtIGluZGV4IGlzIHJlcXVpcmVk
LiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmICghYXJnc1swXS0+SXNOdW1iZXIoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJJdGVtIGluZGV4IG11c3QgYmUgYSBudW1i
ZXIuIiwgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtNTIsNyArNTIsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYQogCiAgICAgdW5zaWduZWQgbG9uZyBpbmRleCA9IGFyZ3NbMF0tPkludGVnZXJW
YWx1ZSgpOwogICAgIGlmIChpbmRleCA+PSByb3dMaXN0LT5sZW5ndGgoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIkl0ZW0gaW5kZXggaXMgb3V0IG9mIHJhbmdlLiIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSYW5nZUVy
cm9yLCAiSXRlbSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuIiwgYXJncy5HZXRJc29sYXRlKCkpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGl0ZW0gPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAg
ICB1bnNpZ25lZCBudW1Db2x1bW5zID0gcm93TGlzdC0+Y29sdW1uTmFtZXMoKS5zaXplKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYmM1NTQwODljOThlYjI0NTc2YzljYzdkZDE2OGQ1MDg0
MTZiNGY2Yi4uYThhMzA1OGM1N2MzZDJmOWE0YTdkMzkzYjE5MDg0Mzc3NTZjNmRhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMTUyMCw3ICsxNTIwLDcgQEAgdm9pZCBFbGVtZW50Ojpmb3Jt
YXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIFBhc3NS
ZWZQdHI8QXR0cj4gRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZShBdHRyKiBhdHRyTm9kZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFhdHRyTm9kZSkgewotICAgICAgICBlYyA9IE5B
VElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIApAQCAtMTU2Miw3ICsxNTYyLDcgQEAgUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50
OjpzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciogYXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiBQYXNz
UmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciogYXR0ciwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFhdHRyKSB7Ci0gICAgICAgIGVjID0gTkFUSVZF
X1RZUEVfRVJSOworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIGlmIChhdHRyLT5vd25lckVsZW1lbnQoKSAhPSB0aGlzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V4Y2VwdGlvbkNvZGUuaAppbmRleCA1MWY4ZGMyZDNmMTI0OWI4M2E1ZmRkODQzNjhlNGNjOTMz
NDI2NDk5Li44ZTAxYjZlNDE1YWZmYzA3NGViYjdlYzRhNzIzMGY1NDliNjI0ZDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FeGNlcHRpb25Db2RlLmgKQEAgLTY1LDggKzY1LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgSU5WQUxJRF9OT0RFX1RZUEVfRVJSID0gMjQsCiAgICAgICAgIERBVEFf
Q0xPTkVfRVJSID0gMjUsCiAKLSAgICAgICAgLy8gQ29udmVydGVkIHRvIGEgbmF0aXZlIFR5cGVF
cnJvciBieSB0aGUgc2NyaXB0IGJpbmRpbmcgbGF5ZXI6Ci0gICAgICAgIE5BVElWRV9UWVBFX0VS
UiA9IDk5CisgICAgICAgIC8vIFdlYklETCBleGNlcHRpb24gdHlwZXMsIGhhbmRsZWQgYnkgdGhl
IGJpbmRpbmcgbGF5ZXIuCisgICAgICAgIEdlbmVyYWxFcnJvciA9IDEwMCwKKyAgICAgICAgRXZh
bEVycm9yID0gMTAxLAorICAgICAgICBSYW5nZUVycm9yID0gMTAyLAorICAgICAgICBSZWZlcmVu
Y2VFcnJvciA9IDEwMywKKyAgICAgICAgU3ludGF4RXJyb3IgPSAxMDQsCisgICAgICAgIFR5cGVF
cnJvciA9IDEwNSwKKyAgICAgICAgVVJJRXJyb3IgPSAxMDYsCiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173974</attachid>
            <date>2012-11-13 13:37:45 -0800</date>
            <delta_ts>2012-11-14 11:47:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102114-20121113133546.patch</filename>
            <type>text/plain</type>
            <size>34596</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIzYjBiMzIyMmExMzM3
YTM0YWQ4YjFlZTg5OTViNjUzMjMzNDI2Zi4uYWNiNTFjN2Y2MGRlZDZjMWVhZDVhOGYzYzBjMWIx
MDE2ZTAzODliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTExLTEzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIE5BVElWRV9U
WVBFX0VSUiB0byBUeXBlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjExNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERlZmluZXMgbmFtZXMgKG1vc3RseSkgbWF0Y2hpbmcgV2ViSURMIGV4Y2Vw
dGlvbiB0eXBlcyBmb3IgdXNlIGJ5IGRvbSAoZXRjKSBjb2RlLgorICAgICAgICBWOCBiaW5kaW5n
IGNvZGUgaGFkIGNvbGxpZGluZyBlbnVtIG1lbWJlcnMsIHdoaWNoIHJlcXVpcmVkIHByZWZpeGlu
Zy4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IGludGVybmFsIHJlbmFtZXMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOiBzL05BVElWRV9UWVBFX0VS
Ui9UeXBlRXJyb3IvZworICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjphZHZhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpzdHJpbmdUb01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1v
ZGVUb1N0cmluZyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpzZXRET01FeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOiBQcmVmaXggRXJyb3JUeXBlIGVudW0vbWVtYmVycyB3
LyBWOC92OC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVFeHRlbnNpb246Ok9uU2xlZXBEZXRlY3Rl
ZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHA6IERpdHRvLgorICAgICAg
ICAoX05QTl9TZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEJpbmRpbmcuaDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpucE9i
amVjdEludm9rZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpucE9iamVjdFNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6Om5wT2JqZWN0UHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFRocm93RXhjZXB0aW9uLmNwcDogUmVuYW1lIEFMTCB0aGUgZXJyb3JzIQorICAgICAgICAoV2Vi
Q29yZTo6VjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGhyb3dFeGNlcHRpb246OnRocm93RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhU
aHJvd0V4Y2VwdGlvbjo6dGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhUaHJv
d0V4Y2VwdGlvbjo6dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5oOgorICAgICAgICAoVjhUaHJvd0V4Y2VwdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDog
UHJlZml4aW5nIChjb250aW51ZWQpCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlckN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1
ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0V2ViR0xBcnJheVdpdGhBcnJheUJ1ZmZlckFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0V2ViR0xBcnJh
eUhlbHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3Bw
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpjbGVhckRhdGFDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjphcHBlbmRDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3Rv
bS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxSZXN1bHRTZXRSb3dMaXN0Ojpp
dGVtQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Db2RlLmg6IEFkZCBXZWJJREwg
ZXhjZXB0aW9uIHR5cGVzLgorCiAyMDEyLTExLTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0IGV4cG9zZXMgQVJJQSByb3doZWFkZXIgcm9s
ZSBhcyBBWFVua25vd24gd2hlbiBub3QgY29udGFpbmVkIGluIHRhYmxlL2dyaWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGJlYjAxYzQ2
MjgyYTNlM2Y4OWFkNDY0MWQ1MTRjNDViOGJlOTkxZmMuLjBmM2E2MDNmYmYyYjQxN2EzM2Y2ZWM5
YzcyODQyYTRkZjE3Zjc0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgSURCQ3Vyc29yOjphZHZh
bmNlKGxvbmcgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgb25seSBuZWVkIHRvIGNoZWNrIGZvciAwIG9uY2Ugd2Via2l0Lm9yZy9iLzk2
Nzk4IGxhbmRzLgogICAgIGlmIChjb3VudCA8IDEgfHwgY291bnQgPiBVSU5UX01BWCkgewotICAg
ICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBJREJDdXJzb3I6OkRpcmVj
dGlvbiBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
U3RyaW5nLAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+
KElEQkN1cnNvcjo6TkVYVCArIChkaXJlY3Rpb25TdHJpbmdbMF0gLSAnMCcpKTsKICAgICB9CiAK
LSAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICBlYyA9IFR5cGVFcnJvcjsKICAgICByZXR1
cm4gSURCQ3Vyc29yOjpORVhUOwogfQogCkBAIC0zMzAsNyArMzMwLDcgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblRvU3RyaW5nKHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgRXhjZXAKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1
ZSgpOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CisgICAg
ICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25O
ZXh0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCmluZGV4IDg0NTMwNTIxYWI2NWQ4ODlhZmZlYzA0NTExZDExNzE0ZmQ4
ZGY2ZjkuLjhlZjZlMjQwNTc0MTQwYjhiNzI5NDg3OWU4ZmI4MjMwZDg5NTgwYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTIx
MSw3ICsyMTEsNyBAQCBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRh
YmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIH0KIAogICAgIGlmICh2
ZXJzaW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOworICAgICAg
ICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IGU3ODkxM2Jh
MDRjYmJjNzMzMjI4M2YwNWY0YmFhYTUwMDBiM2UwYmUuLmNiNDg1ZjUwNGZiYjI2ZjkwNTFmNGZl
OTRlOGY5YTA0OGZlZWFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgUGFzc1JlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGMKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgb25seSBuZWVkIHRvIGNoZWNrIGZvciAw
IG9uY2Ugd2Via2l0Lm9yZy9iLzk2Nzk4IGxhbmRzLgogICAgIGNvbnN0IGludDY0X3QgbWF4RUNN
QVNjcmlwdEludGVnZXIgPSAweDIwMDAwMDAwMDAwMDAwTEwgLSAxOwogICAgIGlmICh2ZXJzaW9u
IDwgMSB8fCB2ZXJzaW9uID4gbWF4RUNNQVNjcmlwdEludGVnZXIpIHsKLSAgICAgICAgZWMgPSBO
QVRJVkVfVFlQRV9FUlI7CisgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9u
LCBlYyk7CkBAIC0xMjAsNyArMTIwLDcgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJ
REJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIHsKICAg
ICBBU1NFUlQodmVyc2lvbiA+PSAxIHx8IHZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
Tm9JbnRWZXJzaW9uKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewotICAgICAgICBlYyA9IE5B
VElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KICAgICBpZiAoIWlzQ29udGV4dFZhbGlkKGNvbnRleHQpKQpAQCAtMTQwLDcgKzE0
MCw3IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwor
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
ICghaXNDb250ZXh0VmFsaWQoY29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggN2IxNzVlNjQxMGVmNWZhZjBl
NTc3M2ExOTBmYTMyZDg0ODJmNTM3OS4uOWVmMzQ5NWQ4ZTI0ZmE1YzJiMWJmNDExNmE1ZWFkYWQ5
ODNmOTUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+
IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobmFtZS5pc051bGwoKSkgewot
ICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoY29udGFpbnNJbmRleChuYW1lKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDUzMWYyZjA5MTU4YTI3NTY5NjVlNTEzYTM2YjZhMTJjZGI2NmZjZjguLjlmZTM1
Yzk0N2MwNGU3MjRhZjc1MGZhYTRhYThjOWVkYWY3ZTE5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTM1NCw3ICsz
NTQsNyBAQCBJREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2Rl
KGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkgKyAobW9k
ZVN0cmluZ1swXSAtICcwJykpOwogICAgIH0KIAotICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwor
ICAgIGVjID0gVHlwZUVycm9yOwogICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZ
OwogfQogCkBAIC0zNzQsNyArMzc0LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2Fj
dGlvbjo6bW9kZVRvU3RyaW5nKElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIEV4Y2UKICAgICAg
ICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsK
KyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRPbmx5KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKaW5kZXggZDc2ZTBlMWRjMDk5NzMzODUxMjY2ZTgxNTc3Nzg3Y2JlNDVk
NGY4YS4uMzBlY2NlYzg5YTBkMDQyNWRmMDIwN2JmMDZlYzRmNWJkYjMxMTFlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0xODYsNyArMTg2LDgg
QEAgdm9pZCBzZXRET01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb25Db2RlIGVj
KQogICAgIGlmICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChlYyA9PSBOQVRJVkVfVFlQRV9FUlIpIHsKKyAgICAvLyBGSVhNRTogSGFuZGxl
IG90aGVyIFdlYklETCBleGNlcHRpb24gdHlwZXMuCisgICAgaWYgKGVjID09IFR5cGVFcnJvcikg
ewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKaW5kZXggMTFh
M2IwOWMwNWMyNmVmNjdjYmRkYmQyYzFhNGU5ZTRmYmM5ZjMwNy4uZGNlNTgzYTU2NTJkOTY5YjZl
MzM0YzA3ODY0NmNmYjM4Zjc2MTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RGF0ZUV4dGVuc2lvbi5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gRGF0ZUV4dGVuc2lvbjo6U2V0dXAoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IERhdGVFeHRlbnNpb246Ok9uU2xlZXBEZXRlY3RlZChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIHJldHVybiB0aHJvd0Vycm9yKEdlbmVyYWxFcnJv
ciwgIlRvbyBtdWNoIHRpbWUgc3BlbnQgaW4gdW5sb2FkIGhhbmRsZXIuIiwgYXJncy5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB0aHJvd0Vycm9yKHY4R2VuZXJhbEVycm9yLCAiVG9vIG11Y2gg
dGltZSBzcGVudCBpbiB1bmxvYWQgaGFuZGxlci4iLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9OUFY4T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhP
YmplY3QuY3BwCmluZGV4IDJmMjczZTEyYzUyMjZkYjc2ZjQzYmM2MzNlMDdmNDE0NTYxMDUxOTgu
LmU5NDFlNjMxZjlhMDE0MDYwMTY2NDkxZGFmZDlkNjAzMWExNjE4NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBf
TlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IE5QVVRGOCAqbWVzc2Fn
ZSkKICAgICBpZiAoIW5wT2JqZWN0IHx8IG5wT2JqZWN0LT5fY2xhc3MgIT0gbnBTY3JpcHRPYmpl
Y3RDbGFzcykgewogICAgICAgICAvLyBXZSB3b24ndCBiZSBhYmxlIHRvIGZpbmQgYSBwcm9wZXIg
c2NvcGUgZm9yIHRoaXMgZXhjZXB0aW9uLCBzbyBqdXN0IHRocm93IGl0LgogICAgICAgICAvLyBU
aGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBKU0MsIHdoaWNoIHRocm93cyBhIGdsb2JhbCBleGNlcHRp
b24gYWxsIHRoZSB0aW1lLgotICAgICAgICB0aHJvd0Vycm9yKEdlbmVyYWxFcnJvciwgbWVzc2Fn
ZSk7CisgICAgICAgIHRocm93RXJyb3IodjhHZW5lcmFsRXJyb3IsIG1lc3NhZ2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKQEAgLTQ4
Niw3ICs0ODYsNyBAQCB2b2lkIF9OUE5fU2V0RXhjZXB0aW9uKE5QT2JqZWN0KiBucE9iamVjdCwg
Y29uc3QgTlBVVEY4ICptZXNzYWdlKQogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250
ZXh0KTsKICAgICBFeGNlcHRpb25DYXRjaGVyIGV4Y2VwdGlvbkNhdGNoZXI7CiAKLSAgICB0aHJv
d0Vycm9yKEdlbmVyYWxFcnJvciwgbWVzc2FnZSk7CisgICAgdGhyb3dFcnJvcih2OEdlbmVyYWxF
cnJvciwgbWVzc2FnZSk7CiB9CiAKIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQIG5wcCwgTlBPYmpl
Y3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBiYTMxNzMzZjZj
YjVhODgyMGY3NWU3ZDEzYzQyODlhZWIwY2VlNTY0Li5lNTBkNDY0ZjA1MDg0YjMwNGEwMDcxMjk5
MzA3ODA5ZGIxMjYwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldERPTUV4Y2VwdGlv
bihpbnQgZXhjZXB0aW9uQ29kZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgcmV0dXJuIFY4
VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihleGNlcHRpb25Db2RlLCBpc29sYXRlKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJyb3IoRXJyb3JUeXBlIGVycm9yVHlw
ZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdGhyb3dFcnJvcihWOEVycm9yVHlwZSBlcnJvclR5cGUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHJldHVybiBWOFRocm93RXhj
ZXB0aW9uOjp0aHJvd0Vycm9yKGVycm9yVHlwZSwgbWVzc2FnZSwgaXNvbGF0ZSk7CiB9CkBAIC0z
NDQsNyArMzQ0LDcgQEAgYm9vbCBoYW5kbGVPdXRPZk1lbW9yeSgpCiAKIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGhhbmRsZU1heFJlY3Vyc2lvbkRlcHRoRXhjZWVkZWQoKQogewotICAgIHRocm93RXJy
b3IoUmFuZ2VFcnJvciwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpOworICAg
IHRocm93RXJyb3IodjhSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVk
ZWQuIik7CiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggMzhiOWUzMjliMWM3N2EyNTM1MjhjNzdh
MDQzNGZlOGJkNWY3MmZjZC4uZDllMzc2ODkzY2QxMjYyYWUyYWVhODU1OGRkNDgxODQ5NzA3OWQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTYwLDcgKzYwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRET01F
eGNlcHRpb24oaW50LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgLy8gU2NoZWR1bGUgYSBKYXZhU2Ny
aXB0IGVycm9yIHRvIGJlIHRocm93bi4KLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dF
cnJvcihFcnJvclR5cGUsIGNvbnN0IGNoYXIqLCB2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcihWOEVycm9yVHlwZSwgY29uc3QgY2hhciosIHY4
OjpJc29sYXRlKiA9IDApOwogCiAgICAgLy8gU2NoZWR1bGUgYSBKYXZhU2NyaXB0IGVycm9yIHRv
IGJlIHRocm93bi4KICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcih2ODo6TG9j
YWw8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IDE5YWJkOWU3MGYxYmJiNDg4ZDcxOTNkNzVkZWFlMmJm
YWUxYjU3ZDMuLmI1YTIxYzBlOGM5MmQ4NzY2ODg2ZmMxMmQzMTU1NjYyYmNhM2MxNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCkBAIC04OSwxNCArODksMTQg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEludm9rZUltcGwoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgSW52b2sKICAgICAgICAgLy8gVGhlIGhvbGRlciBvYmplY3Qg
aXMgbm90IGEgc3VidHlwZSBvZiBIVE1MUGx1Z0luRWxlbWVudCwgaXQgbXVzdCBiZSBhbiBOUE9i
amVjdCB3aGljaCBoYXMgdGhyZWUKICAgICAgICAgLy8gaW50ZXJuYWwgZmllbGRzLgogICAgICAg
ICBpZiAoYXJncy5Ib2xkZXIoKS0+SW50ZXJuYWxGaWVsZENvdW50KCkgIT0gbnBPYmplY3RJbnRl
cm5hbEZpZWxkQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihSZWZlcmVuY2VF
cnJvciwgIk5QTWV0aG9kIGNhbGxlZCBvbiBub24tTlBPYmplY3QiLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBN
ZXRob2QgY2FsbGVkIG9uIG5vbi1OUE9iamVjdCIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAg
ICAgICBucE9iamVjdCA9IHY4T2JqZWN0VG9OUE9iamVjdChhcmdzLkhvbGRlcigpKTsKICAgICB9
CiAKICAgICAvLyBWZXJpZnkgdGhhdCBvdXIgd3JhcHBlciB3YXNuJ3QgdXNpbmcgYSBOUE9iamVj
dCB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQuCiAgICAgaWYgKCFucE9iamVjdCB8fCAh
X05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmVmZXJl
bmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIC8vIFdyYXAgdXAgcGFyYW1ldGVycy4KICAgICBp
bnQgbnVtQXJncyA9IGFyZ3MuTGVuZ3RoKCk7CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEludm9rZUltcGwoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncywgSW52b2sKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgdGhyb3dF
cnJvcihHZW5lcmFsRXJyb3IsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHRocm93RXJyb3IodjhHZW5lcmFsRXJyb3IsICJF
cnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iLCBhcmdzLkdldElzb2xhdGUoKSk7CiAK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUFyZ3M7IGkrKykKICAgICAgICAgX05QTl9SZWxl
YXNlVmFyaWFudFZhbHVlKCZucEFyZ3NbaV0pOwpAQCAtMjA5LDEyICsyMDksMTIgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEdldFByb3BlcnR5KHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBzZWxmLCBOUEkKICAgICAvLyBWZXJpZnkgdGhhdCBvdXIgd3JhcHBlciB3YXNuJ3Qg
dXNpbmcgYSBOUE9iamVjdCB3aGljaAogICAgIC8vIGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZC4K
ICAgICBpZiAoIW5wT2JqZWN0IHx8ICFfTlBOX0lzQWxpdmUobnBPYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29s
YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSZWZlcmVuY2VFcnJvciwgIk5QT2Jq
ZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKIAogCiAgICAgaWYgKG5wT2JqZWN0LT5fY2xhc3MtPmhh
c1Byb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3MtPmdldFByb3BlcnR5ICYmIG5wT2JqZWN0LT5f
Y2xhc3MtPmhhc1Byb3BlcnR5KG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAo
IV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihS
ZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwg
aXNvbGF0ZSk7CiAKICAgICAgICAgTlBWYXJpYW50IHJlc3VsdDsKICAgICAgICAgVk9JRF9UT19O
UFZBUklBTlQocmVzdWx0KTsKQEAgLTIzMCwxMSArMjMwLDExIEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9wZXJ0eSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2Vs
ZiwgTlBJCiAgICAgfQogCiAgICAgaWYgKCFfTlBOX0lzQWxpdmUobnBPYmplY3QpKQotICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBp
c29sYXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSZWZlcmVuY2VFcnJvciwgIk5Q
T2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKIAogICAgIGlmIChrZXktPklzU3RyaW5nKCkgJiYg
bnBPYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kICYmIG5wT2JqZWN0LT5fY2xhc3MtPmhhc01ldGhv
ZChucE9iamVjdCwgaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKCFfTlBOX0lzQWxpdmUobnBP
YmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmVmZXJlbmNlRXJyb3IsICJO
UE9iamVjdCBkZWxldGVkIiwgaXNvbGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOwogCiAgICAg
ICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9IHN0YXRpY19jYXN0PFByaXZhdGVJZGVudGlmaWVy
Kj4oaWRlbnRpZmllcik7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBmdW5jdGlvblRlbXBsYXRlID0gVjhOUFRlbXBsYXRlTWFwOjpzaGFyZWRJbnN0YW5jZSgp
LmdldChpZCk7CkBAIC0yOTIsMTMgKzI5MiwxMyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG5wT2JqZWN0U2V0UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5QSQog
CiAgICAgLy8gVmVyaWZ5IHRoYXQgb3VyIHdyYXBwZXIgd2Fzbid0IHVzaW5nIGEgTlBPYmplY3Qg
d2hpY2ggaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3QgfHwgIV9O
UE5fSXNBbGl2ZShucE9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcihSZWZlcmVuY2VFcnJv
ciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKKyAgICAgICAgdGhyb3dFcnJvcih2OFJl
ZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOwogICAgICAgICByZXR1
cm4gdmFsdWU7ICAvLyBJbnRlcmNlcHRlZCwgYnV0IGFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duLgog
ICAgIH0KIAogICAgIGlmIChucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eSAmJiBucE9iamVj
dC0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0eShu
cE9iamVjdCwgaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKCFfTlBOX0lzQWxpdmUobnBPYmpl
Y3QpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmVmZXJlbmNlRXJyb3IsICJOUE9i
amVjdCBkZWxldGVkIiwgaXNvbGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2
OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOwogCiAgICAgICAg
IE5QVmFyaWFudCBucFZhbHVlOwogICAgICAgICBWT0lEX1RPX05QVkFSSUFOVChucFZhbHVlKTsK
QEAgLTM0NCw3ICszNDQsNyBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gbnBPYmplY3RQcm9wZXJ0
eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgYgogICAgIC8vIFZlcmlm
eSB0aGF0IG91ciB3cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdoaWNoCiAgICAgLy8g
aGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3QgfHwgIV9OUE5fSXNB
bGl2ZShucE9iamVjdCkpCi0gICAgICAgIHRocm93RXJyb3IoUmVmZXJlbmNlRXJyb3IsICJOUE9i
amVjdCBkZWxldGVkIiwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICB0aHJvd0Vycm9yKHY4
UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgaW5mby5HZXRJc29sYXRlKCkpOwog
CiAgICAgaWYgKE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0hBU19FTlVNKG5wT2JqZWN0LT5fY2xh
c3MpICYmIG5wT2JqZWN0LT5fY2xhc3MtPmVudW1lcmF0ZSkgewogICAgICAgICB1aW50MzJfdCBj
b3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5j
cHAKaW5kZXggZjBhZGMwMTJmNjRlYzM3NjQ2OWVkZTM0YWVkOWZmODk5YmJiMWY3OS4uMGMxNTZl
MzVhOGZhYzEzODQxMTRlZDIwZTg1MjlmMDVkY2Y3ZmUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHAKQEAgLTUzLDcgKzUzLDggQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihpbnQg
ZWMsIHY4OjpJc29sYXRlKiBpc28KICAgICBpZiAoZWMgPD0gMCB8fCB2ODo6Vjg6OklzRXhlY3V0
aW9uVGVybWluYXRpbmcoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKLSAgICBp
ZiAoZWMgPT0gTkFUSVZFX1RZUEVfRVJSKQorICAgIC8vIEZJWE1FOiBIYW5kbGUgb3RoZXIgV2Vi
SURMIGV4Y2VwdGlvbiB0eXBlcy4KKyAgICBpZiAoZWMgPT0gVHlwZUVycm9yKQogICAgICAgICBy
ZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dUeXBlRXJyb3IoMCwgaXNvbGF0ZSk7CiAKICAg
ICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwpAQCAtNzcsMTggKzc4
LDE4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNl
cHRpb24oaW50IGVjLCB2ODo6SXNvbGF0ZSogaXNvCiAKICN1bmRlZiBUUllfVE9fQ1JFQVRFX0VY
Q0VQVElPTgogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dF
cnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dFcnJv
cihWOEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFJhbmdlRXJyb3I6CisgICAg
Y2FzZSB2OFJhbmdlRXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNlcHRpb24odjg6
OkV4Y2VwdGlvbjo6UmFuZ2VFcnJvcih2OFN0cmluZyhtZXNzYWdlLCBpc29sYXRlKSkpOwotICAg
IGNhc2UgUmVmZXJlbmNlRXJyb3I6CisgICAgY2FzZSB2OFJlZmVyZW5jZUVycm9yOgogICAgICAg
ICByZXR1cm4gdjg6OlRocm93RXhjZXB0aW9uKHY4OjpFeGNlcHRpb246OlJlZmVyZW5jZUVycm9y
KHY4U3RyaW5nKG1lc3NhZ2UsIGlzb2xhdGUpKSk7Ci0gICAgY2FzZSBTeW50YXhFcnJvcjoKKyAg
ICBjYXNlIHY4U3ludGF4RXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNlcHRpb24o
djg6OkV4Y2VwdGlvbjo6U3ludGF4RXJyb3IodjhTdHJpbmcobWVzc2FnZSwgaXNvbGF0ZSkpKTsK
LSAgICBjYXNlIFR5cGVFcnJvcjoKKyAgICBjYXNlIHY4VHlwZUVycm9yOgogICAgICAgICByZXR1
cm4gdjg6OlRocm93RXhjZXB0aW9uKHY4OjpFeGNlcHRpb246OlR5cGVFcnJvcih2OFN0cmluZyht
ZXNzYWdlLCBpc29sYXRlKSkpOwotICAgIGNhc2UgR2VuZXJhbEVycm9yOgorICAgIGNhc2UgdjhH
ZW5lcmFsRXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNlcHRpb24odjg6OkV4Y2Vw
dGlvbjo6RXJyb3IodjhTdHJpbmcobWVzc2FnZSwgaXNvbGF0ZSkpKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTk4LDEyICs5OSwxMiBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dFcnJvcihFcnJvclR5cGUgdHlw
ZSwgY29uc3QgY2hhciogbQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlv
bjo6dGhyb3dUeXBlRXJyb3IoY29uc3QgY2hhciogbWVzc2FnZSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiB7Ci0gICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRpb246OnRocm93RXJyb3IoVHlwZUVycm9y
LCAobWVzc2FnZSA/IG1lc3NhZ2UgOiAiVHlwZSBlcnJvciIpLCBpc29sYXRlKTsKKyAgICByZXR1
cm4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dFcnJvcih2OFR5cGVFcnJvciwgKG1lc3NhZ2UgPyBt
ZXNzYWdlIDogIlR5cGUgZXJyb3IiKSwgaXNvbGF0ZSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd0Vy
cm9yKFR5cGVFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgaXNvbGF0ZSk7CisgICAgcmV0
dXJuIFY4VGhyb3dFeGNlcHRpb246OnRocm93RXJyb3IodjhUeXBlRXJyb3IsICJOb3QgZW5vdWdo
IGFyZ3VtZW50cyIsIGlzb2xhdGUpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJv
d0V4Y2VwdGlvbjo6dGhyb3dFcnJvcih2ODo6TG9jYWw8djg6OlZhbHVlPiBleGNlcHRpb24sIHY4
OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhUaHJvd0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJv
d0V4Y2VwdGlvbi5oCmluZGV4IDRmNTNkMjI4MjI3Mzk4ODAyN2RmNTAxZjNlNDU2YTdhOWRjZWRi
NTguLjJmNDZhZmEyOGMzNDQ3NzAyYTk1NmQwOTkxN2YwZmIwZjQyNjdhMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmgKQEAgLTI5LDE5ICsyOSwx
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gRXJyb3JUeXBlIHsKLSAgICBSYW5n
ZUVycm9yLAotICAgIFJlZmVyZW5jZUVycm9yLAotICAgIFN5bnRheEVycm9yLAotICAgIFR5cGVF
cnJvciwKLSAgICBHZW5lcmFsRXJyb3IKK2VudW0gVjhFcnJvclR5cGUgeworICAgIHY4UmFuZ2VF
cnJvciwKKyAgICB2OFJlZmVyZW5jZUVycm9yLAorICAgIHY4U3ludGF4RXJyb3IsCisgICAgdjhU
eXBlRXJyb3IsCisgICAgdjhHZW5lcmFsRXJyb3IKIH07CiAKIGNsYXNzIFY4VGhyb3dFeGNlcHRp
b24gewogcHVibGljOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0RE9NRXhj
ZXB0aW9uKGludCwgdjg6Oklzb2xhdGUqKTsKIAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdGhyb3dFcnJvcihFcnJvclR5cGUsIGNvbnN0IGNoYXIqLCB2ODo6SXNvbGF0ZSogPSAw
KTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJyb3IoVjhFcnJvclR5
cGUsIGNvbnN0IGNoYXIqLCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRocm93RXJyb3Iodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRl
KiA9IDApOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0aHJvd1R5cGVFcnJv
cihjb25zdCBjaGFyKiA9IDAsIHY4OjpJc29sYXRlKiA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAK
aW5kZXggMTVjNWU5MDBiZjVlNGY2YTc5OWM5MmZiYzI4ODVhMjE2MTNhY2VmMC4uOTQzYzA2NGM5
MDc4NjViZWNmNTQ3MDQ4NDZmMjBhNmU5MmVhYTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBA
IC0yMTYsNyArMjE2LDcgQEAgU2NyaXB0VmFsdWUgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgU3QKICAgICAgICAgc3RhdGUt
PmxpbmVOdW1iZXIgPSBtZXNzYWdlLT5HZXRMaW5lTnVtYmVyKCk7CiAgICAgICAgIHN0YXRlLT5z
b3VyY2VVUkwgPSB0b1dlYkNvcmVTdHJpbmcobWVzc2FnZS0+R2V0U2NyaXB0UmVzb3VyY2VOYW1l
KCkpOwogICAgICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5zYW5pdGl6ZVNjcmlwdEVycm9yKHN0
YXRlLT5lcnJvck1lc3NhZ2UsIHN0YXRlLT5saW5lTnVtYmVyLCBzdGF0ZS0+c291cmNlVVJMKSkK
LSAgICAgICAgICAgIHN0YXRlLT5leGNlcHRpb24gPSB0aHJvd0Vycm9yKEdlbmVyYWxFcnJvciwg
c3RhdGUtPmVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHN0YXRlLT5l
eGNlcHRpb24gPSB0aHJvd0Vycm9yKHY4R2VuZXJhbEVycm9yLCBzdGF0ZS0+ZXJyb3JNZXNzYWdl
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGF0ZS0+ZXhjZXB0
aW9uID0gU2NyaXB0VmFsdWUoZXhjZXB0aW9uQ2F0Y2hlci5FeGNlcHRpb24oKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Q3VzdG9tLmNwcAppbmRleCBmYjAwYTFhZDc5ZTQ2ZjA3MzJiODFmYzk5MWIwMjc1MWRiYmM0NWNi
Li44N2MyNTY1NWZjZDc0MzNkM2QzMjgzYmM2NzdmYWQ2MDg2YjA5ZmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0
b20uY3BwCkBAIC03OSw3ICs3OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEFycmF5QnVm
ZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgaWYg
KGxlbmd0aCA+PSAwKQogICAgICAgICBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihsZW5ndGgpLCAxKTsKICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIkFycmF5QnVmZmVyIHNpemUgaXMg
bm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIiwgYXJncy5HZXRJc29sYXRlKCkp
OworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsICJBcnJheUJ1ZmZlciBz
aXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICBidWZmZXItPnNldERlYWxsb2NhdGlvbk9ic2VydmVyKFY4QXJyYXlCdWZm
ZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFuY2UoKSk7CiAgICAgdjg6OlY4OjpBZGp1c3RB
bW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBh
cnJheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFy
cmF5QnVmZmVyVmlld0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKaW5kZXggNGE3MWRmZmQ0NjI1ZjA1Njg3ZWM3OGQw
MDkyNjBiM2U4MGRkNjRlOC4uMmYwOWNkNGRhMTZiMDYxZGFjMzgwZDI1Yzg0NzgxNjQxZjEzZWJm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKQEAgLTgzLDE2ICs4MywxNiBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJheVdpdGhBcnJheUJ1ZmZlckFyZ3VtZW50KGNv
bnN0IHY4OjpBcmd1bQogICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJDb3VsZCBu
b3QgY29udmVydCBhcmd1bWVudCAyIHRvIGEgbnVtYmVyIiwgYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgoYnVmLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUg
c2l6ZW9mKEVsZW1lbnRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJhbmdl
RXJyb3IsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEg
bXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZS4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsICJBcnJheUJ1ZmZlciBsZW5n
dGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQg
c2l6ZS4iLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGxlbmd0aCA9IChidWYtPmJ5dGVM
ZW5ndGgoKSAtIG9mZnNldCkgLyBzaXplb2YoRWxlbWVudFR5cGUpOwogICAgIH0KIAogICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAKICAgICBSZWZQdHI8QXJyYXlDbGFzcz4gYXJyYXkgPSBBcnJheUNsYXNz
OjpjcmVhdGUoYnVmLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgaWYgKCFhcnJheSkKLSAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFyZ2VT
aXplLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1cm4gd3JhcEFycmF5QnVmZmVyVmll
dyhhcmdzLCB0eXBlLCBhcnJheSwgYXJyYXlUeXBlLCBoYXNJbmRleGVyKTsKIH0KQEAgLTE1MCwx
MSArMTUwLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFycmF5KGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgICAgIHVpbnQzMl90IGxl
bmd0aCA9IHNvdXJjZS0+bGVuZ3RoKCk7CiAKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMy
X3Q+KGxlbmd0aCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJv
ciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsIHRvb0xhcmdlU2l6ZSwgYXJncy5HZXRJc29sYXRlKCkp
OwogCiAgICAgICAgIFJlZlB0cjxBcnJheUNsYXNzPiBhcnJheSA9IEFycmF5Q2xhc3M6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICAgICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJhbmdlRXJyb3IsIHRvb0xhcmdlU2l6ZSwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSYW5nZUVycm9y
LCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICBhcnJheS0+YnVm
ZmVyKCktPnNldERlYWxsb2NhdGlvbk9ic2VydmVyKFY4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25P
YnNlcnZlcjo6aW5zdGFuY2UoKSk7CiAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRl
cm5hbEFsbG9jYXRlZE1lbW9yeShhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKQEAgLTE4NCw3ICsxODQs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJheShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVyVHlwZQogICAgIH0KIAogICAgIGlmIChzdGF0aWNfY2Fz
dDxpbnQzMl90PihsZW4pIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJv
ciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CiAK
ICAgICBSZWZQdHI8QXJyYXlDbGFzcz4gYXJyYXk7CiAgICAgaWYgKGRvSW5zdGFudGlhdGlvbikg
ewpAQCAtMTk1LDcgKzE5NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJH
TEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgfQogCiAg
ICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJv
ciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CiAK
ICAgICBpZiAoZG9JbnN0YW50aWF0aW9uKSB7CiAgICAgICAgIGFycmF5LT5idWZmZXIoKS0+c2V0
RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjpp
bnN0YW5jZSgpKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0
V2ViR0xBcnJheUhlbHBlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICBpZiAo
YXJncy5MZW5ndGgoKSA9PSAyKQogICAgICAgICAgICAgb2Zmc2V0ID0gdG9VSW50MzIoYXJnc1sx
XSk7CiAgICAgICAgIGlmICghaW1wbC0+c2V0KHNyYywgb2Zmc2V0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFJhbmdlRXJyb3IsIG91dE9mUmFuZ2VMZW5ndGhBbmRPZmZzZXQsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VF
cnJvciwgb3V0T2ZSYW5nZUxlbmd0aEFuZE9mZnNldCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KIApAQCAtMjQ4LDcgKzI0OCw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRXZWJHTEFycmF5SGVscGVyKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgICAgICAgICBvZmZzZXQgPSB0b1VJbnQzMihhcmdzWzFdKTsKICAg
ICAgICAgdWludDMyX3QgbGVuZ3RoID0gdG9VSW50MzIoYXJyYXktPkdldCh2ODo6U3RyaW5nOjpO
ZXcoImxlbmd0aCIpKSk7CiAgICAgICAgIGlmICghaW1wbC0+Y2hlY2tJbmJvdW5kRGF0YShvZmZz
ZXQsIGxlbmd0aCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihSYW5nZUVycm9yLCBv
dXRPZlJhbmdlTGVuZ3RoQW5kT2Zmc2V0LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsIG91dE9mUmFuZ2VMZW5ndGhBbmRPZmZz
ZXQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgYm9vbCBjb3BpZWQgPSBjb3B5RWxlbWVu
dHMoYXJncy5Ib2xkZXIoKSwgYXJyYXksIGxlbmd0aCwgb2Zmc2V0LCBhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgICAgIGlmICghY29waWVkKSB7CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCAwMWE4Y2E3YmRl
MTQzZmM4MTIwZmY4ZTExMWI0ZDhmMDI1MDg4N2Y1Li4wZjJiMDI5MzM1ZmU0NjU3YTA0MDBiYjg0
MmY4ZWRkNjlhMjg4ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAo
IWF1ZGlvQ29udGV4dC5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRh
eEVycm9yLCAiYXVkaW8gcmVzb3VyY2VzIHVuYXZhaWxhYmxlIGZvciBBdWRpb0NvbnRleHQgY29u
c3RydWN0aW9uIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IodjhTeW50YXhFcnJvciwgImF1ZGlvIHJlc291cmNlcyB1bmF2YWlsYWJsZSBmb3IgQXVk
aW9Db250ZXh0IGNvbnN0cnVjdGlvbiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAocmVuZGVyLXRhcmdldCkgQXVk
aW9Db250ZXh0IHdoaWNoIHJlbmRlcnMgaW50byBhbiBBdWRpb0J1ZmZlci4KICAgICAgICAgLy8g
bmV3IEF1ZGlvQ29udGV4dChpbiB1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIGluIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIGluIGZsb2F0IHNhbXBsZVJhdGUpOwpAQCAtNzEs
MTUgKzcxLDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAKICAgICAgICAgaW50MzJfdCBu
dW1iZXJPZkNoYW5uZWxzID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CiAgICAgICAgIGlmICghb2sg
fHwgbnVtYmVyT2ZDaGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAiSW52YWxpZCBudW1iZXIgb2Yg
Y2hhbm5lbHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcih2OFN5bnRheEVycm9yLCAiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAKICAgICAgICAgaW50MzJfdCBudW1iZXJPZkZyYW1lcyA9IHRvSW50MzIo
YXJnc1sxXSwgb2spOwogICAgICAgICBpZiAoIW9rIHx8IG51bWJlck9mRnJhbWVzIDw9IDApCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIkludmFsaWQgbnVtYmVy
IG9mIGZyYW1lcyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHY4U3ludGF4RXJyb3IsICJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAKICAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRvRmxvYXQoYXJnc1sy
XSk7CiAgICAgICAgIGlmIChzYW1wbGVSYXRlIDw9IDApCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihTeW50YXhFcnJvciwgIkludmFsaWQgc2FtcGxlIHJhdGUiLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiSW52
YWxpZCBzYW1wbGUgcmF0ZSIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0OjpjcmVh
dGVPZmZsaW5lQ29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFt
ZXMsIHNhbXBsZVJhdGUsIGVjKTsKQEAgLTg4LDcgKzg4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGEKICAgICB9CiAKICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoU3ludGF4RXJyb3IsICJFcnJvciBjcmVhdGluZyBBdWRpb0NvbnRleHQi
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4
RXJyb3IsICJFcnJvciBjcmVhdGluZyBBdWRpb0NvbnRleHQiLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgCiAgICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0
IGZvciB0aGUgYXVkaW8gY29udGV4dC4KICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
YXJncy5Ib2xkZXIoKSwgJmluZm8sIGF1ZGlvQ29udGV4dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCmluZGV4IDcxZjE2
MmFlYzgwNWEyYTczOTNiNTYyZWUwMDlkZjZmMDRmZmNmOGQuLjhjMmE5YzRlYmQzYzQ2YjY1ODMx
OTI4MjkwYjU4MjU4NWFlNTdhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCkBAIC05Niw3ICs5Niw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICAgICAgaWYgKHRyeUNhdGNoVHlwZS5IYXNDYXVnaHQoKSkKICAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoVHlwZS5FeGNlcHRpb24oKSwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgICAgICBpZiAoIXR5cGUuY29udGFpbnNPbmx5QVNDSUkoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAidHlwZSBtdXN0IGNvbnNpc3Qg
b2YgQVNDSUkgY2hhcmFjdGVycyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKHY4U3ludGF4RXJyb3IsICJ0eXBlIG11c3QgY29uc2lzdCBvZiBBU0NJ
SSBjaGFyYWN0ZXJzIiwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICB0eXBlLm1ha2VMb3dl
cigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKaW5kZXggZmNhODk5MTExZjhlNjY0MWZkYmQyYWUx
MTVmNmI5M2RhMjZlZTdiYi4uNGRjZGQ3ZTUxNmE1NmM4NjFkNjRlNWQ2M2NhZmEyNjA2YjQ5Y2U2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJv
YXJkQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
bGlwYm9hcmRDdXN0b20uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKICAgICB9CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAxKQotICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihTeW50YXhFcnJvciwgImNsZWFyRGF0YTogSW52YWxpZCBudW1iZXIgb2YgYXJn
dW1lbnRzIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2
OFN5bnRheEVycm9yLCAiY2xlYXJEYXRhOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBTdHJpbmcgdHlwZSA9IHRvV2ViQ29yZVN0cmluZyhh
cmdzWzBdKTsKICAgICBjbGlwYm9hcmQtPmNsZWFyRGF0YSh0eXBlKTsKQEAgLTg4LDcgKzg4LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIAogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKFN5bnRheEVycm9yLCAic2V0RHJhZ0ltYWdlOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVu
dHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3lu
dGF4RXJyb3IsICJzZXREcmFnSW1hZ2U6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGludCB4ID0gdG9JbnQzMihhcmdzWzFdKTsKICAgICBp
bnQgeSA9IHRvSW50MzIoYXJnc1syXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggMzNiZTdlOTlk
NTM5ZjFmNmVjOGMyM2MzYjhlMDExN2MzMWE0ODE5ZC4uOTQ4MWVlMzJkYzdkMzM0NTUzNzU2ZThi
ZTA5Y2U2ZjIwM2ZmNGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKICAgICBJTkNfU1RBVFMoIkRPTS5Gb3JtRGF0YS5hcHBlbmQo
KSIpOwogICAgIAogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgIk5vdCBl
bm91Z2ggYXJndW1lbnRzIiwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgRE9NRm9ybURhdGEq
IGRvbUZvcm1EYXRhID0gVjhET01Gb3JtRGF0YTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3Vs
dFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggNzA5MTFkYTEyMTYxYzI4YTFj
ZmE3ODhiMzhmZTc5MTY2Y2I3ZWRlZS4uNTg5OTQ5NDEwMTY1ZjU1MDIzMjg0ZTJiYzU3OTczM2I0
YmEwYzA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICBJTkNfU1RBVFMoIkRPTS5TUUxSZXN1
bHRTZXRSb3dMaXN0Lml0ZW0oKSIpOwogCiAgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIkl0ZW0gaW5kZXggaXMgcmVxdWlyZWQu
IiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRh
eEVycm9yLCAiSXRlbSBpbmRleCBpcyByZXF1aXJlZC4iLCBhcmdzLkdldElzb2xhdGUoKSk7CiAK
ICAgICBpZiAoIWFyZ3NbMF0tPklzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigiSXRlbSBpbmRleCBtdXN0IGJlIGEgbnVtYmVyLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
QEAgLTUyLDcgKzUyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMUmVzdWx0U2V0Um93
TGlzdDo6aXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKIAogICAgIHVuc2lnbmVk
IGxvbmcgaW5kZXggPSBhcmdzWzBdLT5JbnRlZ2VyVmFsdWUoKTsKICAgICBpZiAoaW5kZXggPj0g
cm93TGlzdC0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJhbmdlRXJyb3Is
ICJJdGVtIGluZGV4IGlzIG91dCBvZiByYW5nZS4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgIkl0ZW0gaW5kZXggaXMgb3V0IG9m
IHJhbmdlLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBpdGVtID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IHJv
d0xpc3QtPmNvbHVtbk5hbWVzKCkuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbkNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgK
aW5kZXggNTFmOGRjMmQzZjEyNDliODNhNWZkZDg0MzY4ZTRjYzkzMzQyNjQ5OS4uOGUwMWI2ZTQx
NWFmZmMwNzRlYmI3ZWM0YTcyMzBmNTQ5YjYyNGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
Q29kZS5oCkBAIC02NSw4ICs2NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIElO
VkFMSURfTk9ERV9UWVBFX0VSUiA9IDI0LAogICAgICAgICBEQVRBX0NMT05FX0VSUiA9IDI1LAog
Ci0gICAgICAgIC8vIENvbnZlcnRlZCB0byBhIG5hdGl2ZSBUeXBlRXJyb3IgYnkgdGhlIHNjcmlw
dCBiaW5kaW5nIGxheWVyOgotICAgICAgICBOQVRJVkVfVFlQRV9FUlIgPSA5OQorICAgICAgICAv
LyBXZWJJREwgZXhjZXB0aW9uIHR5cGVzLCBoYW5kbGVkIGJ5IHRoZSBiaW5kaW5nIGxheWVyLgor
ICAgICAgICBHZW5lcmFsRXJyb3IgPSAxMDAsCisgICAgICAgIEV2YWxFcnJvciA9IDEwMSwKKyAg
ICAgICAgUmFuZ2VFcnJvciA9IDEwMiwKKyAgICAgICAgUmVmZXJlbmNlRXJyb3IgPSAxMDMsCisg
ICAgICAgIFN5bnRheEVycm9yID0gMTA0LAorICAgICAgICBUeXBlRXJyb3IgPSAxMDUsCisgICAg
ICAgIFVSSUVycm9yID0gMTA2LAogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174215</attachid>
            <date>2012-11-14 11:47:24 -0800</date>
            <delta_ts>2012-11-14 12:23:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102114-20121114114523.patch</filename>
            <type>text/plain</type>
            <size>34471</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwYjMzNTU5NmFjOTU4
ZTU2Mjk3ZGMyOWYyMTZmZDliMzFjNjVmMS4uMGU4NzU1ZmYwOWM2OGI3Y2RmZjlkYTkzOWQzZTRj
Y2I2NjVlOTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTExLTEzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIE5BVElWRV9U
WVBFX0VSUiB0byBUeXBlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjExNAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4K
KworICAgICAgICBEZWZpbmVzIG5hbWVzIChtb3N0bHkpIG1hdGNoaW5nIFdlYklETCBleGNlcHRp
b24gdHlwZXMgZm9yIHVzZSBieSBkb20gKGV0YykgY29kZS4KKyAgICAgICAgVjggYmluZGluZyBj
b2RlIGhhZCBjb2xsaWRpbmcgZW51bSBtZW1iZXJzLCB3aGljaCByZXF1aXJlZCBwcmVmaXhpbmcu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0ganVzdCBpbnRlcm5hbCByZW5hbWVzLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDogcy9OQVRJVkVfVFlQRV9FUlIv
VHlwZUVycm9yL2cKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6YWR2YW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZTo6c2V0VmVyc2lvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6c3RyaW5nVG9Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2Rl
VG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6c2V0RE9NRXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9EYXRlRXh0ZW5zaW9uLmNwcDogUHJlZml4IEVycm9yVHlwZSBlbnVtL21lbWJlcnMgdy8g
VjgvdjguCisgICAgICAgIChXZWJDb3JlOjpEYXRlRXh0ZW5zaW9uOjpPblNsZWVwRGV0ZWN0ZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAg
KF9OUE5fU2V0RXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRocm93RXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6aGFuZGxlTWF4UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bnBPYmpl
Y3RJbnZva2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0R2V0UHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RTZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpucE9iamVjdFByb3BlcnR5RW51bWVyYXRvcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhU
aHJvd0V4Y2VwdGlvbi5jcHA6IFJlbmFtZSBBTEwgdGhlIGVycm9ycyEKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRocm93RXhjZXB0aW9uOjp0aHJvd0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGhy
b3dFeGNlcHRpb246OnRocm93VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGhyb3dF
eGNlcHRpb246OnRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGhyb3dFeGNlcHRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHA6IFBy
ZWZpeGluZyAoY29udGludWVkKQorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5OjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJy
YXlCdWZmZXJDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4QXJyYXlCdWZm
ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFycmF5QnVmZmVyVmlld0N1c3RvbS5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0
cnVjdFdlYkdMQXJyYXlXaXRoQXJyYXlCdWZmZXJBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdHJ1Y3RXZWJHTEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldFdlYkdMQXJyYXlI
ZWxwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3Rv
bS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20u
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4QmxvYjo6Y29uc3RydWN0b3JDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6OnNldERyYWdJbWFnZUNhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHA6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4U1FMUmVzdWx0U2V0Um93TGlzdDo6aXRl
bUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQ29kZS5oOiBBZGQgV2ViSURMIGV4
Y2VwdGlvbiB0eXBlcy4KKwogMjAxMi0xMS0xNCAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBET01FeGNlcHRpb24gbmFtZTogSW5kZXhTaXplRXJy
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmlu
ZGV4IGJlYjAxYzQ2MjgyYTNlM2Y4OWFkNDY0MWQ1MTRjNDViOGJlOTkxZmMuLjBmM2E2MDNmYmYy
YjQxN2EzM2Y2ZWM5YzcyODQyYTRkZjE3Zjc0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgSURC
Q3Vyc29yOjphZHZhbmNlKGxvbmcgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgb25seSBuZWVkIHRvIGNoZWNrIGZvciAwIG9uY2Ugd2Vi
a2l0Lm9yZy9iLzk2Nzk4IGxhbmRzLgogICAgIGlmIChjb3VudCA8IDEgfHwgY291bnQgPiBVSU5U
X01BWCkgewotICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBl
RXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBJREJD
dXJzb3I6OkRpcmVjdGlvbiBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uU3RyaW5nLAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SURCQ3Vyc29y
OjpEaXJlY3Rpb24+KElEQkN1cnNvcjo6TkVYVCArIChkaXJlY3Rpb25TdHJpbmdbMF0gLSAnMCcp
KTsKICAgICB9CiAKLSAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICBlYyA9IFR5cGVFcnJv
cjsKICAgICByZXR1cm4gSURCQ3Vyc29yOjpORVhUOwogfQogCkBAIC0zMzAsNyArMzMwLDcgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblRvU3RyaW5nKHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiwgRXhjZXAKICAgICAgICAgcmV0dXJuIElEQkN1cnNvcjo6ZGlyZWN0
aW9uUHJldlVuaXF1ZSgpOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgZWMgPSBOQVRJVkVfVFlQ
RV9FUlI7CisgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gSURCQ3Vyc29y
OjpkaXJlY3Rpb25OZXh0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDg0NTMwNTIxYWI2NWQ4ODlhZmZlYzA0
NTExZDExNzE0ZmQ4ZGY2ZjkuLjhlZjZlMjQwNTc0MTQwYjhiNzI5NDg3OWU4ZmI4MjMwZDg5NTgw
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIH0K
IAogICAgIGlmICh2ZXJzaW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gTkFUSVZFX1RZUEVf
RVJSOworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmlu
ZGV4IGU3ODkxM2JhMDRjYmJjNzMzMjI4M2YwNWY0YmFhYTUwMDBiM2UwYmUuLmNiNDg1ZjUwNGZi
YjI2ZjkwNTFmNGZlOTRlOGY5YTA0OGZlZWFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgUGFzc1Jl
ZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGMKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgb25seSBuZWVkIHRv
IGNoZWNrIGZvciAwIG9uY2Ugd2Via2l0Lm9yZy9iLzk2Nzk4IGxhbmRzLgogICAgIGNvbnN0IGlu
dDY0X3QgbWF4RUNNQVNjcmlwdEludGVnZXIgPSAweDIwMDAwMDAwMDAwMDAwTEwgLSAxOwogICAg
IGlmICh2ZXJzaW9uIDwgMSB8fCB2ZXJzaW9uID4gbWF4RUNNQVNjcmlwdEludGVnZXIpIHsKLSAg
ICAgICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CisgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBu
YW1lLCB2ZXJzaW9uLCBlYyk7CkBAIC0xMjAsNyArMTIwLDcgQEAgUGFzc1JlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY28KIHsKICAgICBBU1NFUlQodmVyc2lvbiA+PSAxIHx8IHZlcnNpb24gPT0gSURCRGF0YWJh
c2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewotICAg
ICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIWlzQ29udGV4dFZhbGlkKGNvbnRleHQpKQpA
QCAtMTQwLDcgKzE0MCw3IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9y
eTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gTkFUSVZF
X1RZUEVfRVJSOworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIGlmICghaXNDb250ZXh0VmFsaWQoY29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggN2IxNzVl
NjQxMGVmNWZhZjBlNTc3M2ExOTBmYTMyZDg0ODJmNTM3OS4uOWVmMzQ5NWQ4ZTI0ZmE1YzJiMWJm
NDExNmE1ZWFkYWQ5ODNmOTUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIFBhc3NSZWZQ
dHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobmFtZS5p
c051bGwoKSkgewotICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBU
eXBlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoY29udGFpbnNJbmRl
eChuYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCmluZGV4IDUzMWYyZjA5MTU4YTI3NTY5NjVlNTEzYTM2YjZhMTJjZGI2
NmZjZjguLjlmZTM1Yzk0N2MwNGU3MjRhZjc1MGZhYTRhYThjOWVkYWY3ZTE5MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
QEAgLTM1NCw3ICszNTQsNyBAQCBJREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6
c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgU2NyaQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KElEQlRyYW5zYWN0aW9uOjpSRUFE
X09OTFkgKyAobW9kZVN0cmluZ1swXSAtICcwJykpOwogICAgIH0KIAotICAgIGVjID0gTkFUSVZF
X1RZUEVfRVJSOworICAgIGVjID0gVHlwZUVycm9yOwogICAgIHJldHVybiBJREJUcmFuc2FjdGlv
bjo6UkVBRF9PTkxZOwogfQogCkBAIC0zNzQsNyArMzc0LDcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBJREJUcmFuc2FjdGlvbjo6bW9kZVRvU3RyaW5nKElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUs
IEV4Y2UKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBlYyA9IE5BVElW
RV9UWVBFX0VSUjsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiBJREJU
cmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggZDc2ZTBlMWRjMDk5NzMzODUxMjY2ZTgx
NTc3Nzg3Y2JlNDVkNGY4YS4uMzBlY2NlYzg5YTBkMDQyNWRmMDIwN2JmMDZlYzRmNWJkYjMxMTFl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0x
ODYsNyArMTg2LDggQEAgdm9pZCBzZXRET01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb25Db2RlIGVjKQogICAgIGlmICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChlYyA9PSBOQVRJVkVfVFlQRV9FUlIpIHsKKyAgICAvLyBG
SVhNRTogSGFuZGxlIG90aGVyIFdlYklETCBleGNlcHRpb24gdHlwZXMuCisgICAgaWYgKGVjID09
IFR5cGVFcnJvcikgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVF
eHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5j
cHAKaW5kZXggMTFhM2IwOWMwNWMyNmVmNjdjYmRkYmQyYzFhNGU5ZTRmYmM5ZjMwNy4uZGNlNTgz
YTU2NTJkOTY5YjZlMzM0YzA3ODY0NmNmYjM4Zjc2MTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gRGF0ZUV4dGVuc2lvbjo6U2V0dXAoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IERhdGVFeHRlbnNpb246Ok9uU2xlZXBEZXRl
Y3RlZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIHJldHVybiB0aHJvd0Vycm9y
KEdlbmVyYWxFcnJvciwgIlRvbyBtdWNoIHRpbWUgc3BlbnQgaW4gdW5sb2FkIGhhbmRsZXIuIiwg
YXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0aHJvd0Vycm9yKHY4R2VuZXJhbEVycm9y
LCAiVG9vIG11Y2ggdGltZSBzcGVudCBpbiB1bmxvYWQgaGFuZGxlci4iLCBhcmdzLkdldElzb2xh
dGUoKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L05QVjhPYmplY3QuY3BwCmluZGV4IDJmMjczZTEyYzUyMjZkYjc2ZjQzYmM2MzNlMDdm
NDE0NTYxMDUxOTguLmU5NDFlNjMxZjlhMDE0MDYwMTY2NDkxZGFmZDlkNjAzMWExNjE4NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1
LDcgQEAgdm9pZCBfTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IE5Q
VVRGOCAqbWVzc2FnZSkKICAgICBpZiAoIW5wT2JqZWN0IHx8IG5wT2JqZWN0LT5fY2xhc3MgIT0g
bnBTY3JpcHRPYmplY3RDbGFzcykgewogICAgICAgICAvLyBXZSB3b24ndCBiZSBhYmxlIHRvIGZp
bmQgYSBwcm9wZXIgc2NvcGUgZm9yIHRoaXMgZXhjZXB0aW9uLCBzbyBqdXN0IHRocm93IGl0Lgog
ICAgICAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBKU0MsIHdoaWNoIHRocm93cyBhIGds
b2JhbCBleGNlcHRpb24gYWxsIHRoZSB0aW1lLgotICAgICAgICB0aHJvd0Vycm9yKEdlbmVyYWxF
cnJvciwgbWVzc2FnZSk7CisgICAgICAgIHRocm93RXJyb3IodjhHZW5lcmFsRXJyb3IsIG1lc3Nh
Z2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIF9OUE5fU2V0RXhjZXB0aW9uKE5QT2JqZWN0
KiBucE9iamVjdCwgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBzY29wZShjb250ZXh0KTsKICAgICBFeGNlcHRpb25DYXRjaGVyIGV4Y2VwdGlvbkNhdGNoZXI7
CiAKLSAgICB0aHJvd0Vycm9yKEdlbmVyYWxFcnJvciwgbWVzc2FnZSk7CisgICAgdGhyb3dFcnJv
cih2OEdlbmVyYWxFcnJvciwgbWVzc2FnZSk7CiB9CiAKIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQ
IG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50
MzJfdCogY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRl
eCBiYTMxNzMzZjZjYjVhODgyMGY3NWU3ZDEzYzQyODlhZWIwY2VlNTY0Li5lNTBkNDY0ZjA1MDg0
YjMwNGEwMDcxMjk5MzA3ODA5ZGIxMjYwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNl
dERPTUV4Y2VwdGlvbihpbnQgZXhjZXB0aW9uQ29kZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAg
ICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihleGNlcHRpb25Db2Rl
LCBpc29sYXRlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJyb3IoRXJyb3JU
eXBlIGVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcihWOEVycm9yVHlwZSBlcnJvclR5cGUs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHJldHVy
biBWOFRocm93RXhjZXB0aW9uOjp0aHJvd0Vycm9yKGVycm9yVHlwZSwgbWVzc2FnZSwgaXNvbGF0
ZSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgYm9vbCBoYW5kbGVPdXRPZk1lbW9yeSgpCiAKIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IGhhbmRsZU1heFJlY3Vyc2lvbkRlcHRoRXhjZWVkZWQoKQogewot
ICAgIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2Vl
ZGVkLiIpOworICAgIHRocm93RXJyb3IodjhSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0YWNr
IHNpemUgZXhjZWVkZWQuIik7CiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggMzhiOWUzMjliMWM3
N2EyNTM1MjhjNzdhMDQzNGZlOGJkNWY3MmZjZC4uZDllMzc2ODkzY2QxMjYyYWUyYWVhODU1OGRk
NDgxODQ5NzA3OWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAg
LTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBzZXRET01FeGNlcHRpb24oaW50LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgLy8gU2NoZWR1
bGUgYSBKYXZhU2NyaXB0IGVycm9yIHRvIGJlIHRocm93bi4KLSAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdGhyb3dFcnJvcihFcnJvclR5cGUsIGNvbnN0IGNoYXIqLCB2ODo6SXNvbGF0ZSogPSAw
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcihWOEVycm9yVHlwZSwgY29u
c3QgY2hhciosIHY4OjpJc29sYXRlKiA9IDApOwogCiAgICAgLy8gU2NoZWR1bGUgYSBKYXZhU2Ny
aXB0IGVycm9yIHRvIGJlIHRocm93bi4KICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dF
cnJvcih2ODo6TG9jYWw8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqID0gMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IDE5YWJkOWU3MGYxYmJiNDg4ZDcx
OTNkNzVkZWFlMmJmYWUxYjU3ZDMuLmI1YTIxYzBlOGM5MmQ4NzY2ODg2ZmMxMmQzMTU1NjYyYmNh
M2MxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCkBAIC04
OSwxNCArODksMTQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEludm9r
ZUltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgSW52b2sKICAgICAgICAgLy8gVGhlIGhv
bGRlciBvYmplY3QgaXMgbm90IGEgc3VidHlwZSBvZiBIVE1MUGx1Z0luRWxlbWVudCwgaXQgbXVz
dCBiZSBhbiBOUE9iamVjdCB3aGljaCBoYXMgdGhyZWUKICAgICAgICAgLy8gaW50ZXJuYWwgZmll
bGRzLgogICAgICAgICBpZiAoYXJncy5Ib2xkZXIoKS0+SW50ZXJuYWxGaWVsZENvdW50KCkgIT0g
bnBPYmplY3RJbnRlcm5hbEZpZWxkQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihSZWZlcmVuY2VFcnJvciwgIk5QTWV0aG9kIGNhbGxlZCBvbiBub24tTlBPYmplY3QiLCBhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJlZmVyZW5j
ZUVycm9yLCAiTlBNZXRob2QgY2FsbGVkIG9uIG5vbi1OUE9iamVjdCIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKIAogICAgICAgICBucE9iamVjdCA9IHY4T2JqZWN0VG9OUE9iamVjdChhcmdzLkhvbGRl
cigpKTsKICAgICB9CiAKICAgICAvLyBWZXJpZnkgdGhhdCBvdXIgd3JhcHBlciB3YXNuJ3QgdXNp
bmcgYSBOUE9iamVjdCB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQuCiAgICAgaWYgKCFu
cE9iamVjdCB8fCAhX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoUmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmpl
Y3QgZGVsZXRlZCIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIC8vIFdyYXAgdXAgcGFyYW1l
dGVycy4KICAgICBpbnQgbnVtQXJncyA9IGFyZ3MuTGVuZ3RoKCk7CkBAIC0xMzAsNyArMTMwLDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEludm9rZUltcGwoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgSW52b2sKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAg
ICAgICAgdGhyb3dFcnJvcihHZW5lcmFsRXJyb3IsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBO
UE9iamVjdC4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHRocm93RXJyb3IodjhHZW5l
cmFsRXJyb3IsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUFyZ3M7IGkrKykKICAgICAg
ICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZucEFyZ3NbaV0pOwpAQCAtMjA5LDEyICsyMDks
MTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEdldFByb3BlcnR5KHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKICAgICAvLyBWZXJpZnkgdGhhdCBvdXIgd3Jh
cHBlciB3YXNuJ3QgdXNpbmcgYSBOUE9iamVjdCB3aGljaAogICAgIC8vIGhhcyBhbHJlYWR5IGJl
ZW4gZGVsZXRlZC4KICAgICBpZiAoIW5wT2JqZWN0IHx8ICFfTlBOX0lzQWxpdmUobnBPYmplY3Qp
KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRl
bGV0ZWQiLCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSZWZlcmVuY2VF
cnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKIAogCiAgICAgaWYgKG5wT2JqZWN0
LT5fY2xhc3MtPmhhc1Byb3BlcnR5ICYmIG5wT2JqZWN0LT5fY2xhc3MtPmdldFByb3BlcnR5ICYm
IG5wT2JqZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5KG5wT2JqZWN0LCBpZGVudGlmaWVyKSkgewog
ICAgICAgICBpZiAoIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE9iamVj
dCBkZWxldGVkIiwgaXNvbGF0ZSk7CiAKICAgICAgICAgTlBWYXJpYW50IHJlc3VsdDsKICAgICAg
ICAgVk9JRF9UT19OUFZBUklBTlQocmVzdWx0KTsKQEAgLTIzMCwxMSArMjMwLDExIEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9wZXJ0eSh2ODo6TG9jYWw8djg6
Ok9iamVjdD4gc2VsZiwgTlBJCiAgICAgfQogCiAgICAgaWYgKCFfTlBOX0lzQWxpdmUobnBPYmpl
Y3QpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihSZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0
IGRlbGV0ZWQiLCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhSZWZlcmVu
Y2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKIAogICAgIGlmIChrZXktPklz
U3RyaW5nKCkgJiYgbnBPYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kICYmIG5wT2JqZWN0LT5fY2xh
c3MtPmhhc01ldGhvZChucE9iamVjdCwgaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKCFfTlBO
X0lzQWxpdmUobnBPYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmVmZXJl
bmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgaXNvbGF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xh
dGUpOwogCiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9IHN0YXRpY19jYXN0PFByaXZh
dGVJZGVudGlmaWVyKj4oaWRlbnRpZmllcik7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gVjhOUFRlbXBsYXRlTWFwOjpzaGFy
ZWRJbnN0YW5jZSgpLmdldChpZCk7CkBAIC0yOTIsMTMgKzI5MiwxMyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0U2V0UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+
IHNlbGYsIE5QSQogCiAgICAgLy8gVmVyaWZ5IHRoYXQgb3VyIHdyYXBwZXIgd2Fzbid0IHVzaW5n
IGEgTlBPYmplY3Qgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBP
YmplY3QgfHwgIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcihS
ZWZlcmVuY2VFcnJvciwgIk5QT2JqZWN0IGRlbGV0ZWQiLCBpc29sYXRlKTsKKyAgICAgICAgdGhy
b3dFcnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUpOwog
ICAgICAgICByZXR1cm4gdmFsdWU7ICAvLyBJbnRlcmNlcHRlZCwgYnV0IGFuIGV4Y2VwdGlvbiB3
YXMgdGhyb3duLgogICAgIH0KIAogICAgIGlmIChucE9iamVjdC0+X2NsYXNzLT5oYXNQcm9wZXJ0
eSAmJiBucE9iamVjdC0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAmJiBucE9iamVjdC0+X2NsYXNzLT5o
YXNQcm9wZXJ0eShucE9iamVjdCwgaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKCFfTlBOX0lz
QWxpdmUobnBPYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmVmZXJlbmNl
RXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgaXNvbGF0ZSk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcih2OFJlZmVyZW5jZUVycm9yLCAiTlBPYmplY3QgZGVsZXRlZCIsIGlzb2xhdGUp
OwogCiAgICAgICAgIE5QVmFyaWFudCBucFZhbHVlOwogICAgICAgICBWT0lEX1RPX05QVkFSSUFO
VChucFZhbHVlKTsKQEAgLTM0NCw3ICszNDQsNyBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gbnBP
YmplY3RQcm9wZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgYgog
ICAgIC8vIFZlcmlmeSB0aGF0IG91ciB3cmFwcGVyIHdhc24ndCB1c2luZyBhIE5QT2JqZWN0IHdo
aWNoCiAgICAgLy8gaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLgogICAgIGlmICghbnBPYmplY3Qg
fHwgIV9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIHRocm93RXJyb3IoUmVmZXJlbmNl
RXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICB0
aHJvd0Vycm9yKHY4UmVmZXJlbmNlRXJyb3IsICJOUE9iamVjdCBkZWxldGVkIiwgaW5mby5HZXRJ
c29sYXRlKCkpOwogCiAgICAgaWYgKE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0hBU19FTlVNKG5w
T2JqZWN0LT5fY2xhc3MpICYmIG5wT2JqZWN0LT5fY2xhc3MtPmVudW1lcmF0ZSkgewogICAgICAg
ICB1aW50MzJfdCBjb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4VGhyb3dFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJv
d0V4Y2VwdGlvbi5jcHAKaW5kZXggZjBhZGMwMTJmNjRlYzM3NjQ2OWVkZTM0YWVkOWZmODk5YmJi
MWY3OS4uMGMxNTZlMzVhOGZhYzEzODQxMTRlZDIwZTg1MjlmMDVkY2Y3ZmUwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHAKQEAgLTUzLDcg
KzUzLDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4
Y2VwdGlvbihpbnQgZWMsIHY4OjpJc29sYXRlKiBpc28KICAgICBpZiAoZWMgPD0gMCB8fCB2ODo6
Vjg6OklzRXhlY3V0aW9uVGVybWluYXRpbmcoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKLSAgICBpZiAoZWMgPT0gTkFUSVZFX1RZUEVfRVJSKQorICAgIC8vIEZJWE1FOiBIYW5k
bGUgb3RoZXIgV2ViSURMIGV4Y2VwdGlvbiB0eXBlcy4KKyAgICBpZiAoZWMgPT0gVHlwZUVycm9y
KQogICAgICAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dUeXBlRXJyb3IoMCwgaXNv
bGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwpA
QCAtNzcsMTggKzc4LDE4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9u
OjpzZXRET01FeGNlcHRpb24oaW50IGVjLCB2ODo6SXNvbGF0ZSogaXNvCiAKICN1bmRlZiBUUllf
VE9fQ1JFQVRFX0VYQ0VQVElPTgogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2Vw
dGlvbjo6dGhyb3dFcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlv
bjo6dGhyb3dFcnJvcihWOEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFJhbmdl
RXJyb3I6CisgICAgY2FzZSB2OFJhbmdlRXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dF
eGNlcHRpb24odjg6OkV4Y2VwdGlvbjo6UmFuZ2VFcnJvcih2OFN0cmluZyhtZXNzYWdlLCBpc29s
YXRlKSkpOwotICAgIGNhc2UgUmVmZXJlbmNlRXJyb3I6CisgICAgY2FzZSB2OFJlZmVyZW5jZUVy
cm9yOgogICAgICAgICByZXR1cm4gdjg6OlRocm93RXhjZXB0aW9uKHY4OjpFeGNlcHRpb246OlJl
ZmVyZW5jZUVycm9yKHY4U3RyaW5nKG1lc3NhZ2UsIGlzb2xhdGUpKSk7Ci0gICAgY2FzZSBTeW50
YXhFcnJvcjoKKyAgICBjYXNlIHY4U3ludGF4RXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhy
b3dFeGNlcHRpb24odjg6OkV4Y2VwdGlvbjo6U3ludGF4RXJyb3IodjhTdHJpbmcobWVzc2FnZSwg
aXNvbGF0ZSkpKTsKLSAgICBjYXNlIFR5cGVFcnJvcjoKKyAgICBjYXNlIHY4VHlwZUVycm9yOgog
ICAgICAgICByZXR1cm4gdjg6OlRocm93RXhjZXB0aW9uKHY4OjpFeGNlcHRpb246OlR5cGVFcnJv
cih2OFN0cmluZyhtZXNzYWdlLCBpc29sYXRlKSkpOwotICAgIGNhc2UgR2VuZXJhbEVycm9yOgor
ICAgIGNhc2UgdjhHZW5lcmFsRXJyb3I6CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNlcHRp
b24odjg6OkV4Y2VwdGlvbjo6RXJyb3IodjhTdHJpbmcobWVzc2FnZSwgaXNvbGF0ZSkpKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTk4LDEyICs5OSwx
MiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dFcnJvcihF
cnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhU
aHJvd0V4Y2VwdGlvbjo6dGhyb3dUeXBlRXJyb3IoY29uc3QgY2hhciogbWVzc2FnZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRpb246OnRocm93RXJy
b3IoVHlwZUVycm9yLCAobWVzc2FnZSA/IG1lc3NhZ2UgOiAiVHlwZSBlcnJvciIpLCBpc29sYXRl
KTsKKyAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dFcnJvcih2OFR5cGVFcnJvciwg
KG1lc3NhZ2UgPyBtZXNzYWdlIDogIlR5cGUgZXJyb3IiKSwgaXNvbGF0ZSk7CiB9CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFRocm93RXhjZXB0
aW9uOjp0aHJvd0Vycm9yKFR5cGVFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgaXNvbGF0
ZSk7CisgICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRpb246OnRocm93RXJyb3IodjhUeXBlRXJyb3Is
ICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIGlzb2xhdGUpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhUaHJvd0V4Y2VwdGlvbjo6dGhyb3dFcnJvcih2ODo6TG9jYWw8djg6OlZhbHVlPiBl
eGNlcHRpb24sIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5oCmluZGV4IDRmNTNkMjI4MjI3Mzk4ODAyN2RmNTAxZjNl
NDU2YTdhOWRjZWRiNTguLjJmNDZhZmEyOGMzNDQ3NzAyYTk1NmQwOTkxN2YwZmIwZjQyNjdhMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmgKQEAg
LTI5LDE5ICsyOSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gRXJyb3JUeXBl
IHsKLSAgICBSYW5nZUVycm9yLAotICAgIFJlZmVyZW5jZUVycm9yLAotICAgIFN5bnRheEVycm9y
LAotICAgIFR5cGVFcnJvciwKLSAgICBHZW5lcmFsRXJyb3IKK2VudW0gVjhFcnJvclR5cGUgewor
ICAgIHY4UmFuZ2VFcnJvciwKKyAgICB2OFJlZmVyZW5jZUVycm9yLAorICAgIHY4U3ludGF4RXJy
b3IsCisgICAgdjhUeXBlRXJyb3IsCisgICAgdjhHZW5lcmFsRXJyb3IKIH07CiAKIGNsYXNzIFY4
VGhyb3dFeGNlcHRpb24gewogcHVibGljOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc2V0RE9NRXhjZXB0aW9uKGludCwgdjg6Oklzb2xhdGUqKTsKIAotICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcihFcnJvclR5cGUsIGNvbnN0IGNoYXIqLCB2ODo6
SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJy
b3IoVjhFcnJvclR5cGUsIGNvbnN0IGNoYXIqLCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJyb3Iodjg6OkxvY2FsPHY4OjpWYWx1ZT4s
IHY4OjpJc29sYXRlKiA9IDApOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
aHJvd1R5cGVFcnJvcihjb25zdCBjaGFyKiA9IDAsIHY4OjpJc29sYXRlKiA9IDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHAKaW5kZXggNjRhOTczNWY1OWI2N2NlM2EwNjhjMGIwZGFjMDQ0ZDVmMTRjMTBm
Ni4uNTA2NWFkOGNhYzdlZDUzMzI2ZDYyNmI3ZWVmY2Q0MDFhODhjMzlkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgU2NyaXB0VmFsdWUgV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgU3QKICAg
ICAgICAgc3RhdGUtPmxpbmVOdW1iZXIgPSBtZXNzYWdlLT5HZXRMaW5lTnVtYmVyKCk7CiAgICAg
ICAgIHN0YXRlLT5zb3VyY2VVUkwgPSB0b1dlYkNvcmVTdHJpbmcobWVzc2FnZS0+R2V0U2NyaXB0
UmVzb3VyY2VOYW1lKCkpOwogICAgICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5zYW5pdGl6ZVNj
cmlwdEVycm9yKHN0YXRlLT5lcnJvck1lc3NhZ2UsIHN0YXRlLT5saW5lTnVtYmVyLCBzdGF0ZS0+
c291cmNlVVJMKSkKLSAgICAgICAgICAgIHN0YXRlLT5leGNlcHRpb24gPSB0aHJvd0Vycm9yKEdl
bmVyYWxFcnJvciwgc3RhdGUtPmVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIHN0YXRlLT5leGNlcHRpb24gPSB0aHJvd0Vycm9yKHY4R2VuZXJhbEVycm9yLCBzdGF0ZS0+
ZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBz
dGF0ZS0+ZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoZXhjZXB0aW9uQ2F0Y2hlci5FeGNlcHRpb24o
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFy
cmF5QnVmZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFycmF5QnVmZmVyQ3VzdG9tLmNwcAppbmRleCA1OGUxZGRjZTEwNWFlN2NkMzQ2MTEzM2Q0MmJk
ZDk2ZDNkYzI5NmE2Li5hNDQ4ZTMxMmVmZDYwMTFlMjY5NmM2NzRmMzFhMjhlZmJmNzE1ZmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJy
YXlCdWZmZXJDdXN0b20uY3BwCkBAIC03OSw3ICs3OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyCiAgICAgaWYgKGxlbmd0aCA+PSAwKQogICAgICAgICBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpLCAxKTsKICAgICBpZiAoIWJ1ZmZl
ci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIkFycmF5QnVm
ZmVyIHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIiwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsICJB
cnJheUJ1ZmZlciBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBidWZmZXItPnNldERlYWxsb2NhdGlvbk9ic2VydmVy
KFY4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFuY2UoKSk7CiAgICAgdjg6
OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKICAgICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmpl
Y3QgZm9yIHRoZSBhcnJheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKaW5kZXggOTBmMDk4Yjc3NGQ5
NTlkNTUwZjUwZDU4MDM0YTgxNDAzOGEwNWU4Yi4uZjliZWIzOWU0ZTNlOWZjZjk5MTM4YTdlNzM3
MGMwYTkzNmZiOGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKQEAgLTgyLDE2ICs4MiwxNiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJheVdpdGhBcnJheUJ1ZmZl
ckFyZ3VtZW50KGNvbnN0IHY4OjpBcmd1bQogICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCAyIHRvIGEgbnVtYmVyIiwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgoYnVmLT5ieXRlTGVuZ3RoKCkg
LSBvZmZzZXQpICUgc2l6ZW9mKEVsZW1lbnRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFJhbmdlRXJyb3IsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZz
ZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZS4iLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsICJBcnJh
eUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2Yg
dGhlIGVsZW1lbnQgc2l6ZS4iLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGxlbmd0aCA9
IChidWYtPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgLyBzaXplb2YoRWxlbWVudFR5cGUpOwogICAg
IH0KIAogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDwgMCkKLSAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFyZ2VT
aXplLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBSZWZQdHI8QXJyYXlDbGFzcz4gYXJyYXkg
PSBBcnJheUNsYXNzOjpjcmVhdGUoYnVmLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgaWYgKCFhcnJh
eSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJv
ciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1cm4gd3JhcEFy
cmF5QnVmZmVyVmlldyhhcmdzLCB0eXBlLCBhcnJheSwgYXJyYXlUeXBlLCBoYXNJbmRleGVyKTsK
IH0KQEAgLTE0OSwxMSArMTQ5LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RX
ZWJHTEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgICAg
IHVpbnQzMl90IGxlbmd0aCA9IHNvdXJjZS0+bGVuZ3RoKCk7CiAKICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PGludDMyX3Q+KGxlbmd0aCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsIHRvb0xhcmdlU2l6ZSwgYXJncy5H
ZXRJc29sYXRlKCkpOwogCiAgICAgICAgIFJlZlB0cjxBcnJheUNsYXNzPiBhcnJheSA9IEFycmF5
Q2xhc3M6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICAgICAgaWYgKCFhcnJheS5n
ZXQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJhbmdlRXJyb3IsIHRvb0xhcmdl
U2l6ZSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
djhSYW5nZUVycm9yLCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAg
ICBhcnJheS0+YnVmZmVyKCktPnNldERlYWxsb2NhdGlvbk9ic2VydmVyKFY4QXJyYXlCdWZmZXJE
ZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFuY2UoKSk7CiAgICAgICAgIHY4OjpWODo6QWRqdXN0
QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKQEAg
LTE4Myw3ICsxODMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJh
eShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVyVHlwZQogICAgIH0KIAogICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQzMl90PihsZW4pIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAKICAgICBSZWZQdHI8QXJyYXlDbGFzcz4gYXJyYXk7CiAgICAgaWYgKGRvSW5z
dGFudGlhdGlvbikgewpAQCAtMTk0LDcgKzE5NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
b25zdHJ1Y3RXZWJHTEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBl
CiAgICAgfQogCiAgICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgdG9vTGFyZ2VTaXplLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAKICAgICBpZiAoZG9JbnN0YW50aWF0aW9uKSB7CiAgICAgICAgIGFycmF5LT5i
dWZmZXIoKS0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlv
bk9ic2VydmVyOjppbnN0YW5jZSgpKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc2V0V2ViR0xBcnJheUhlbHBlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAyKQogICAgICAgICAgICAgb2Zmc2V0ID0gdG9V
SW50MzIoYXJnc1sxXSk7CiAgICAgICAgIGlmICghaW1wbC0+c2V0KHNyYywgb2Zmc2V0KSkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFJhbmdlRXJyb3IsIG91dE9mUmFuZ2VMZW5ndGhB
bmRPZmZzZXQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKHY4UmFuZ2VFcnJvciwgb3V0T2ZSYW5nZUxlbmd0aEFuZE9mZnNldCwgYXJncy5HZXRJc29s
YXRlKCkpOwogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRXZWJHTEFycmF5SGVscGVyKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgICAgICBvZmZzZXQgPSB0b1VJbnQzMihh
cmdzWzFdKTsKICAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdG9VSW50MzIoYXJyYXktPkdldCh2
ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKSk7CiAgICAgICAgIGlmICghaW1wbC0+Y2hlY2tJbmJv
dW5kRGF0YShvZmZzZXQsIGxlbmd0aCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihS
YW5nZUVycm9yLCBvdXRPZlJhbmdlTGVuZ3RoQW5kT2Zmc2V0LCBhcmdzLkdldElzb2xhdGUoKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFJhbmdlRXJyb3IsIG91dE9mUmFuZ2VM
ZW5ndGhBbmRPZmZzZXQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgYm9vbCBjb3BpZWQg
PSBjb3B5RWxlbWVudHMoYXJncy5Ib2xkZXIoKSwgYXJyYXksIGxlbmd0aCwgb2Zmc2V0LCBhcmdz
LkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlmICghY29waWVkKSB7CiAgICAgICAgICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRl
eCAwMWE4Y2E3YmRlMTQzZmM4MTIwZmY4ZTExMWI0ZDhmMDI1MDg4N2Y1Li4wZjJiMDI5MzM1ZmU0
NjU3YTA0MDBiYjg0MmY4ZWRkNjlhMjg4ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgaWYgKGVjKQogICAg
ICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFN5bnRheEVycm9yLCAiYXVkaW8gcmVzb3VyY2VzIHVuYXZhaWxhYmxlIGZvciBBdWRp
b0NvbnRleHQgY29uc3RydWN0aW9uIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgImF1ZGlvIHJlc291cmNlcyB1bmF2YWls
YWJsZSBmb3IgQXVkaW9Db250ZXh0IGNvbnN0cnVjdGlvbiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAocmVuZGVy
LXRhcmdldCkgQXVkaW9Db250ZXh0IHdoaWNoIHJlbmRlcnMgaW50byBhbiBBdWRpb0J1ZmZlci4K
ICAgICAgICAgLy8gbmV3IEF1ZGlvQ29udGV4dChpbiB1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hh
bm5lbHMsIGluIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIGluIGZsb2F0IHNhbXBsZVJh
dGUpOwpAQCAtNzEsMTUgKzcxLDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29u
dGV4dDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAKICAgICAg
ICAgaW50MzJfdCBudW1iZXJPZkNoYW5uZWxzID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CiAgICAg
ICAgIGlmICghb2sgfHwgbnVtYmVyT2ZDaGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMg
PiAxMCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAiSW52YWxp
ZCBudW1iZXIgb2YgY2hhbm5lbHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5l
bHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICAgICAgaW50MzJfdCBudW1iZXJPZkZyYW1l
cyA9IHRvSW50MzIoYXJnc1sxXSwgb2spOwogICAgICAgICBpZiAoIW9rIHx8IG51bWJlck9mRnJh
bWVzIDw9IDApCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIklu
dmFsaWQgbnVtYmVyIG9mIGZyYW1lcyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4RXJyb3IsICJJbnZhbGlkIG51bWJlciBvZiBmcmFt
ZXMiLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRv
RmxvYXQoYXJnc1syXSk7CiAgICAgICAgIGlmIChzYW1wbGVSYXRlIDw9IDApCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIkludmFsaWQgc2FtcGxlIHJhdGUiLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRh
eEVycm9yLCAiSW52YWxpZCBzYW1wbGUgcmF0ZSIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgYXVkaW9Db250ZXh0ID0gQXVkaW9D
b250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywg
bnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUsIGVjKTsKQEAgLTg4LDcgKzg4LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGEKICAgICB9CiAKICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU3ludGF4RXJyb3IsICJFcnJvciBjcmVhdGluZyBB
dWRpb0NvbnRleHQiLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKHY4U3ludGF4RXJyb3IsICJFcnJvciBjcmVhdGluZyBBdWRpb0NvbnRleHQiLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgCiAgICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdy
YXBwZXIgb2JqZWN0IGZvciB0aGUgYXVkaW8gY29udGV4dC4KICAgICBWOERPTVdyYXBwZXI6OnNl
dERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIGF1ZGlvQ29udGV4dC5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3Bw
CmluZGV4IDcxZjE2MmFlYzgwNWEyYTczOTNiNTYyZWUwMDlkZjZmMDRmZmNmOGQuLjhjMmE5YzRl
YmQzYzQ2YjY1ODMxOTI4MjkwYjU4MjU4NWFlNTdhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCkBAIC05Niw3ICs5Niw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgaWYgKHRyeUNhdGNoVHlwZS5IYXNDYXVnaHQo
KSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoVHlwZS5FeGNlcHRpb24o
KSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoIXR5cGUuY29udGFpbnNPbmx5QVND
SUkoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAidHlwZSBt
dXN0IGNvbnNpc3Qgb2YgQVNDSUkgY2hhcmFjdGVycyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4RXJyb3IsICJ0eXBlIG11c3QgY29u
c2lzdCBvZiBBU0NJSSBjaGFyYWN0ZXJzIiwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICB0
eXBlLm1ha2VMb3dlcigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKaW5kZXggZmNhODk5MTExZjhl
NjY0MWZkYmQyYWUxMTVmNmI5M2RhMjZlZTdiYi4uNGRjZGQ3ZTUxNmE1NmM4NjFkNjRlNWQ2M2Nh
ZmEyNjA2YjQ5Y2U2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICB9CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAxKQotICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgImNsZWFyRGF0YTogSW52YWxpZCBu
dW1iZXIgb2YgYXJndW1lbnRzIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiY2xlYXJEYXRhOiBJbnZhbGlkIG51bWJlciBvZiBh
cmd1bWVudHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBTdHJpbmcgdHlwZSA9IHRvV2Vi
Q29yZVN0cmluZyhhcmdzWzBdKTsKICAgICBjbGlwYm9hcmQtPmNsZWFyRGF0YSh0eXBlKTsKQEAg
LTg4LDcgKzg4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREcmFn
SW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIAogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDMpCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFN5bnRheEVycm9yLCAic2V0RHJhZ0ltYWdlOiBJbnZhbGlkIG51bWJl
ciBvZiBhcmd1bWVudHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHY4U3ludGF4RXJyb3IsICJzZXREcmFnSW1hZ2U6IEludmFsaWQgbnVtYmVyIG9mIGFy
Z3VtZW50cyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGludCB4ID0gdG9JbnQzMihhcmdz
WzFdKTsKICAgICBpbnQgeSA9IHRvSW50MzIoYXJnc1syXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5k
ZXggM2U4MDhjMDM3YjgwMTYzZDlmZDYzMTIzYzhlOGU0M2RmZjgzMGIxOC4uODZmMjhmMTdmODBi
YjE5YjdlNDVlYjc0ZGJhZDhhYjFkZTllYWViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNjQs
NyArNjQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBJTkNfU1RBVFMoIkRPTS5Gb3Jt
RGF0YS5hcHBlbmQoKSIpOwogICAgIAogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhF
cnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAg
RE9NRm9ybURhdGEqIGRvbUZvcm1EYXRhID0gVjhET01Gb3JtRGF0YTo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggNzA5MTFk
YTEyMTYxYzI4YTFjZmE3ODhiMzhmZTc5MTY2Y2I3ZWRlZS4uNTg5OTQ5NDEwMTY1ZjU1MDIzMjg0
ZTJiYzU3OTczM2I0YmEwYzA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMUmVzdWx0U2V0Um93
TGlzdDo6aXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICBJTkNfU1RBVFMo
IkRPTS5TUUxSZXN1bHRTZXRSb3dMaXN0Lml0ZW0oKSIpOwogCiAgICAgaWYgKCFhcmdzLkxlbmd0
aCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTeW50YXhFcnJvciwgIkl0ZW0gaW5kZXgg
aXMgcmVxdWlyZWQuIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcih2OFN5bnRheEVycm9yLCAiSXRlbSBpbmRleCBpcyByZXF1aXJlZC4iLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAKICAgICBpZiAoIWFyZ3NbMF0tPklzTnVtYmVyKCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigiSXRlbSBpbmRleCBtdXN0IGJlIGEgbnVtYmVyLiIsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKQEAgLTUyLDcgKzUyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FM
UmVzdWx0U2V0Um93TGlzdDo6aXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKIAog
ICAgIHVuc2lnbmVkIGxvbmcgaW5kZXggPSBhcmdzWzBdLT5JbnRlZ2VyVmFsdWUoKTsKICAgICBp
ZiAoaW5kZXggPj0gcm93TGlzdC0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KFJhbmdlRXJyb3IsICJJdGVtIGluZGV4IGlzIG91dCBvZiByYW5nZS4iLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4UmFuZ2VFcnJvciwgIkl0ZW0gaW5k
ZXggaXMgb3V0IG9mIHJhbmdlLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBpdGVtID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdW5zaWduZWQgbnVt
Q29sdW1ucyA9IHJvd0xpc3QtPmNvbHVtbk5hbWVzKCkuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb25Db2RlLmgKaW5kZXggMTRjNjc1OWE0ZjIyODViMDQ1YTZlMDQzN2ZjMzdhOTk1OTEwMWRl
ZS4uOTFlYTVlNTRkNGI1NWUzZDAwYzYyNTVlYThkODc0OGQ4MjRjZGY2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uQ29kZS5oCkBAIC02OCw4ICs2OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgSU5WQUxJRF9OT0RFX1RZUEVfRVJSID0gMjQsCiAgICAgICAgIERBVEFfQ0xPTkVf
RVJSID0gMjUsCiAKLSAgICAgICAgLy8gQ29udmVydGVkIHRvIGEgbmF0aXZlIFR5cGVFcnJvciBi
eSB0aGUgc2NyaXB0IGJpbmRpbmcgbGF5ZXI6Ci0gICAgICAgIE5BVElWRV9UWVBFX0VSUiA9IDk5
CisgICAgICAgIC8vIFdlYklETCBleGNlcHRpb24gdHlwZXMsIGhhbmRsZWQgYnkgdGhlIGJpbmRp
bmcgbGF5ZXIuCisgICAgICAgIC8vIEZJWE1FOiBBZGQgR2VuZXJhbEVycm9yLCBFdmFsRXJyb3Is
IGV0Yy4gd2hlbiBpbXBsZW1lbnRlZCBpbiB0aGUgYmluZGluZ3MuCisgICAgICAgIFR5cGVFcnJv
ciA9IDEwNSwKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>