<?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>112824</bug_id>
          
          <creation_ts>2013-03-20 11:10:38 -0700</creation_ts>
          <short_desc>Provide 2D Matrix decomposition for animation</short_desc>
          <delta_ts>2013-09-27 10:27:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsfiddle.net/56T5V/light/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rik Cabanier">cabanier</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>krit</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>859564</commentid>
    <comment_count>0</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-03-20 11:10:38 -0700</bug_when>
    <thetext>When you get the matrix of an object that is animated with matrices, it sometimes doesn&apos;t match what Core Animation calculated,
The attached test file shows the problem. Open the HTML, and hover over any element in row 2 or 3. The matrix of the hovered elememt is applied to the bottom object.
You will see that it doesn&apos;t match the rendering.

This also affects hit testing. If you hover over an object, the hit testing is done using the internal animation. Since the internal one scale to a point, you sometimes don&apos;t get a hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859565</commentid>
    <comment_count>1</comment_count>
      <attachid>194089</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-03-20 11:11:01 -0700</bug_when>
    <thetext>Created attachment 194089
test file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868426</commentid>
    <comment_count>2</comment_count>
      <attachid>196277</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-04-02 22:02:40 -0700</bug_when>
    <thetext>Created attachment 196277
Not for review.
Have to add test file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868436</commentid>
    <comment_count>3</comment_count>
      <attachid>196277</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-02 22:36:16 -0700</bug_when>
    <thetext>Comment on attachment 196277
Not for review.
Have to add test file.

The patch looks really interesting. Do you think you can add more descriptions what you changed and how it affected the behavior? Can you add some tests please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868462</commentid>
    <comment_count>4</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-04-02 23:33:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 196277 [details])
&gt; The patch looks really interesting. Do you think you can add more descriptions what you changed and how it affected the behavior? Can you add some tests please?

Yeah. It&apos;s not ready for review yet.
I have to think a bit and maybe simplify the code. I also need to check if z-animations match</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933329</commentid>
    <comment_count>5</comment_count>
      <attachid>212654</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-09-25 19:36:18 -0700</bug_when>
    <thetext>Created attachment 212654
Nearly ready patch

Patch mostly works. I think there is a typo somewhere.

Not for review.

Basically, swap to a 2d decomposition if we know we&apos;re 2d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933719</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-26 14:48:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/15091882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933814</commentid>
    <comment_count>7</comment_count>
      <attachid>212777</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-09-26 18:16:26 -0700</bug_when>
    <thetext>Created attachment 212777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933967</commentid>
    <comment_count>8</comment_count>
      <attachid>212817</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-09-27 09:34:44 -0700</bug_when>
    <thetext>Created attachment 212817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933975</commentid>
    <comment_count>9</comment_count>
      <attachid>212817</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-27 09:52:35 -0700</bug_when>
    <thetext>Comment on attachment 212817
Patch

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

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:298
&gt; +static bool decompose2(const TransformationMatrix::Matrix4&amp; mat, TransformationMatrix::Decomposed2Type&amp; result)

Nit: is there any reason not to spell out &quot;matrix&quot; completely?

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:308
&gt; +

Nit: you can lose the extra blank line.

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:324
&gt; +    // Renormalize matrix to remove scale.
&gt; +
&gt; +    if (result.scaleX) {

Nit: you don&apos;t need the extra blank line.

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:335
&gt; +    // Compute rotation and renormalize matrix.
&gt; +
&gt; +    result.angle = atan2(row0y, row0x);

Ditto.

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:342
&gt; +        // Thanks to the normalization above.
&gt; +        
&gt; +        double sn = -row0y;

Ditto.

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1528
&gt; +    if (!WebCore::decompose2(m_matrix, decomp))
&gt; +        return false;
&gt; +    return true;

Nit: this can be just &quot;return WebCore::decompose2(m_matrix, decomp)&quot;

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1543
&gt; +    if (!WebCore::decompose4(m_matrix, decomp))
&gt;          return false;
&gt;      return true;

And this can be &quot;return WebCore::decompose4(m_matrix, decomp)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933986</commentid>
    <comment_count>10</comment_count>
      <attachid>212817</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-09-27 10:20:17 -0700</bug_when>
    <thetext>Comment on attachment 212817
Patch

Fixed all comments. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933990</commentid>
    <comment_count>11</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-09-27 10:27:05 -0700</bug_when>
    <thetext>Committed r156553: &lt;http://trac.webkit.org/changeset/156553&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>194089</attachid>
            <date>2013-03-20 11:11:01 -0700</date>
            <delta_ts>2013-03-20 11:11:01 -0700</delta_ts>
            <desc>test file</desc>
            <filename>transform-anim.htm</filename>
            <type>text/html</type>
            <size>8447</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8IS0tIHNhdmVkIGZyb20gdXJsPSgwMDYzKWh0dHA6Ly9kYmFyb24u
b3JnL2Nzcy90ZXN0LzIwMTAvdHJhbnNpdGlvbi1uZWdhdGl2ZS1kZXRlcm1pbmFudCAtLT4NCjxo
dG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+dHJhbnNmb3JtPC90aXRsZT4NCjxzdHlsZT4NCmRp
diB7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweCB9DQpkaXYgeyBtYXJnaW46IDFlbTsgZmxv
YXQ6IGxlZnQ7IH0NCmRpdi5pbm5lciB7IG1hcmdpbjogMDsgZmxvYXQ6IG5vbmU7IGJhY2tncm91
bmQ6IGJsdWU7IGNvbG9yOiB3aGl0ZTsgfQ0KaDEgeyBjbGVhcjogYm90aCB9DQpwIHsgbWFyZ2lu
OiAwOyBiYWNrZ3JvdW5kOiBhcXVhOyBjb2xvcjogYmxhY2sgfQ0KDQpALW1vei1rZXlmcmFtZXMg
azEgIHsxMDAlIHsgIC1tb3otdHJhbnNmb3JtOiBtYXRyaXgoIDEsICAwLCAgMCwgIDEsIDAsIDAp
OyB9IH0NCkAtbW96LWtleWZyYW1lcyBrMiAgezEwMCUgeyAgLW1vei10cmFuc2Zvcm06IG1hdHJp
eCgtMSwgIDAsICAwLCAtMSwgMCwgMCk7IH0gfSANCkAtbW96LWtleWZyYW1lcyBrMyAgezEwMCUg
eyAgLW1vei10cmFuc2Zvcm06IG1hdHJpeCggMCwgIDEsIC0xLCAgMCwgMCwgMCk7IH0gfQ0KQC1t
b3ota2V5ZnJhbWVzIGs0ICB7MTAwJSB7ICAtbW96LXRyYW5zZm9ybTogbWF0cml4KCAwLCAtMSwg
IDEsICAwLCAwLCAwKTsgfSB9DQpALW1vei1rZXlmcmFtZXMgazUgIHsxMDAlIHsgIC1tb3otdHJh
bnNmb3JtOiBtYXRyaXgoIDEsICAwLCAgMCwgLTEsIDAsIDApOyB9IH0NCkAtbW96LWtleWZyYW1l
cyBrNiAgezEwMCUgeyAgLW1vei10cmFuc2Zvcm06IG1hdHJpeCgtMSwgIDAsICAwLCAgMSwgMCwg
MCk7IH0gfQ0KQC1tb3ota2V5ZnJhbWVzIGs3ICB7MTAwJSB7ICAtbW96LXRyYW5zZm9ybTogbWF0
cml4KCAwLCAgMSwgIDEsICAwLCAwLCAwKTsgfSB9DQpALW1vei1rZXlmcmFtZXMgazggIHsxMDAl
IHsgIC1tb3otdHJhbnNmb3JtOiBtYXRyaXgoIDAsIC0xLCAtMSwgIDAsIDAsIDApOyB9IH0NCkAt
bW96LWtleWZyYW1lcyBrOSAgezEwMCUgeyAgLW1vei10cmFuc2Zvcm06IG1hdHJpeCggMSwwLjUs
ICAwLCAtMSwgMCwgMCk7IH0gfQ0KQC1tb3ota2V5ZnJhbWVzIGsxMCB7MTAwJSB7ICAtbW96LXRy
YW5zZm9ybTogbWF0cml4KC0xLDAuNSwgIDAsICAxLCAwLCAwKTsgfSB9DQpALW1vei1rZXlmcmFt
ZXMgazExIHsxMDAlIHsgIC1tb3otdHJhbnNmb3JtOiBtYXRyaXgoIDAsICAxLCAgMSwwLjUsIDAs
IDApOyB9IH0NCkAtbW96LWtleWZyYW1lcyBrMTIgezEwMCUgeyAgLW1vei10cmFuc2Zvcm06IG1h
dHJpeCggMCwgLTEsIC0xLDAuNSwgMCwgMCk7IH0gfQ0KDQpkaXYjb25lICAgIGRpdi5pbm5lciB7
IC1tb3otYW5pbWF0aW9uOiBrMSAgNXMgaW5maW5pdGU7ICB9DQpkaXYjdHdvICAgIGRpdi5pbm5l
ciB7IC1tb3otYW5pbWF0aW9uOiBrMiAgNXMgaW5maW5pdGU7ICB9DQpkaXYjdGhyZWUgIGRpdi5p
bm5lciB7IC1tb3otYW5pbWF0aW9uOiBrMyAgNXMgaW5maW5pdGU7ICB9DQpkaXYjZm91ciAgIGRp
di5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrNCAgNXMgaW5maW5pdGU7ICB9DQpkaXYjZml2ZSAg
IGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrNSAgNXMgaW5maW5pdGU7ICB9DQpkaXYjc2l4
ICAgIGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrNiAgNXMgaW5maW5pdGU7ICB9DQpkaXYj
c2V2ZW4gIGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrNyAgNXMgaW5maW5pdGU7ICB9DQpk
aXYjZWlnaHQgIGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrOCAgNXMgaW5maW5pdGU7ICB9
DQpkaXYjbmluZSAgIGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrOSAgNXMgaW5maW5pdGU7
ICB9DQpkaXYjdGVuICAgIGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrMTAgNXMgaW5maW5p
dGU7ICB9DQpkaXYjZWxldmVuIGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrMTEgNXMgaW5m
aW5pdGU7ICB9DQpkaXYjdHdlbHZlIGRpdi5pbm5lciB7IC1tb3otYW5pbWF0aW9uOiBrMTIgNXMg
aW5maW5pdGU7ICB9DQoNCkAtd2Via2l0LWtleWZyYW1lcyBrMSAgezEwMCUgeyAgLXdlYmtpdC10
cmFuc2Zvcm06IG1hdHJpeCggMSwgIDAsICAwLCAgMSwgMCwgMCk7IH0gfQ0KQC13ZWJraXQta2V5
ZnJhbWVzIGsyICB7MTAwJSB7ICAtd2Via2l0LXRyYW5zZm9ybTogbWF0cml4KC0xLCAgMCwgIDAs
IC0xLCAwLCAwKTsgfSB9IA0KQC13ZWJraXQta2V5ZnJhbWVzIGszICB7MTAwJSB7ICAtd2Via2l0
LXRyYW5zZm9ybTogbWF0cml4KCAwLCAgMSwgLTEsICAwLCAwLCAwKTsgfSB9DQpALXdlYmtpdC1r
ZXlmcmFtZXMgazQgIHsxMDAlIHsgIC13ZWJraXQtdHJhbnNmb3JtOiBtYXRyaXgoIDAsIC0xLCAg
MSwgIDAsIDAsIDApOyB9IH0NCkAtd2Via2l0LWtleWZyYW1lcyBrNSAgezEwMCUgeyAgLXdlYmtp
dC10cmFuc2Zvcm06IG1hdHJpeCggMSwgIDAsICAwLCAtMSwgMCwgMCk7IH0gfQ0KQC13ZWJraXQt
a2V5ZnJhbWVzIGs2ICB7MTAwJSB7ICAtd2Via2l0LXRyYW5zZm9ybTogbWF0cml4KC0xLCAgMCwg
IDAsICAxLCAwLCAwKTsgfSB9DQpALXdlYmtpdC1rZXlmcmFtZXMgazcgIHsxMDAlIHsgIC13ZWJr
aXQtdHJhbnNmb3JtOiBtYXRyaXgoIDAsICAxLCAgMSwgIDAsIDAsIDApOyB9IH0NCkAtd2Via2l0
LWtleWZyYW1lcyBrOCAgezEwMCUgeyAgLXdlYmtpdC10cmFuc2Zvcm06IG1hdHJpeCggMCwgLTEs
IC0xLCAgMCwgMCwgMCk7IH0gfQ0KQC13ZWJraXQta2V5ZnJhbWVzIGs5ICB7MTAwJSB7ICAtd2Vi
a2l0LXRyYW5zZm9ybTogbWF0cml4KCAxLDAuNSwgIDAsIC0xLCAwLCAwKTsgfSB9DQpALXdlYmtp
dC1rZXlmcmFtZXMgazEwIHsxMDAlIHsgIC13ZWJraXQtdHJhbnNmb3JtOiBtYXRyaXgoLTEsMC41
LCAgMCwgIDEsIDAsIDApOyB9IH0NCkAtd2Via2l0LWtleWZyYW1lcyBrMTEgezEwMCUgeyAgLXdl
YmtpdC10cmFuc2Zvcm06IG1hdHJpeCggMCwgIDEsICAxLDAuNSwgMCwgMCk7IH0gfQ0KQC13ZWJr
aXQta2V5ZnJhbWVzIGsxMiB7MTAwJSB7ICAtd2Via2l0LXRyYW5zZm9ybTogbWF0cml4KCAwLCAt
MSwgLTEsMC41LCAwLCAwKTsgfSB9DQoNCmRpdiNvbmUgICAgZGl2LmlubmVyIHsgLXdlYmtpdC1h
bmltYXRpb246IGsxICA1cyBpbmZpbml0ZTsgIH0NCmRpdiN0d28gICAgZGl2LmlubmVyIHsgLXdl
YmtpdC1hbmltYXRpb246IGsyICA1cyBpbmZpbml0ZTsgIH0NCmRpdiN0aHJlZSAgZGl2LmlubmVy
IHsgLXdlYmtpdC1hbmltYXRpb246IGszICA1cyBpbmZpbml0ZTsgIH0NCmRpdiNmb3VyICAgZGl2
LmlubmVyIHsgLXdlYmtpdC1hbmltYXRpb246IGs0ICA1cyBpbmZpbml0ZTsgIH0NCmRpdiNmaXZl
ICAgZGl2LmlubmVyIHsgLXdlYmtpdC1hbmltYXRpb246IGs1ICA1cyBpbmZpbml0ZTsgIH0NCmRp
diNzaXggICAgZGl2LmlubmVyIHsgLXdlYmtpdC1hbmltYXRpb246IGs2ICA1cyBpbmZpbml0ZTsg
IH0NCmRpdiNzZXZlbiAgZGl2LmlubmVyIHsgLXdlYmtpdC1hbmltYXRpb246IGs3ICA1cyBpbmZp
bml0ZTsgIH0NCmRpdiNlaWdodCAgZGl2LmlubmVyIHsgLXdlYmtpdC1hbmltYXRpb246IGs4ICA1
cyBpbmZpbml0ZTsgIH0NCmRpdiNuaW5lICAgZGl2LmlubmVyIHsgLXdlYmtpdC1hbmltYXRpb246
IGs5ICA1cyBpbmZpbml0ZTsgIH0NCmRpdiN0ZW4gICAgZGl2LmlubmVyIHsgLXdlYmtpdC1hbmlt
YXRpb246IGsxMCA1cyBpbmZpbml0ZTsgIH0NCmRpdiNlbGV2ZW4gZGl2LmlubmVyIHsgLXdlYmtp
dC1hbmltYXRpb246IGsxMSA1cyBpbmZpbml0ZTsgIH0NCmRpdiN0d2VsdmUgZGl2LmlubmVyIHsg
LXdlYmtpdC1hbmltYXRpb246IGsxMiA1cyBpbmZpbml0ZTsgIH0NCg0KQC1tcy1rZXlmcmFtZXMg
azEgIHsxMDAlIHsgIC1tcy10cmFuc2Zvcm06IG1hdHJpeCggMSwgIDAsICAwLCAgMSwgMCwgMCk7
IH0gfQ0KQC1tcy1rZXlmcmFtZXMgazIgIHsxMDAlIHsgIC1tcy10cmFuc2Zvcm06IG1hdHJpeCgt
MSwgIDAsICAwLCAtMSwgMCwgMCk7IH0gfSANCkAtbXMta2V5ZnJhbWVzIGszICB7MTAwJSB7ICAt
bXMtdHJhbnNmb3JtOiBtYXRyaXgoIDAsICAxLCAtMSwgIDAsIDAsIDApOyB9IH0NCkAtbXMta2V5
ZnJhbWVzIGs0ICB7MTAwJSB7ICAtbXMtdHJhbnNmb3JtOiBtYXRyaXgoIDAsIC0xLCAgMSwgIDAs
IDAsIDApOyB9IH0NCkAtbXMta2V5ZnJhbWVzIGs1ICB7MTAwJSB7ICAtbXMtdHJhbnNmb3JtOiBt
YXRyaXgoIDEsICAwLCAgMCwgLTEsIDAsIDApOyB9IH0NCkAtbXMta2V5ZnJhbWVzIGs2ICB7MTAw
JSB7ICAtbXMtdHJhbnNmb3JtOiBtYXRyaXgoLTEsICAwLCAgMCwgIDEsIDAsIDApOyB9IH0NCkAt
bXMta2V5ZnJhbWVzIGs3ICB7MTAwJSB7ICAtbXMtdHJhbnNmb3JtOiBtYXRyaXgoIDAsICAxLCAg
MSwgIDAsIDAsIDApOyB9IH0NCkAtbXMta2V5ZnJhbWVzIGs4ICB7MTAwJSB7ICAtbXMtdHJhbnNm
b3JtOiBtYXRyaXgoIDAsIC0xLCAtMSwgIDAsIDAsIDApOyB9IH0NCkAtbXMta2V5ZnJhbWVzIGs5
ICB7MTAwJSB7ICAtbXMtdHJhbnNmb3JtOiBtYXRyaXgoIDEsMC41LCAgMCwgLTEsIDAsIDApOyB9
IH0NCkAtbXMta2V5ZnJhbWVzIGsxMCB7MTAwJSB7ICAtbXMtdHJhbnNmb3JtOiBtYXRyaXgoLTEs
MC41LCAgMCwgIDEsIDAsIDApOyB9IH0NCkAtbXMta2V5ZnJhbWVzIGsxMSB7MTAwJSB7ICAtbXMt
dHJhbnNmb3JtOiBtYXRyaXgoIDAsICAxLCAgMSwwLjUsIDAsIDApOyB9IH0NCkAtbXMta2V5ZnJh
bWVzIGsxMiB7MTAwJSB7ICAtbXMtdHJhbnNmb3JtOiBtYXRyaXgoIDAsIC0xLCAtMSwwLjUsIDAs
IDApOyB9IH0NCg0KZGl2I29uZSAgICBkaXYuaW5uZXIgeyAtbXMtYW5pbWF0aW9uOiBrMSAgNXMg
aW5maW5pdGU7ICB9DQpkaXYjdHdvICAgIGRpdi5pbm5lciB7IC1tcy1hbmltYXRpb246IGsyICA1
cyBpbmZpbml0ZTsgIH0NCmRpdiN0aHJlZSAgZGl2LmlubmVyIHsgLW1zLWFuaW1hdGlvbjogazMg
IDVzIGluZmluaXRlOyAgfQ0KZGl2I2ZvdXIgICBkaXYuaW5uZXIgeyAtbXMtYW5pbWF0aW9uOiBr
NCAgNXMgaW5maW5pdGU7ICB9DQpkaXYjZml2ZSAgIGRpdi5pbm5lciB7IC1tcy1hbmltYXRpb246
IGs1ICA1cyBpbmZpbml0ZTsgIH0NCmRpdiNzaXggICAgZGl2LmlubmVyIHsgLW1zLWFuaW1hdGlv
bjogazYgIDVzIGluZmluaXRlOyAgfQ0KZGl2I3NldmVuICBkaXYuaW5uZXIgeyAtbXMtYW5pbWF0
aW9uOiBrNyAgNXMgaW5maW5pdGU7ICB9DQpkaXYjZWlnaHQgIGRpdi5pbm5lciB7IC1tcy1hbmlt
YXRpb246IGs4ICA1cyBpbmZpbml0ZTsgIH0NCmRpdiNuaW5lICAgZGl2LmlubmVyIHsgLW1zLWFu
aW1hdGlvbjogazkgIDVzIGluZmluaXRlOyAgfQ0KZGl2I3RlbiAgICBkaXYuaW5uZXIgeyAtbXMt
YW5pbWF0aW9uOiBrMTAgNXMgaW5maW5pdGU7ICB9DQpkaXYjZWxldmVuIGRpdi5pbm5lciB7IC1t
cy1hbmltYXRpb246IGsxMSA1cyBpbmZpbml0ZTsgIH0NCmRpdiN0d2VsdmUgZGl2LmlubmVyIHsg
LW1zLWFuaW1hdGlvbjogazEyIDVzIGluZmluaXRlOyAgfQ0KDQo8L3N0eWxlPg0KDQo8L2hlYWQ+
PGJvZHk+PGRpdi5pbm5lcj5Ib3ZlciBvdmVyIGVhY2ggZXhhbXBsZSB0byB0cmlnZ2VyIHRoZSB0
cmFuc2l0aW9uLjxwPjwvcD4NCjxwIGlkPSJtIj5NYXRyaXggOjwvcD4NCg0KPGgxPk5vIHNrZXcs
IHBvc2l0aXZlIGRldGVybWluYW50PC9oMT4NCjxkaXYgaWQ9Im9uZSI+PGRpdiBjbGFzcz0iaW5u
ZXIiPjxwPmhlbGxvPC9wPjwvZGl2PjwvZGl2Pg0KPGRpdiBpZD0idHdvIj48ZGl2IGNsYXNzPSJp
bm5lciI+PHA+aGVsbG88L3A+PC9kaXY+PC9kaXY+DQo8ZGl2IGlkPSJ0aHJlZSI+PGRpdiBjbGFz
cz0iaW5uZXIiPjxwPmhlbGxvPC9wPjwvZGl2PjwvZGl2Pg0KPGRpdiBpZD0iZm91ciI+PGRpdiBj
bGFzcz0iaW5uZXIiPjxwPmhlbGxvPC9wPjwvZGl2PjwvZGl2Pg0KPGgxPk5vIHNrZXcsIG5lZ2F0
aXZlIGRldGVybWluYW50PC9oMT4NCjxkaXYgaWQ9ImZpdmUiPjxkaXYgY2xhc3M9ImlubmVyIj48
cD5oZWxsbzwvcD48L2Rpdj48L2Rpdj4NCjxkaXYgaWQ9InNpeCI+PGRpdiBjbGFzcz0iaW5uZXIi
PjxwPmhlbGxvPC9wPjwvZGl2PjwvZGl2Pg0KPGRpdiBpZD0ic2V2ZW4iPjxkaXYgY2xhc3M9Imlu
bmVyIj48cD5oZWxsbzwvcD48L2Rpdj48L2Rpdj4NCjxkaXYgaWQ9ImVpZ2h0Ij48ZGl2IGNsYXNz
PSJpbm5lciI+PHA+aGVsbG88L3A+PC9kaXY+PC9kaXY+DQo8aDE+U2tldywgbmVnYXRpdmUgZGV0
ZXJtaW5hbnQ8L2gxPg0KPGRpdiBpZD0ibmluZSI+PGRpdiBjbGFzcz0iaW5uZXIiPjxwPmhlbGxv
PC9wPjwvZGl2PjwvZGl2Pg0KPGRpdiBpZD0idGVuIj48ZGl2IGNsYXNzPSJpbm5lciI+PHA+aGVs
bG88L3A+PC9kaXY+PC9kaXY+DQo8ZGl2IGlkPSJlbGV2ZW4iPjxkaXYgY2xhc3M9ImlubmVyIj48
cD5oZWxsbzwvcD48L2Rpdj48L2Rpdj4NCjxkaXYgaWQ9InR3ZWx2ZSI+PGRpdiBjbGFzcz0iaW5u
ZXIiPjxwPmhlbGxvPC9wPjwvZGl2PjwvZGl2Pg0KPGgxPkFwcGxpZWQgbWF0cml4PC9oMT4NCjxk
aXYgaWQ9Inplcm8iPjxkaXYgY2xhc3M9ImlubmVyIj48cD5oZWxsbzwvcD48L2Rpdj48L2Rpdj4N
CjwvZGl2LmlubmVyPg0KDQo8c2NyaXB0Pg0KDQooZnVuY3Rpb24oKSB7DQogIHZhciByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5t
b3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1zUmVxdWVzdEFu
aW1hdGlvbkZyYW1lOw0KICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFu
aW1hdGlvbkZyYW1lOw0KfSkoKTsNCg0KdmFyIHMgPSAiLXdlYmtpdC10cmFuc2Zvcm0iOw0KdmFy
IHQgPSAid2Via2l0QW5pbWF0aW9uUGxheVN0YXRlIjsNCmlmKHdpbmRvdy5tb3pSZXF1ZXN0QW5p
bWF0aW9uRnJhbWUpDQogICBzID0gInRyYW5zZm9ybSI7DQppZih3aW5kb3cubXNSZXF1ZXN0QW5p
bWF0aW9uRnJhbWUpDQogICBzID0gIi1tcy10cmFuc2Zvcm0iOw0KaWYod2luZG93Lm1velJlcXVl
c3RBbmltYXRpb25GcmFtZSkNCiAgIHQgPSAiYW5pbWF0aW9uUGxheVN0YXRlIjsNCmlmKHdpbmRv
dy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSkNCiAgIHQgPSAibXNBbmltYXRpb25QbGF5U3RhdGUi
Ow0KICAgDQp2YXIgZGl2cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImlubmVy
Iik7DQp2YXIgcGVsZW1lbnQ9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtIik7DQp2YXIgemVy
b2Rpdj0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInplcm8iKTsNCnZhciBhY3RpdmVEaXYgPSBu
dWxsOw0KDQpmdW5jdGlvbiBzdGVwKGRpdikgew0KCWlmKCFhY3RpdmVEaXYpDQoJCXJldHVybjsN
CgkJDQoJemVyb2Rpdi5zdHlsZVtzXSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGFjdGl2ZURp
dikuZ2V0UHJvcGVydHlWYWx1ZShzKTsNCglyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7DQp9
DQoNCmZvcih2YXIgeCA9IDA7IHggPCBkaXZzLmxlbmd0aDsgeCsrKSB7DQoJZGl2cy5pdGVtKHgp
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGZ1bmN0aW9uKCl7DQoJCWlmKHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKHRoaXMpLmdldFByb3BlcnR5VmFsdWUocykgIT0gICJub25lIikgew0K
ICAJCQlwZWxlbWVudC50ZXh0Q29udGVudCA9ICJNYXRyaXg6ICIgKyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSh0aGlzKS5nZXRQcm9wZXJ0eVZhbHVlKHMpOw0KCQkJYWN0aXZlRGl2ID0gdGhpczsN
CgkJCXJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsNCgkJLy8JaWYoIXRoaXMuY2xpY2tlZCkg
dGhpcy5zdHlsZVt0XSA9ICJwYXVzZWQiOw0KCQkvLwl6ZXJvZGl2LnN0eWxlW3NdID0gd2luZG93
LmdldENvbXB1dGVkU3R5bGUodGhpcykuZ2V0UHJvcGVydHlWYWx1ZShzKTsNCgkJCQ0KCQl9DQoJ
fSwgZmFsc2UpOw0KCWRpdnMuaXRlbSh4KS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIGZ1
bmN0aW9uKCl7DQoJCWlmKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLmdldFByb3BlcnR5
VmFsdWUocykgIT0gICJub25lIikgew0KCQkJYWN0aXZlRGl2ID0gbnVsbDsNCgkJLy8JaWYoIXRo
aXMuY2xpY2tlZCkgdGhpcy5zdHlsZVt0XSA9ICJydW5uaW5nIjsNCgkJfQ0KCX0sIGZhbHNlKTsN
CgkNCglkaXZzLml0ZW0oeCkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpew0K
CQlpZih0aGlzLmNsaWNrZWQpDQoJCQl0aGlzLmNsaWNrZWQgPSBmYWxzZTsNCgkJZWxzZQ0KCQkJ
dGhpcy5jbGlja2VkID0gdHJ1ZTsNCgl9LCBmYWxzZSk7CQ0KfQ0KDQo8L3NjcmlwdD4NCg0KPC9i
b2R5PjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196277</attachid>
            <date>2013-04-02 22:02:40 -0700</date>
            <delta_ts>2013-09-26 18:16:19 -0700</delta_ts>
            <desc>Not for review.
Have to add test file.</desc>
            <filename>bug-112824-20130402220231.patch</filename>
            <type>text/plain</type>
            <size>2904</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzUxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA0LTAyICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgTWF0cml4IGludGVycG9sYXRp
b24gZG9lc24ndCBtYXRjaCBDb3JlIEFuaW1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyODI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgZGVjb21wb3NpdGlvbiBsb2dpYyBzbyBpdCBt
YXRjaGVzIENvcmUgQW5pbWF0aW9uLgorICAgIAorICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6djNNdWwpOiBBZGQgYSBoZWxwZXIgZnVu
Y3Rpb24uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY29tcG9zZSk6
IFVwZGF0ZSB0aGUgZGVjb21wb3NlIGxvZ2ljLgorCiAyMDEzLTA0LTAyICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIG5lZWRzTGVvcGFyZE1haWxRdWlya3Mgc2hv
dWxkIGJlIHJlbW92ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
Y3BwCShyZXZpc2lvbiAxNDU3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjczLDYgKzI3MywxMyBAQCBzdGF0aWMgdm9pZCB2M1NjYWxlKFZlY3RvcjMgdiwgZG91YmxlIGRl
CiAgICAgfQogfQogCitzdGF0aWMgdm9pZCB2M011bChWZWN0b3IzIHYsIGRvdWJsZSBhbW91bnQp
Cit7CisgICAgdlswXSAqPSBhbW91bnQ7CisgICAgdlsxXSAqPSBhbW91bnQ7CisgICAgdlsyXSAq
PSBhbW91bnQ7Cit9CisKIHN0YXRpYyBkb3VibGUgdjNEb3QoY29uc3QgVmVjdG9yMyBhLCBjb25z
dCBWZWN0b3IzIGIpIAogewogICAgIHJldHVybiAoYVswXSAqIGJbMF0pICsgKGFbMV0gKiBiWzFd
KSArIChhWzJdICogYlsyXSk7CkBAIC0zOTUsMjQgKzQwMiwzMCBAQCBzdGF0aWMgYm9vbCBkZWNv
bXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpCiAgICAgdjNTY2FsZShyb3dbMl0sIDEuMCk7CiAgICAg
cmVzdWx0LnNrZXdYWiAvPSByZXN1bHQuc2NhbGVaOwogICAgIHJlc3VsdC5za2V3WVogLz0gcmVz
dWx0LnNjYWxlWjsKLSAKLSAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgbWF0cml4IChpbiByb3dz
W10pIGlzIG9ydGhvbm9ybWFsLgotICAgIC8vIENoZWNrIGZvciBhIGNvb3JkaW5hdGUgc3lzdGVt
IGZsaXAuICBJZiB0aGUgZGV0ZXJtaW5hbnQKLSAgICAvLyBpcyAtMSwgdGhlbiBuZWdhdGUgdGhl
IG1hdHJpeCBhbmQgdGhlIHNjYWxpbmcgZmFjdG9ycy4KKyAgICAKICAgICB2M0Nyb3NzKHJvd1sx
XSwgcm93WzJdLCBwZHVtMyk7Ci0gICAgaWYgKHYzRG90KHJvd1swXSwgcGR1bTMpIDwgMCkgewot
Ci0gICAgICAgIHJlc3VsdC5zY2FsZVggKj0gLTE7CisgICAgaWYgKCh2M0RvdChyb3dbMF0sIHBk
dW0zKSA8IDApICYmIChyb3dbMV1bMF0gKyByb3dbMV1bMV0gKyByb3dbMV1bMl0gPD0gMCkpIHsK
ICAgICAgICAgcmVzdWx0LnNjYWxlWSAqPSAtMTsKKyAgICAgICAgcmVzdWx0LnNrZXdYWSAqPSAt
MTsKKyAgICAgICAgdjNNdWwocm93WzFdLCAtMSk7CisgICAgfQorICAgIHYzQ3Jvc3Mocm93WzFd
LCByb3dbMl0sIHBkdW0zKTsKKyAgICBpZiAoKHYzRG90KHJvd1swXSwgcGR1bTMpIDwgMCkgJiYg
KHJvd1swXVswXSArIHJvd1swXVsxXSArIHJvd1swXVsyXSA8PSAwKSkgeworICAgICAgICByZXN1
bHQuc2NhbGVYICo9IC0xOworICAgICAgICByZXN1bHQuc2tld1hZICo9IC0xOworICAgICAgICB2
M011bChyb3dbMF0sIC0xKTsKKyAgICB9CisgICAgdjNDcm9zcyhyb3dbMV0sIHJvd1syXSwgcGR1
bTMpOworICAgIGlmICgodjNEb3Qocm93WzBdLCBwZHVtMykgPCAwKSAmJiAocm93WzJdWzBdICsg
cm93WzJdWzFdICsgcm93WzJdWzJdIDw9IDApKSB7CiAgICAgICAgIHJlc3VsdC5zY2FsZVogKj0g
LTE7Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewotICAgICAgICAgICAgcm93
W2ldWzBdICo9IC0xOwotICAgICAgICAgICAgcm93W2ldWzFdICo9IC0xOwotICAgICAgICAgICAg
cm93W2ldWzJdICo9IC0xOwotICAgICAgICB9CisgICAgICAgIHYzTXVsKHJvd1syXSwgLTEpOwog
ICAgIH0KLSAKKyAgICBpZiAodjNEb3Qocm93WzBdLCBwZHVtMykgPCAwKSB7CisgICAgICAgIHJl
c3VsdC5zY2FsZVkgKj0gLTE7CisgICAgICAgIHJlc3VsdC5za2V3WFkgKj0gLTE7CisgICAgICAg
IHYzTXVsKHJvd1sxXSwgLTEpOworICAgIH0KKwogICAgIC8vIE5vdywgZ2V0IHRoZSByb3RhdGlv
bnMgb3V0LCBhcyBkZXNjcmliZWQgaW4gdGhlIGdlbS4KICAgICAKICAgICAvLyBGSVhNRSAtIEFk
ZCB0aGUgYWJpbGl0eSB0byByZXR1cm4gZWl0aGVyIHF1YXRlcm5pb25zICh3aGljaCBhcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212654</attachid>
            <date>2013-09-25 19:36:18 -0700</date>
            <delta_ts>2013-09-26 18:16:24 -0700</delta_ts>
            <desc>Nearly ready patch</desc>
            <filename>matrix.patch</filename>
            <type>text/plain</type>
            <size>34787</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCmluZGV4IDAyNTFmYzMuLjlkZTg0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAt
MjU2LDggKzI1Niw4IEBAIHN0YXRpYyBmbG9hdCBtYXhTY2FsZUZyb21UcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCiAgICAgaWYgKHQuaXNJZGVudGl0eU9yVHJhbnNsYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVj
b21wb3NlZFR5cGUgZGVjb21wb3NlRGF0YTsKLSAgICB0LmRlY29tcG9zZShkZWNvbXBvc2VEYXRh
KTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVjb21wb3NlZDRUeXBlIGRlY29tcG9zZURh
dGE7CisgICAgdC5kZWNvbXBvc2U0KGRlY29tcG9zZURhdGEpOwogICAgIHJldHVybiBzdGQ6Om1h
eChmYWJzZihkZWNvbXBvc2VEYXRhLnNjYWxlWCksIGZhYnNmKGRlY29tcG9zZURhdGEuc2NhbGVZ
KSk7CiB9CiAKQEAgLTIxNzcsMzAgKzIxNzcsMzYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZUNvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIAogYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlz
dCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7Ci0gICAgQVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgp
ICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0gJiYgKCFzdXBwb3J0c0FjY2VsZXJh
dGVkRmlsdGVyQW5pbWF0aW9ucygpIHx8IHZhbHVlTGlzdC5wcm9wZXJ0eSgpICE9IEFuaW1hdGVk
UHJvcGVydHlXZWJraXRGaWx0ZXIpKTsKLSAgICAKLSAgICBib29sIGlzS2V5ZnJhbWUgPSB2YWx1
ZUxpc3Quc2l6ZSgpID4gMjsKLSAgICBib29sIHZhbHVlc09LOwotICAgIAotICAgIGJvb2wgYWRk
aXRpdmUgPSBmYWxzZTsKLSAgICBpbnQgYW5pbWF0aW9uSW5kZXggPSAwOwotICAgIAotICAgIFJl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFuaW1hdGlvbjsKLSAgICAKLSAgICBpZiAoaXNL
ZXlmcmFtZSkgewotICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9u
KGFuaW1hdGlvbiwgcHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRk
aXRpdmUpOwotICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxp
c3QsIGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCBwcm9wZXJ0eUlk
VG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2ZSk7Ci0gICAgICAgIHZhbHVl
c09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1h
dGlvbi5nZXQoKSk7Ci0gICAgfQotICAgIAotICAgIGlmICghdmFsdWVzT0spCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJv
cGVydHlBbmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9w
ZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwotCi0gICAgcmV0dXJuIHRy
dWU7CisvLyAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybSAmJiAoIXN1cHBvcnRzQWNjZWxlcmF0ZWRGaWx0ZXJBbmltYXRpb25z
KCkgfHwgdmFsdWVMaXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRl
cikpOworLy8gICAgCisvLyAgICBib29sIGlzS2V5ZnJhbWUgPSB2YWx1ZUxpc3Quc2l6ZSgpID4g
MjsKKy8vICAgIGJvb2wgdmFsdWVzT0s7CisvLyAgICAKKy8vICAgIGJvb2wgYWRkaXRpdmUgPSBm
YWxzZTsKKy8vICAgIGludCBhbmltYXRpb25JbmRleCA9IDA7CisvLyAgICAKKy8vICAgIFJlZlB0
cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFuaW1hdGlvbjsKKy8vICAgIAorLy8gICAgaWYgKGlz
S2V5ZnJhbWUpIHsKKy8vICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0
aW9uKGFuaW1hdGlvbiwgcHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwg
YWRkaXRpdmUpOworLy8gICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKHZh
bHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CisvLyAgICB9IGVsc2Ugewor
Ly8gICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCBw
cm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2ZSk7CisvLyAg
ICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRp
b24sIGNhQW5pbWF0aW9uLmdldCgpKTsKKy8vICAgIH0KKy8vICAgIAorLy8gICAgaWYgKCF2YWx1
ZXNPSykKKy8vICAgICAgICByZXR1cm4gZmFsc2U7CisvLworLy8gICAgbV91bmNvbWl0dGVkQW5p
bWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0
aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0aW1lT2Zm
c2V0KSk7CisvLworLy8gICAgcmV0dXJuIHRydWU7CisKKyAgICBVTlVTRURfUEFSQU0odmFsdWVM
aXN0KTsKKyAgICBVTlVTRURfUEFSQU0oYW5pbWF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oYW5p
bWF0aW9uTmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQpOworICAgIHJldHVybiBm
YWxzZTsKIH0KIAogYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmlt
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGludCBhbmlt
YXRpb25JbmRleCwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24pCkBA
IC0yMjY2LDYgKzIyNzIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Z2V0VHJhbnNmb3JtRnJv
bUFuaW1hdGlvbnNXaXRoTWF4U2NhbGVJbXBhY3QoY29uc3QgVHJhbnNmbwogICAgIH0KICAgICAK
ICAgICByZXR1cm4gaGF2ZVRyYW5zZm9ybUFuaW1hdGlvbjsKKyAgICAvL3JldHVybiBmYWxzZTsK
IH0KIAogYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9t
S2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1l
T2Zmc2V0LCBjb25zdCBJbnRTaXplJiBib3hTaXplKQpAQCAtMjMxNyw3ICsyMzI0LDggQEAgYm9v
bCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KGNvbnN0IEtleWZyYW1lVmFsdWUKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB2YWxp
ZE1hdHJpY2VzOworICAgIC8vcmV0dXJuIHZhbGlkTWF0cmljZXM7CisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBlODQyMjkyLi5jZTliNWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cApAQCAtNTMsOCArNTMsOCBAQCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZgogICAgIGZyb21ULmFw
cGx5UGVyc3BlY3RpdmUoZmxvYXRWYWx1ZUZvckxlbmd0aChmcm9tUCwgMSkpOwogICAgIHRvVC5h
cHBseVBlcnNwZWN0aXZlKGZsb2F0VmFsdWVGb3JMZW5ndGgodG9QLCAxKSk7CiAgICAgdG9ULmJs
ZW5kKGZyb21ULCBwcm9ncmVzcyk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9z
ZWRUeXBlIGRlY29tcDsKLSAgICB0b1QuZGVjb21wb3NlKGRlY29tcCk7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OkRlY29tcG9zZWQ0VHlwZSBkZWNvbXA7CisgICAgdG9ULmRlY29tcG9zZTQo
ZGVjb21wKTsKIAogICAgIGlmIChkZWNvbXAucGVyc3BlY3RpdmVaKSB7CiAgICAgICAgIGRvdWJs
ZSB2YWwgPSAtMS4wIC8gZGVjb21wLnBlcnNwZWN0aXZlWjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCA5MDYzNGI3Li5hN2IzNGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC03MCw4ICs3MCw4
IEBAIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wCiAgICAgdG9ULmJsZW5kKGZyb21ULCBwcm9ncmVz
cyk7CiAgICAgCiAgICAgLy8gRXh0cmFjdCB0aGUgcmVzdWx0IGFzIGEgcXVhdGVybmlvbgotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXA7Ci0gICAgdG9ULmRl
Y29tcG9zZShkZWNvbXApOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkNFR5
cGUgZGVjb21wOworICAgIHRvVC5kZWNvbXBvc2U0KGRlY29tcCk7CiAgICAgCiAgICAgLy8gQ29u
dmVydCB0aGF0IHRvIEF4aXMvQW5nbGUgZm9ybQogICAgIGRvdWJsZSB4ID0gLWRlY29tcC5xdWF0
ZXJuaW9uWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggYmNl
Njc3Ny4uZWNkMTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDEzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMjEsNyArMjEsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCkBAIC01NCwxNiArNTQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8KIC8vIEFk
YXB0ZWQgZnJvbSBNYXRyaXggSW52ZXJzaW9uIGJ5IFJpY2hhcmQgQ2FybGluZywgR3JhcGhpY3Mg
R2VtcyA8aHR0cDovL3RvZy5hY20ub3JnL0dyYXBoaWNzR2Vtcy9pbmRleC5odG1sPi4KIAotLy8g
RVVMQTogVGhlIEdyYXBoaWNzIEdlbXMgY29kZSBpcyBjb3B5cmlnaHQtcHJvdGVjdGVkLiBJbiBv
dGhlciB3b3JkcywgeW91IGNhbm5vdCBjbGFpbSB0aGUgdGV4dCBvZiB0aGUgY29kZSAKLS8vIGFz
IHlvdXIgb3duIGFuZCByZXNlbGwgaXQuIFVzaW5nIHRoZSBjb2RlIGlzIHBlcm1pdHRlZCBpbiBh
bnkgcHJvZ3JhbSwgcHJvZHVjdCwgb3IgbGlicmFyeSwgbm9uLWNvbW1lcmNpYWwgCi0vLyBvciBj
b21tZXJjaWFsLiBHaXZpbmcgY3JlZGl0IGlzIG5vdCByZXF1aXJlZCwgdGhvdWdoIGlzIGEgbmlj
ZSBnZXN0dXJlLiBUaGUgY29kZSBjb21lcyBhcy1pcywgYW5kIGlmIHRoZXJlIAotLy8gYXJlIGFu
eSBmbGF3cyBvciBwcm9ibGVtcyB3aXRoIGFueSBHZW1zIGNvZGUsIG5vYm9keSBpbnZvbHZlZCB3
aXRoIEdlbXMgLSBhdXRob3JzLCBlZGl0b3JzLCBwdWJsaXNoZXJzLCBvciAKLS8vIHdlYm1hc3Rl
cnMgLSBhcmUgdG8gYmUgaGVsZCByZXNwb25zaWJsZS4gQmFzaWNhbGx5LCBkb24ndCBiZSBhIGpl
cmssIGFuZCByZW1lbWJlciB0aGF0IGFueXRoaW5nIGZyZWUgY29tZXMgCisvLyBFVUxBOiBUaGUg
R3JhcGhpY3MgR2VtcyBjb2RlIGlzIGNvcHlyaWdodC1wcm90ZWN0ZWQuIEluIG90aGVyIHdvcmRz
LCB5b3UgY2Fubm90IGNsYWltIHRoZSB0ZXh0IG9mIHRoZSBjb2RlCisvLyBhcyB5b3VyIG93biBh
bmQgcmVzZWxsIGl0LiBVc2luZyB0aGUgY29kZSBpcyBwZXJtaXR0ZWQgaW4gYW55IHByb2dyYW0s
IHByb2R1Y3QsIG9yIGxpYnJhcnksIG5vbi1jb21tZXJjaWFsCisvLyBvciBjb21tZXJjaWFsLiBH
aXZpbmcgY3JlZGl0IGlzIG5vdCByZXF1aXJlZCwgdGhvdWdoIGlzIGEgbmljZSBnZXN0dXJlLiBU
aGUgY29kZSBjb21lcyBhcy1pcywgYW5kIGlmIHRoZXJlCisvLyBhcmUgYW55IGZsYXdzIG9yIHBy
b2JsZW1zIHdpdGggYW55IEdlbXMgY29kZSwgbm9ib2R5IGludm9sdmVkIHdpdGggR2VtcyAtIGF1
dGhvcnMsIGVkaXRvcnMsIHB1Ymxpc2hlcnMsIG9yCisvLyB3ZWJtYXN0ZXJzIC0gYXJlIHRvIGJl
IGhlbGQgcmVzcG9uc2libGUuIEJhc2ljYWxseSwgZG9uJ3QgYmUgYSBqZXJrLCBhbmQgcmVtZW1i
ZXIgdGhhdCBhbnl0aGluZyBmcmVlIGNvbWVzCiAvLyB3aXRoIG5vIGd1YXJhbnRlZS4KIAogLy8g
QSBjbGFyaWZpY2F0aW9uIGFib3V0IHRoZSBzdG9yYWdlIG9mIG1hdHJpeCBlbGVtZW50cwogLy8K
LS8vIFRoaXMgY2xhc3MgdXNlcyBhIDIgZGltZW5zaW9uYWwgYXJyYXkgaW50ZXJuYWxseSB0byBz
dG9yZSB0aGUgZWxlbWVudHMgb2YgdGhlIG1hdHJpeC4gIFRoZSBmaXJzdCBpbmRleCBpbnRvIAor
Ly8gVGhpcyBjbGFzcyB1c2VzIGEgMiBkaW1lbnNpb25hbCBhcnJheSBpbnRlcm5hbGx5IHRvIHN0
b3JlIHRoZSBlbGVtZW50cyBvZiB0aGUgbWF0cml4LiAgVGhlIGZpcnN0IGluZGV4IGludG8KIC8v
IHRoZSBhcnJheSByZWZlcnMgdG8gdGhlIGNvbHVtbiB0aGF0IHRoZSBlbGVtZW50IGxpZXMgaW47
IHRoZSBzZWNvbmQgaW5kZXggcmVmZXJzIHRvIHRoZSByb3cuCiAvLwogLy8gSW4gb3RoZXIgd29y
ZHMsIHRoaXMgaXMgdGhlIGxheW91dCBvZiB0aGUgbWF0cml4OgpAQCAtNzksMTUgKzc5LDE1IEBA
IHR5cGVkZWYgZG91YmxlIFZlY3RvcjNbM107CiBjb25zdCBkb3VibGUgU01BTExfTlVNQkVSID0g
MS5lLTg7CiAKIC8vIGludmVyc2Uob3JpZ2luYWxfbWF0cml4LCBpbnZlcnNlX21hdHJpeCkKLS8v
IAorLy8KIC8vIGNhbGN1bGF0ZSB0aGUgaW52ZXJzZSBvZiBhIDR4NCBtYXRyaXgKLS8vIAotLy8g
LTEgICAgIAorLy8KKy8vIC0xCiAvLyBBICA9IF9fXzFfXyBhZGpvaW50IEEKIC8vICAgICAgIGRl
dCBBCiAKIC8vICBkb3VibGUgPSBkZXRlcm1pbmFudDJ4Mihkb3VibGUgYSwgZG91YmxlIGIsIGRv
dWJsZSBjLCBkb3VibGUgZCkKLS8vICAKKy8vCiAvLyAgY2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFu
dCBvZiBhIDJ4MiBtYXRyaXguCiAKIHN0YXRpYyBkb3VibGUgZGV0ZXJtaW5hbnQyeDIoZG91Ymxl
IGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQpCkBAIC05NiwxMCArOTYsMTAgQEAgc3Rh
dGljIGRvdWJsZSBkZXRlcm1pbmFudDJ4Mihkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBk
b3VibGUgZCkKIH0KIAogLy8gIGRvdWJsZSA9IGRldGVybWluYW50M3gzKGExLCBhMiwgYTMsIGIx
LCBiMiwgYjMsIGMxLCBjMiwgYzMpCi0vLyAgCisvLwogLy8gIENhbGN1bGF0ZSB0aGUgZGV0ZXJt
aW5hbnQgb2YgYSAzeDMgbWF0cml4CiAvLyAgaW4gdGhlIGZvcm0KLS8vIAorLy8KIC8vICAgICAg
fCBhMSwgIGIxLCAgYzEgfAogLy8gICAgICB8IGEyLCAgYjIsICBjMiB8CiAvLyAgICAgIHwgYTMs
ICBiMywgIGMzIHwKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgZG91YmxlIGRldGVybWluYW50
M3gzKGRvdWJsZSBhMSwgZG91YmxlIGEyLCBkb3VibGUgYTMsIGRvdWJsZSBiMSwgZG91YmxlCiB9
CiAKIC8vICBkb3VibGUgPSBkZXRlcm1pbmFudDR4NChtYXRyaXgpCi0vLyAgCisvLwogLy8gIGNh
bGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnQgb2YgYSA0eDQgbWF0cml4LgogCiBzdGF0aWMgZG91Ymxl
IGRldGVybWluYW50NHg0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtKQpA
QCAtMTIxLDIyICsxMjEsMjIgQEAgc3RhdGljIGRvdWJsZSBkZXRlcm1pbmFudDR4NChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbSkKICAgICAvLyBjb3JyZWN0IGVsZW1lbnRz
CiAKICAgICBkb3VibGUgYTEgPSBtWzBdWzBdOwotICAgIGRvdWJsZSBiMSA9IG1bMF1bMV07IAor
ICAgIGRvdWJsZSBiMSA9IG1bMF1bMV07CiAgICAgZG91YmxlIGMxID0gbVswXVsyXTsKICAgICBk
b3VibGUgZDEgPSBtWzBdWzNdOwogCiAgICAgZG91YmxlIGEyID0gbVsxXVswXTsKLSAgICBkb3Vi
bGUgYjIgPSBtWzFdWzFdOyAKKyAgICBkb3VibGUgYjIgPSBtWzFdWzFdOwogICAgIGRvdWJsZSBj
MiA9IG1bMV1bMl07CiAgICAgZG91YmxlIGQyID0gbVsxXVszXTsKIAotICAgIGRvdWJsZSBhMyA9
IG1bMl1bMF07IAorICAgIGRvdWJsZSBhMyA9IG1bMl1bMF07CiAgICAgZG91YmxlIGIzID0gbVsy
XVsxXTsKICAgICBkb3VibGUgYzMgPSBtWzJdWzJdOwogICAgIGRvdWJsZSBkMyA9IG1bMl1bM107
CiAKICAgICBkb3VibGUgYTQgPSBtWzNdWzBdOwotICAgIGRvdWJsZSBiNCA9IG1bM11bMV07IAor
ICAgIGRvdWJsZSBiNCA9IG1bM11bMV07CiAgICAgZG91YmxlIGM0ID0gbVszXVsyXTsKICAgICBk
b3VibGUgZDQgPSBtWzNdWzNdOwogCkBAIC0xNTQsMTEgKzE1NCwxMSBAQCBzdGF0aWMgZG91Ymxl
IGRldGVybWluYW50NHg0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtKQog
Ly8gICAgICAgICBpagogLy8KIC8vICAgIGRlbGV0aW5nIHRoZSBpdGggcm93IGFuZCBqdGggY29s
dW1uIGZyb20gQS4KLS8vIAorLy8KIC8vICAgICAgICAgICAgICAgICAgaStqCiAvLyAgIExldCAg
YiAgID0gKC0xKSAgICBhCiAvLyAgICAgICAgaWogICAgICAgICAgICBqaQotLy8gCisvLwogLy8g
IFRoZSBtYXRyaXggQiA9IChiICApIGlzIHRoZSBhZGpvaW50IG9mIEEKIC8vICAgICAgICAgICAg
ICAgICAgIGlqCiAKQEAgLTE2NywxMiArMTY3LDEyIEBAIHN0YXRpYyB2b2lkIGFkam9pbnQoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdHJpeCwgVHJhbnNmb3JtYXRpb25N
CiAgICAgLy8gQXNzaWduIHRvIGluZGl2aWR1YWwgdmFyaWFibGUgbmFtZXMgdG8gYWlkCiAgICAg
Ly8gc2VsZWN0aW5nIGNvcnJlY3QgdmFsdWVzCiAgICAgZG91YmxlIGExID0gbWF0cml4WzBdWzBd
OwotICAgIGRvdWJsZSBiMSA9IG1hdHJpeFswXVsxXTsgCisgICAgZG91YmxlIGIxID0gbWF0cml4
WzBdWzFdOwogICAgIGRvdWJsZSBjMSA9IG1hdHJpeFswXVsyXTsKICAgICBkb3VibGUgZDEgPSBt
YXRyaXhbMF1bM107CiAKICAgICBkb3VibGUgYTIgPSBtYXRyaXhbMV1bMF07Ci0gICAgZG91Ymxl
IGIyID0gbWF0cml4WzFdWzFdOyAKKyAgICBkb3VibGUgYjIgPSBtYXRyaXhbMV1bMV07CiAgICAg
ZG91YmxlIGMyID0gbWF0cml4WzFdWzJdOwogICAgIGRvdWJsZSBkMiA9IG1hdHJpeFsxXVszXTsK
IApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIGFkam9pbnQoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdHJpeCwgVHJhbnNmb3JtYXRpb25NCiAgICAgZG91Ymxl
IGQzID0gbWF0cml4WzJdWzNdOwogCiAgICAgZG91YmxlIGE0ID0gbWF0cml4WzNdWzBdOwotICAg
IGRvdWJsZSBiNCA9IG1hdHJpeFszXVsxXTsgCisgICAgZG91YmxlIGI0ID0gbWF0cml4WzNdWzFd
OwogICAgIGRvdWJsZSBjNCA9IG1hdHJpeFszXVsyXTsKICAgICBkb3VibGUgZDQgPSBtYXRyaXhb
M11bM107CiAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIHN0YXRpYyB2b2lkIGFkam9pbnQoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdHJpeCwgVHJhbnNmb3JtYXRpb25NCiAg
ICAgcmVzdWx0WzFdWzBdICA9IC0gZGV0ZXJtaW5hbnQzeDMoYTIsIGEzLCBhNCwgYzIsIGMzLCBj
NCwgZDIsIGQzLCBkNCk7CiAgICAgcmVzdWx0WzJdWzBdICA9ICAgZGV0ZXJtaW5hbnQzeDMoYTIs
IGEzLCBhNCwgYjIsIGIzLCBiNCwgZDIsIGQzLCBkNCk7CiAgICAgcmVzdWx0WzNdWzBdICA9IC0g
ZGV0ZXJtaW5hbnQzeDMoYTIsIGEzLCBhNCwgYjIsIGIzLCBiNCwgYzIsIGMzLCBjNCk7Ci0gICAg
ICAgIAorCiAgICAgcmVzdWx0WzBdWzFdICA9IC0gZGV0ZXJtaW5hbnQzeDMoYjEsIGIzLCBiNCwg
YzEsIGMzLCBjNCwgZDEsIGQzLCBkNCk7CiAgICAgcmVzdWx0WzFdWzFdICA9ICAgZGV0ZXJtaW5h
bnQzeDMoYTEsIGEzLCBhNCwgYzEsIGMzLCBjNCwgZDEsIGQzLCBkNCk7CiAgICAgcmVzdWx0WzJd
WzFdICA9IC0gZGV0ZXJtaW5hbnQzeDMoYTEsIGEzLCBhNCwgYjEsIGIzLCBiNCwgZDEsIGQzLCBk
NCk7CiAgICAgcmVzdWx0WzNdWzFdICA9ICAgZGV0ZXJtaW5hbnQzeDMoYTEsIGEzLCBhNCwgYjEs
IGIzLCBiNCwgYzEsIGMzLCBjNCk7Ci0gICAgICAgIAorCiAgICAgcmVzdWx0WzBdWzJdICA9ICAg
ZGV0ZXJtaW5hbnQzeDMoYjEsIGIyLCBiNCwgYzEsIGMyLCBjNCwgZDEsIGQyLCBkNCk7CiAgICAg
cmVzdWx0WzFdWzJdICA9IC0gZGV0ZXJtaW5hbnQzeDMoYTEsIGEyLCBhNCwgYzEsIGMyLCBjNCwg
ZDEsIGQyLCBkNCk7CiAgICAgcmVzdWx0WzJdWzJdICA9ICAgZGV0ZXJtaW5hbnQzeDMoYTEsIGEy
LCBhNCwgYjEsIGIyLCBiNCwgZDEsIGQyLCBkNCk7CiAgICAgcmVzdWx0WzNdWzJdICA9IC0gZGV0
ZXJtaW5hbnQzeDMoYTEsIGEyLCBhNCwgYjEsIGIyLCBiNCwgYzEsIGMyLCBjNCk7Ci0gICAgICAg
IAorCiAgICAgcmVzdWx0WzBdWzNdICA9IC0gZGV0ZXJtaW5hbnQzeDMoYjEsIGIyLCBiMywgYzEs
IGMyLCBjMywgZDEsIGQyLCBkMyk7CiAgICAgcmVzdWx0WzFdWzNdICA9ICAgZGV0ZXJtaW5hbnQz
eDMoYTEsIGEyLCBhMywgYzEsIGMyLCBjMywgZDEsIGQyLCBkMyk7CiAgICAgcmVzdWx0WzJdWzNd
ICA9IC0gZGV0ZXJtaW5hbnQzeDMoYTEsIGEyLCBhMywgYjEsIGIyLCBiMywgZDEsIGQyLCBkMyk7
CkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIGJvb2wgaW52ZXJzZShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0cml4LCBUcmFuc2Zvcm1hdGlvbk0KICAgICBhZGpvaW50
KG1hdHJpeCwgcmVzdWx0KTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgNHg0IGRldGVybWluYW50
Ci0gICAgLy8gSWYgdGhlIGRldGVybWluYW50IGlzIHplcm8sIAorICAgIC8vIElmIHRoZSBkZXRl
cm1pbmFudCBpcyB6ZXJvLAogICAgIC8vIHRoZW4gdGhlIGludmVyc2UgbWF0cml4IGlzIG5vdCB1
bmlxdWUuCiAgICAgZG91YmxlIGRldCA9IGRldGVybWluYW50NHg0KG1hdHJpeCk7CiAKQEAgLTI2
Miw3ICsyNjIsNyBAQCBzdGF0aWMgZG91YmxlIHYzTGVuZ3RoKFZlY3RvcjMgYSkKICAgICByZXR1
cm4gc3FydCgoYVswXSAqIGFbMF0pICsgKGFbMV0gKiBhWzFdKSArIChhWzJdICogYVsyXSkpOwog
fQogCi1zdGF0aWMgdm9pZCB2M1NjYWxlKFZlY3RvcjMgdiwgZG91YmxlIGRlc2lyZWRMZW5ndGgp
IAorc3RhdGljIHZvaWQgdjNTY2FsZShWZWN0b3IzIHYsIGRvdWJsZSBkZXNpcmVkTGVuZ3RoKQog
ewogICAgIGRvdWJsZSBsZW4gPSB2M0xlbmd0aCh2KTsKICAgICBpZiAobGVuICE9IDApIHsKQEAg
LTI3Myw3ICsyNzMsNyBAQCBzdGF0aWMgdm9pZCB2M1NjYWxlKFZlY3RvcjMgdiwgZG91YmxlIGRl
c2lyZWRMZW5ndGgpCiAgICAgfQogfQogCi1zdGF0aWMgZG91YmxlIHYzRG90KGNvbnN0IFZlY3Rv
cjMgYSwgY29uc3QgVmVjdG9yMyBiKSAKK3N0YXRpYyBkb3VibGUgdjNEb3QoY29uc3QgVmVjdG9y
MyBhLCBjb25zdCBWZWN0b3IzIGIpCiB7CiAgICAgcmV0dXJuIChhWzBdICogYlswXSkgKyAoYVsx
XSAqIGJbMV0pICsgKGFbMl0gKiBiWzJdKTsKIH0KQEAgLTI5NSw3ICsyOTUsNzIgQEAgc3RhdGlj
IHZvaWQgdjNDcm9zcyhjb25zdCBWZWN0b3IzIGEsIGNvbnN0IFZlY3RvcjMgYiwgVmVjdG9yMyBy
ZXN1bHQpCiAgICAgcmVzdWx0WzJdID0gKGFbMF0gKiBiWzFdKSAtIChhWzFdICogYlswXSk7CiB9
CiAKLXN0YXRpYyBib29sIGRlY29tcG9zZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0
cml4NCYgbWF0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVjb21wb3NlZFR5cGUmIHJlc3VsdCkK
K3N0YXRpYyBib29sIGRlY29tcG9zZTIoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJp
eDQmIG1hdCwgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWQyVHlwZSYgcmVzdWx0KQor
eworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0IGxvY2FsTWF0cml4OworICAgIG1l
bWNweShsb2NhbE1hdHJpeCwgbWF0LCBzaXplb2YoVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJp
eDQpKTsKKworICAgIGRvdWJsZSByb3cweCA9IGxvY2FsTWF0cml4WzBdWzBdOworICAgIGRvdWJs
ZSByb3cweSA9IGxvY2FsTWF0cml4WzBdWzFdOworICAgIGRvdWJsZSByb3cxeCA9IGxvY2FsTWF0
cml4WzFdWzBdOworICAgIGRvdWJsZSByb3cxeSA9IGxvY2FsTWF0cml4WzFdWzFdOworCisgICAg
cmVzdWx0LnRyYW5zbGF0ZVggPSBsb2NhbE1hdHJpeFszXVswXTsKKyAgICByZXN1bHQudHJhbnNs
YXRlWSA9IGxvY2FsTWF0cml4WzNdWzFdOworCisgICAgLy8gQ29tcHV0ZSBzY2FsaW5nIGZhY3Rv
cnMuCisKKyAgICByZXN1bHQuc2NhbGVYID0gc3FydChyb3cweCAqIHJvdzB4ICsgcm93MHkgKiBy
b3cweSk7CisgICAgcmVzdWx0LnNjYWxlWSA9IHNxcnQocm93MXggKiByb3cxeCArIHJvdzF5ICog
cm93MXkpOworCisgICAgLy8gSWYgZGV0ZXJtaW5hbnQgaXMgbmVnYXRpdmUsIG9uZSBheGlzIHdh
cyBmbGlwcGVkLgorICAgIGRvdWJsZSBkZXRlcm1pbmFudCA9IHJvdzB4ICogcm93MXggLSByb3cw
eSAqIHJvdzF5OworICAgIGlmIChkZXRlcm1pbmFudCA8IDApIHsKKyAgICAgICAgLy8gRmxpcCBh
eGlzIHdpdGggbWluaW11bSB1bml0IHZlY3RvciBkb3QgcHJvZHVjdC4KKyAgICAgICAgaWYgKHJv
dzB4IDwgcm93MXkpCisgICAgICAgICAgICByZXN1bHQuc2NhbGVYID0gLXJlc3VsdC5zY2FsZVg7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5zY2FsZVkgPSAtcmVzdWx0LnNjYWxl
WTsKKyAgICB9CisKKyAgICAvLyBSZW5vcm1hbGl6ZSBtYXRyaXggdG8gcmVtb3ZlIHNjYWxlLgor
CisgICAgaWYgKHJlc3VsdC5zY2FsZVggIT0gMCkgeworICAgICAgICByb3cweCAqPSAxIC8gcmVz
dWx0LnNjYWxlWDsKKyAgICAgICAgcm93MHkgKj0gMSAvIHJlc3VsdC5zY2FsZVg7CisgICAgfQor
ICAgIGlmIChyZXN1bHQuc2NhbGVZICE9IDApIHsKKyAgICAgICAgcm93MXggKj0gMSAvIHJlc3Vs
dC5zY2FsZVk7CisgICAgICAgIHJvdzF4ICo9IDEgLyByZXN1bHQuc2NhbGVZOworICAgIH0KKwor
ICAgIC8vIENvbXB1dGUgcm90YXRpb24gYW5kIHJlbm9ybWFsaXplIG1hdHJpeC4KKworICAgIHJl
c3VsdC5hbmdsZSA9IGF0YW4yKHJvdzB5LCByb3cweCk7CisKKyAgICBpZiAocmVzdWx0LmFuZ2xl
ICE9IDApIHsKKyAgICAgICAgLy8gUm90YXRlKC1hbmdsZSkgPSBbY3MsIHNuOyAtc24sIGNzXS4K
KworICAgICAgICBkb3VibGUgc24gPSBzaW4oLXJlc3VsdC5hbmdsZSk7CisgICAgICAgIGRvdWJs
ZSBjcyA9IGNvcygtcmVzdWx0LmFuZ2xlKTsKKworICAgICAgICBkb3VibGUgbTExID0gcm93MHgs
IG0xMiA9IHJvdzB5OworICAgICAgICBkb3VibGUgbTIxID0gcm93MXgsIG0yMiA9IHJvdzF5Owor
ICAgICAgICByb3cweCA9IGNzICogbTExICsgc24gKiBtMjE7CisgICAgICAgIHJvdzB5ID0gY3Mg
KiBtMTIgKyBzbiAqIG0yMjsKKyAgICAgICAgcm93MXggPSAtc24gKiBtMTEgKyBjcyAqIG0yMTsK
KyAgICAgICAgcm93MXkgPSAtc24gKiBtMTIgKyBjcyAqIG0yMjsKKyAgICB9CisKKyAgICByZXN1
bHQubTExID0gcm93MHg7CisgICAgcmVzdWx0Lm0xMiA9IHJvdzB5OworICAgIHJlc3VsdC5tMjEg
PSByb3cxeDsKKyAgICByZXN1bHQubTIyID0gcm93MXk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGJvb2wgZGVjb21wb3NlNChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0
cml4NCYgbWF0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVjb21wb3NlZDRUeXBlJiByZXN1bHQp
CiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQgbG9jYWxNYXRyaXg7CiAgICAg
bWVtY3B5KGxvY2FsTWF0cml4LCBtYXQsIHNpemVvZihUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0
cml4NCkpOwpAQCAtMzMwLDcgKzM5NSw3IEBAIHN0YXRpYyBib29sIGRlY29tcG9zZShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0LCBUcmFuc2Zvcm1hdGlvbk1hCiAgICAg
ICAgIHJpZ2h0SGFuZFNpZGVbM10gPSBsb2NhbE1hdHJpeFszXVszXTsKIAogICAgICAgICAvLyBT
b2x2ZSB0aGUgZXF1YXRpb24gYnkgaW52ZXJ0aW5nIHBlcnNwZWN0aXZlTWF0cml4IGFuZCBtdWx0
aXBseWluZwotICAgICAgICAvLyByaWdodEhhbmRTaWRlIGJ5IHRoZSBpbnZlcnNlLiAgKFRoaXMg
aXMgdGhlIGVhc2llc3Qgd2F5LCBub3QKKyAgICAgICAgLy8gcmlnaHRIYW5kU2lkZSBieSB0aGUg
aW52ZXJzZS4gKFRoaXMgaXMgdGhlIGVhc2llc3Qgd2F5LCBub3QKICAgICAgICAgLy8gbmVjZXNz
YXJpbHkgdGhlIGJlc3QuKQogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCBp
bnZlcnNlUGVyc3BlY3RpdmVNYXRyaXgsIHRyYW5zcG9zZWRJbnZlcnNlUGVyc3BlY3RpdmVNYXRy
aXg7CiAgICAgICAgIGludmVyc2UocGVyc3BlY3RpdmVNYXRyaXgsIGludmVyc2VQZXJzcGVjdGl2
ZU1hdHJpeCk7CkBAIC0zMzgsMTIgKzQwMywxMiBAQCBzdGF0aWMgYm9vbCBkZWNvbXBvc2UoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJhbnNmb3JtYXRpb25NYQog
CiAgICAgICAgIFZlY3RvcjQgcGVyc3BlY3RpdmVQb2ludDsKICAgICAgICAgdjRNdWxQb2ludEJ5
TWF0cml4KHJpZ2h0SGFuZFNpZGUsIHRyYW5zcG9zZWRJbnZlcnNlUGVyc3BlY3RpdmVNYXRyaXgs
IHBlcnNwZWN0aXZlUG9pbnQpOwotIAorCiAgICAgICAgIHJlc3VsdC5wZXJzcGVjdGl2ZVggPSBw
ZXJzcGVjdGl2ZVBvaW50WzBdOwogICAgICAgICByZXN1bHQucGVyc3BlY3RpdmVZID0gcGVyc3Bl
Y3RpdmVQb2ludFsxXTsKICAgICAgICAgcmVzdWx0LnBlcnNwZWN0aXZlWiA9IHBlcnNwZWN0aXZl
UG9pbnRbMl07CiAgICAgICAgIHJlc3VsdC5wZXJzcGVjdGl2ZVcgPSBwZXJzcGVjdGl2ZVBvaW50
WzNdOwotICAgICAgICAKKwogICAgICAgICAvLyBDbGVhciB0aGUgcGVyc3BlY3RpdmUgcGFydGl0
aW9uCiAgICAgICAgIGxvY2FsTWF0cml4WzBdWzNdID0gbG9jYWxNYXRyaXhbMV1bM10gPSBsb2Nh
bE1hdHJpeFsyXVszXSA9IDA7CiAgICAgICAgIGxvY2FsTWF0cml4WzNdWzNdID0gMTsKQEAgLTM1
Miw3ICs0MTcsNyBAQCBzdGF0aWMgYm9vbCBkZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJhbnNmb3JtYXRpb25NYQogICAgICAgICByZXN1bHQucGVy
c3BlY3RpdmVYID0gcmVzdWx0LnBlcnNwZWN0aXZlWSA9IHJlc3VsdC5wZXJzcGVjdGl2ZVogPSAw
OwogICAgICAgICByZXN1bHQucGVyc3BlY3RpdmVXID0gMTsKICAgICB9Ci0gICAgCisKICAgICAv
LyBOZXh0IHRha2UgY2FyZSBvZiB0cmFuc2xhdGlvbiAoZWFzeSkuCiAgICAgcmVzdWx0LnRyYW5z
bGF0ZVggPSBsb2NhbE1hdHJpeFszXVswXTsKICAgICBsb2NhbE1hdHJpeFszXVswXSA9IDA7CkBA
IC0zOTUsNyArNDYwLDcgQEAgc3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEKICAgICB2M1NjYWxlKHJv
d1syXSwgMS4wKTsKICAgICByZXN1bHQuc2tld1haIC89IHJlc3VsdC5zY2FsZVo7CiAgICAgcmVz
dWx0LnNrZXdZWiAvPSByZXN1bHQuc2NhbGVaOwotIAorCiAgICAgLy8gQXQgdGhpcyBwb2ludCwg
dGhlIG1hdHJpeCAoaW4gcm93c1tdKSBpcyBvcnRob25vcm1hbC4KICAgICAvLyBDaGVjayBmb3Ig
YSBjb29yZGluYXRlIHN5c3RlbSBmbGlwLiAgSWYgdGhlIGRldGVybWluYW50CiAgICAgLy8gaXMg
LTEsIHRoZW4gbmVnYXRlIHRoZSBtYXRyaXggYW5kIHRoZSBzY2FsaW5nIGZhY3RvcnMuCkBAIC00
MTIsOSArNDc3LDkgQEAgc3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEKICAgICAgICAgICAgIHJvd1tp
XVsyXSAqPSAtMTsKICAgICAgICAgfQogICAgIH0KLSAKKwogICAgIC8vIE5vdywgZ2V0IHRoZSBy
b3RhdGlvbnMgb3V0LCBhcyBkZXNjcmliZWQgaW4gdGhlIGdlbS4KLSAgICAKKwogICAgIC8vIEZJ
WE1FIC0gQWRkIHRoZSBhYmlsaXR5IHRvIHJldHVybiBlaXRoZXIgcXVhdGVybmlvbnMgKHdoaWNo
IGFyZQogICAgIC8vIGVhc2llciB0byByZWNvbXBvc2Ugd2l0aCkgb3IgRXVsZXIgYW5nbGVzIChy
eCwgcnksIHJ6KSwgd2hpY2gKICAgICAvLyBhcmUgZWFzaWVyIGZvciBhdXRob3JzIHRvIGRlYWwg
d2l0aC4gVGhlIGxhdHRlciB3aWxsIG9ubHkgYmUgdXNlZnVsCkBAIC00MjksNyArNDk0LDcgQEAg
c3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0
JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEKICAgICAvLyAgICAgcmV0LnJvdGF0ZVggPSBhdGFuMigt
cm93WzJdWzBdLCByb3dbMV1bMV0pOwogICAgIC8vICAgICByZXQucm90YXRlWiA9IDA7CiAgICAg
Ly8gfQotICAgIAorCiAgICAgZG91YmxlIHMsIHQsIHgsIHksIHosIHc7CiAKICAgICB0ID0gcm93
WzBdWzBdICsgcm93WzFdWzFdICsgcm93WzJdWzJdICsgMS4wOwpAQCAtNDQwLDIyICs1MDUsMjIg
QEAgc3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRy
aXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEKICAgICAgICAgeCA9IChyb3dbMl1bMV0gLSByb3db
MV1bMl0pICogczsKICAgICAgICAgeSA9IChyb3dbMF1bMl0gLSByb3dbMl1bMF0pICogczsKICAg
ICAgICAgeiA9IChyb3dbMV1bMF0gLSByb3dbMF1bMV0pICogczsKLSAgICB9IGVsc2UgaWYgKHJv
d1swXVswXSA+IHJvd1sxXVsxXSAmJiByb3dbMF1bMF0gPiByb3dbMl1bMl0pIHsgCi0gICAgICAg
IHMgPSBzcXJ0ICgxLjAgKyByb3dbMF1bMF0gLSByb3dbMV1bMV0gLSByb3dbMl1bMl0pICogMi4w
OyAvLyBTPTQqcXggCisgICAgfSBlbHNlIGlmIChyb3dbMF1bMF0gPiByb3dbMV1bMV0gJiYgcm93
WzBdWzBdID4gcm93WzJdWzJdKSB7CisgICAgICAgIHMgPSBzcXJ0ICgxLjAgKyByb3dbMF1bMF0g
LSByb3dbMV1bMV0gLSByb3dbMl1bMl0pICogMi4wOyAvLyBTPTQqcXgKICAgICAgICAgeCA9IDAu
MjUgKiBzOwotICAgICAgICB5ID0gKHJvd1swXVsxXSArIHJvd1sxXVswXSkgLyBzOyAKLSAgICAg
ICAgeiA9IChyb3dbMF1bMl0gKyByb3dbMl1bMF0pIC8gczsgCisgICAgICAgIHkgPSAocm93WzBd
WzFdICsgcm93WzFdWzBdKSAvIHM7CisgICAgICAgIHogPSAocm93WzBdWzJdICsgcm93WzJdWzBd
KSAvIHM7CiAgICAgICAgIHcgPSAocm93WzJdWzFdIC0gcm93WzFdWzJdKSAvIHM7Ci0gICAgfSBl
bHNlIGlmIChyb3dbMV1bMV0gPiByb3dbMl1bMl0pIHsgCisgICAgfSBlbHNlIGlmIChyb3dbMV1b
MV0gPiByb3dbMl1bMl0pIHsKICAgICAgICAgcyA9IHNxcnQgKDEuMCArIHJvd1sxXVsxXSAtIHJv
d1swXVswXSAtIHJvd1syXVsyXSkgKiAyLjA7IC8vIFM9NCpxeQotICAgICAgICB4ID0gKHJvd1sw
XVsxXSArIHJvd1sxXVswXSkgLyBzOyAKKyAgICAgICAgeCA9IChyb3dbMF1bMV0gKyByb3dbMV1b
MF0pIC8gczsKICAgICAgICAgeSA9IDAuMjUgKiBzOwotICAgICAgICB6ID0gKHJvd1sxXVsyXSAr
IHJvd1syXVsxXSkgLyBzOyAKKyAgICAgICAgeiA9IChyb3dbMV1bMl0gKyByb3dbMl1bMV0pIC8g
czsKICAgICAgICAgdyA9IChyb3dbMF1bMl0gLSByb3dbMl1bMF0pIC8gczsKLSAgICB9IGVsc2Ug
eyAKKyAgICB9IGVsc2UgewogICAgICAgICBzID0gc3FydCgxLjAgKyByb3dbMl1bMl0gLSByb3db
MF1bMF0gLSByb3dbMV1bMV0pICogMi4wOyAvLyBTPTQqcXoKICAgICAgICAgeCA9IChyb3dbMF1b
Ml0gKyByb3dbMl1bMF0pIC8gczsKLSAgICAgICAgeSA9IChyb3dbMV1bMl0gKyByb3dbMl1bMV0p
IC8gczsgCisgICAgICAgIHkgPSAocm93WzFdWzJdICsgcm93WzJdWzFdKSAvIHM7CiAgICAgICAg
IHogPSAwLjI1ICogczsKICAgICAgICAgdyA9IChyb3dbMV1bMF0gLSByb3dbMF1bMV0pIC8gczsK
ICAgICB9CkBAIC00NjQsNyArNTI5LDcgQEAgc3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEKICAgICBy
ZXN1bHQucXVhdGVybmlvblkgPSB5OwogICAgIHJlc3VsdC5xdWF0ZXJuaW9uWiA9IHo7CiAgICAg
cmVzdWx0LnF1YXRlcm5pb25XID0gdzsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC01NTEsMTEgKzYxNiwxMSBAQCBGbG9hdFBvaW50IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpwcm9q
ZWN0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCwgYm9vbCogY2xhbXBlZAogICAgIC8vIHdpdGgg
dGhlIHRyYW5zZm9ybSBhcHBsaWVkLiBPbmNlIHdlIGhhdmUgdGhhdCBwb2ludCB3ZSBhcHBseSB0
aGUKICAgICAvLyBpbnZlcnNlIHRyYW5zZm9ybSB0byBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIHBv
aW50IGluIHRoZSBzb3VyY2UKICAgICAvLyBzcGFjZS4KLSAgICAvLyAKKyAgICAvLwogICAgIC8v
IEdpdmVuIGEgcGxhbmUgd2l0aCBub3JtYWwgUG4sIGFuZCBhIHJheSBzdGFydGluZyBhdCBwb2lu
dCBSMCBhbmQKICAgICAvLyB3aXRoIGRpcmVjdGlvbiBkZWZpbmVkIGJ5IHRoZSB2ZWN0b3IgUmQs
IHdlIGNhbiBmaW5kIHRoZQogICAgIC8vIGludGVyc2VjdGlvbiBwb2ludCBhcyBhIGRpc3RhbmNl
IGQgZnJvbSBSMCBpbiB1bml0cyBvZiBSZCBieToKLSAgICAvLyAKKyAgICAvLwogICAgIC8vIGQg
PSAtZG90IChQbicsIFIwKSAvIGRvdCAoUG4nLCBSZCkKICAgICBpZiAoY2xhbXBlZCkKICAgICAg
ICAgKmNsYW1wZWQgPSBmYWxzZTsKQEAgLTU2NSw3ICs2MzAsNyBAQCBGbG9hdFBvaW50IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojpwcm9qZWN0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCwgYm9vbCog
Y2xhbXBlZAogICAgICAgICAvLyB0cmFjZSwgYW5kIHRoZXJlIGlzIG5vIHdlbGwtZGVmaW5lZCB2
YWx1ZSBmb3IgdGhlIHByb2plY3Rpb24uCiAgICAgICAgIHJldHVybiBGbG9hdFBvaW50KCk7CiAg
ICAgfQotICAgIAorCiAgICAgZG91YmxlIHggPSBwLngoKTsKICAgICBkb3VibGUgeSA9IHAueSgp
OwogICAgIGRvdWJsZSB6ID0gLShtMTMoKSAqIHggKyBtMjMoKSAqIHkgKyBtNDMoKSkgLyBtMzMo
KTsKQEAgLTYwOCw3ICs2NzMsNyBAQCBGbG9hdFF1YWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnBy
b2plY3RRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcSwgYm9vbCogY2xhbXBlZCkgYwogCiAgICAgaWYg
KGNsYW1wZWQpCiAgICAgICAgICpjbGFtcGVkID0gY2xhbXBlZDEgfHwgY2xhbXBlZDIgfHwgY2xh
bXBlZDMgfHwgY2xhbXBlZDQ7Ci0gICAgICAgIAorCiAgICAgLy8gSWYgYWxsIHBvaW50cyBvbiB0
aGUgcXVhZCBoYWQgdyA8IDAsIHRoZW4gdGhlIGVudGlyZSBxdWFkIHdvdWxkIG5vdCBiZSB2aXNp
YmxlIHRvIHRoZSBwcm9qZWN0ZWQgc3VyZmFjZS4KICAgICBib29sIGV2ZXJ5dGhpbmdXYXNDbGlw
cGVkID0gY2xhbXBlZDEgJiYgY2xhbXBlZDIgJiYgY2xhbXBlZDMgJiYgY2xhbXBlZDQ7CiAgICAg
aWYgKGV2ZXJ5dGhpbmdXYXNDbGlwcGVkKQpAQCAtNzE1LDcgKzc4MCw3IEBAIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBz
eCwgZG91YmxlIHN5CiAgICAgbV9tYXRyaXhbMF1bMV0gKj0gc3g7CiAgICAgbV9tYXRyaXhbMF1b
Ml0gKj0gc3g7CiAgICAgbV9tYXRyaXhbMF1bM10gKj0gc3g7Ci0gICAgCisKICAgICBtX21hdHJp
eFsxXVswXSAqPSBzeTsKICAgICBtX21hdHJpeFsxXVsxXSAqPSBzeTsKICAgICBtX21hdHJpeFsx
XVsyXSAqPSBzeTsKQEAgLTcyNiw3ICs3OTEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeQog
VHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZTNkKGRvdWJs
ZSBzeCwgZG91YmxlIHN5LCBkb3VibGUgc3opCiB7CiAgICAgc2NhbGVOb25Vbmlmb3JtKHN4LCBz
eSk7Ci0gICAgCisKICAgICBtX21hdHJpeFsyXVswXSAqPSBzejsKICAgICBtX21hdHJpeFsyXVsx
XSAqPSBzejsKICAgICBtX21hdHJpeFsyXVsyXSAqPSBzejsKQEAgLTczOSw3ICs4MDQsNyBAQCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRvdWJs
ZSB4LCBkb3VibGUgeSwgZG91YmxlCiAgICAgLy8gTm9ybWFsaXplIHRoZSBheGlzIG9mIHJvdGF0
aW9uCiAgICAgZG91YmxlIGxlbmd0aCA9IHNxcnQoeCAqIHggKyB5ICogeSArIHogKiB6KTsKICAg
ICBpZiAobGVuZ3RoID09IDApIHsKLSAgICAgICAgLy8gQSBkaXJlY3Rpb24gdmVjdG9yIHRoYXQg
Y2Fubm90IGJlIG5vcm1hbGl6ZWQsIHN1Y2ggYXMgWzAsIDAsIDBdLCB3aWxsIGNhdXNlIHRoZSBy
b3RhdGlvbiB0byBub3QgYmUgYXBwbGllZC4gCisgICAgICAgIC8vIEEgZGlyZWN0aW9uIHZlY3Rv
ciB0aGF0IGNhbm5vdCBiZSBub3JtYWxpemVkLCBzdWNoIGFzIFswLCAwLCAwXSwgd2lsbCBjYXVz
ZSB0aGUgcm90YXRpb24gdG8gbm90IGJlIGFwcGxpZWQuCiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9IGVsc2UgaWYgKGxlbmd0aCAhPSAxKSB7CiAgICAgICAgIHggLz0gbGVuZ3RoOwpAQCAt
NzUyLDcgKzgxNyw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6cm90YXRlM2QoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUKIAogICAgIGRvdWJsZSBzaW5U
aGV0YSA9IHNpbihhbmdsZSk7CiAgICAgZG91YmxlIGNvc1RoZXRhID0gY29zKGFuZ2xlKTsKLSAg
ICAKKwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdDsKIAogICAgIC8vIE9wdGltaXplIGNh
c2VzIHdoZXJlIHRoZSBheGlzIGlzIGFsb25nIGEgbWFqb3IgYXhpcwpAQCAtODI3LDEyICs4OTIs
MTIgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUz
ZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91YmwKICAgICByeCA9IGRlZzJyYWQocngpOwogICAg
IHJ5ID0gZGVnMnJhZChyeSk7CiAgICAgcnogPSBkZWcycmFkKHJ6KTsKLSAgICAKKwogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdDsKLSAgICAKKwogICAgIGRvdWJsZSBzaW5UaGV0YSA9IHNp
bihyeik7CiAgICAgZG91YmxlIGNvc1RoZXRhID0gY29zKHJ6KTsKLSAgICAKKwogICAgIG1hdC5t
X21hdHJpeFswXVswXSA9IGNvc1RoZXRhOwogICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IHNpblRo
ZXRhOwogICAgIG1hdC5tX21hdHJpeFswXVsyXSA9IDAuMDsKQEAgLTg0NSwxMiArOTEwLDEyIEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlM2QoZG91
YmxlIHJ4LCBkb3VibGUgcnksIGRvdWJsCiAgICAgbWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0Lm1f
bWF0cml4WzFdWzNdID0gbWF0Lm1fbWF0cml4WzJdWzNdID0gMC4wOwogICAgIG1hdC5tX21hdHJp
eFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsxXSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMDsK
ICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjA7Ci0gICAgCisKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBybWF0KG1hdCk7Ci0gICAgCisKICAgICBzaW5UaGV0YSA9IHNpbihyeSk7CiAgICAg
Y29zVGhldGEgPSBjb3MocnkpOwotICAgIAorCiAgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gY29z
VGhldGE7CiAgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMC4wOwogICAgIG1hdC5tX21hdHJpeFsw
XVsyXSA9IC1zaW5UaGV0YTsKQEAgLTg2OCw3ICs5MzMsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRvdWJsZSByeCwgZG91YmxlIHJ5LCBk
b3VibAogCiAgICAgc2luVGhldGEgPSBzaW4ocngpOwogICAgIGNvc1RoZXRhID0gY29zKHJ4KTsK
LSAgICAKKwogICAgIG1hdC5tX21hdHJpeFswXVswXSA9IDEuMDsKICAgICBtYXQubV9tYXRyaXhb
MF1bMV0gPSAwLjA7CiAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gMC4wOwpAQCAtOTQzLDcgKzEw
MDgsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXco
ZG91YmxlIHN4LCBkb3VibGUgc3kpCiAgICAgLy8gYW5nbGVzIGFyZSBpbiBkZWdyZWVzLiBTd2l0
Y2ggdG8gcmFkaWFucwogICAgIHN4ID0gZGVnMnJhZChzeCk7CiAgICAgc3kgPSBkZWcycmFkKHN5
KTsKLSAgICAKKwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdDsKICAgICBtYXQubV9tYXRy
aXhbMF1bMV0gPSB0YW4oc3kpOyAvLyBub3RlIHRoYXQgdGhlIHkgc2hlYXIgZ29lcyBpbiB0aGUg
Zmlyc3Qgcm93CiAgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gdGFuKHN4KTsgLy8gYW5kIHRoZSB4
IHNoZWFyIGluIHRoZSBzZWNvbmQgcm93CkBAIC0xMjQyLDcgKzEzMDcsNyBAQCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5KGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JgogICAgIF9tbV9zdG9yZV9wZCgmbV9tYXRyaXhbM11bMl0sIGFjY3VtdWxh
dG9yKTsKICNlbHNlCiAgICAgTWF0cml4NCB0bXA7Ci0gICAgCisKICAgICB0bXBbMF1bMF0gPSAo
bWF0Lm1fbWF0cml4WzBdWzBdICogbV9tYXRyaXhbMF1bMF0gKyBtYXQubV9tYXRyaXhbMF1bMV0g
KiBtX21hdHJpeFsxXVswXQogICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbMF1bMl0gKiBt
X21hdHJpeFsyXVswXSArIG1hdC5tX21hdHJpeFswXVszXSAqIG1fbWF0cml4WzNdWzBdKTsKICAg
ICB0bXBbMF1bMV0gPSAobWF0Lm1fbWF0cml4WzBdWzBdICogbV9tYXRyaXhbMF1bMV0gKyBtYXQu
bV9tYXRyaXhbMF1bMV0gKiBtX21hdHJpeFsxXVsxXQpAQCAtMTI3OCw3ICsxMzQzLDcgQEAgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYKICAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzNdWzJd
ICogbV9tYXRyaXhbMl1bMl0gKyBtYXQubV9tYXRyaXhbM11bM10gKiBtX21hdHJpeFszXVsyXSk7
CiAgICAgdG1wWzNdWzNdID0gKG1hdC5tX21hdHJpeFszXVswXSAqIG1fbWF0cml4WzBdWzNdICsg
bWF0Lm1fbWF0cml4WzNdWzFdICogbV9tYXRyaXhbMV1bM10KICAgICAgICAgICAgICAgICsgbWF0
Lm1fbWF0cml4WzNdWzJdICogbV9tYXRyaXhbMl1bM10gKyBtYXQubV9tYXRyaXhbM11bM10gKiBt
X21hdHJpeFszXVszXSk7Ci0gICAgCisKICAgICBzZXRNYXRyaXgodG1wKTsKICNlbmRpZgogICAg
IHJldHVybiAqdGhpczsKQEAgLTEzMjEsMjUgKzEzODYsMjUgQEAgYm9vbCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6aXNJbnZlcnRpYmxlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVHJh
bnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UoKSBjb25zdCAK
K1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29u
c3QKIHsKICAgICBpZiAoaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkgewogICAgICAgICAvLyBp
ZGVudGl0eSBtYXRyaXgKICAgICAgICAgaWYgKG1fbWF0cml4WzNdWzBdID09IDAgJiYgbV9tYXRy
aXhbM11bMV0gPT0gMCAmJiBtX21hdHJpeFszXVsyXSA9PSAwKQogICAgICAgICAgICAgcmV0dXJu
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIHRyYW5zbGF0
aW9uCiAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMCwgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsIDAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtbV9tYXRyaXhbM11bMF0sIC1tX21hdHJpeFszXVsxXSwgLW1fbWF0
cml4WzNdWzJdLCAxKTsKICAgICB9Ci0gICAgCisKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
bnZNYXQ7CiAgICAgYm9vbCBpbnZlcnRlZCA9IFdlYkNvcmU6OmludmVyc2UobV9tYXRyaXgsIGlu
dk1hdC5tX21hdHJpeCk7CiAgICAgaWYgKCFpbnZlcnRlZCkKICAgICAgICAgcmV0dXJuIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCk7Ci0gICAgCisKICAgICByZXR1cm4gaW52TWF0OwogfQogCkBAIC0x
MzQ3LDE1ICsxNDEyLDE1IEBAIHZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1ha2VBZmZpbmUo
KQogewogICAgIG1fbWF0cml4WzBdWzJdID0gMDsKICAgICBtX21hdHJpeFswXVszXSA9IDA7Ci0g
ICAgCisKICAgICBtX21hdHJpeFsxXVsyXSA9IDA7CiAgICAgbV9tYXRyaXhbMV1bM10gPSAwOwot
ICAgIAorCiAgICAgbV9tYXRyaXhbMl1bMF0gPSAwOwogICAgIG1fbWF0cml4WzJdWzFdID0gMDsK
ICAgICBtX21hdHJpeFsyXVsyXSA9IDE7CiAgICAgbV9tYXRyaXhbMl1bM10gPSAwOwotICAgIAor
CiAgICAgbV9tYXRyaXhbM11bMl0gPSAwOwogICAgIG1fbWF0cml4WzNdWzNdID0gMTsKIH0KQEAg
LTEzNzIsMTggKzE0MzcsNTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGJsZW5kRmxvYXQoZG91Ymxl
JiBmcm9tLCBkb3VibGUgdG8sIGRvdWJsZSBwcm9ncmVzcykKICAgICAgICAgZnJvbSA9IGZyb20g
KyAodG8gLSBmcm9tKSAqIHByb2dyZXNzOwogfQogCi12b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpibGVuZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNz
KQordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQyKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpCiB7Ci0gICAgaWYgKGZyb20uaXNJZGVudGl0
eSgpICYmIGlzSWRlbnRpdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAvLyBk
ZWNvbXBvc2UKLSAgICBEZWNvbXBvc2VkVHlwZSBmcm9tRGVjb21wOwotICAgIERlY29tcG9zZWRU
eXBlIHRvRGVjb21wOwotICAgIGZyb20uZGVjb21wb3NlKGZyb21EZWNvbXApOwotICAgIGRlY29t
cG9zZSh0b0RlY29tcCk7Ci0KLSAgICAvLyBpbnRlcnBvbGF0ZQorICAgIERlY29tcG9zZWQyVHlw
ZSBmcm9tRGVjb21wOworICAgIERlY29tcG9zZWQyVHlwZSB0b0RlY29tcDsKKyAgICBmcm9tLmRl
Y29tcG9zZTIoZnJvbURlY29tcCk7CisgICAgZGVjb21wb3NlMih0b0RlY29tcCk7CisKKyAgICAv
LyBJZiB4LWF4aXMgb2Ygb25lIGlzIGZsaXBwZWQsIGFuZCB5LWF4aXMgb2YgdGhlIG90aGVyLCBj
b252ZXJ0IHRvIGFuIHVuZmxpcHBlZCByb3RhdGlvbi4KKworICAgIGlmICgoZnJvbURlY29tcC5z
Y2FsZVggPCAwICYmIHRvRGVjb21wLnNjYWxlWSA8IDApIHx8IChmcm9tRGVjb21wLnNjYWxlWSA8
IDAgJiYgIHRvRGVjb21wLnNjYWxlWCA8IDApKSB7CisgICAgICAgIGZyb21EZWNvbXAuc2NhbGVY
ID0gLWZyb21EZWNvbXAuc2NhbGVYOworICAgICAgICBmcm9tRGVjb21wLnNjYWxlWSA9IC1mcm9t
RGVjb21wLnNjYWxlWTsKKyAgICAgICAgZnJvbURlY29tcC5hbmdsZSArPSBmcm9tRGVjb21wLmFu
Z2xlIDwgMCA/IE1fUEkgOiAtTV9QSTsKKyAgICB9CisKKyAgICAvLyBEb24ndCByb3RhdGUgdGhl
IGxvbmcgd2F5IGFyb3VuZC4KKyAgICBpZiAoZnJvbURlY29tcC5hbmdsZSA9PSAwKQorICAgICAg
ICBmcm9tRGVjb21wLmFuZ2xlID0gMiAqIE1fUEk7CisgICAgaWYgKHRvRGVjb21wLmFuZ2xlID09
IDApCisgICAgICAgIHRvRGVjb21wLmFuZ2xlID0gMiAqIE1fUEk7CisKKyAgICBpZiAoZmFicyhm
cm9tRGVjb21wLmFuZ2xlIC0gdG9EZWNvbXAuYW5nbGUpID4gTV9QSSkgeworICAgICAgICBpZiAo
ZnJvbURlY29tcC5hbmdsZSA+IHRvRGVjb21wLmFuZ2xlKQorICAgICAgICAgICAgZnJvbURlY29t
cC5hbmdsZSAtPSAyICogTV9QSTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG9EZWNvbXAu
YW5nbGUgLT0gMiAqIE1fUEk7CisgICAgfQorCisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0x
MSwgdG9EZWNvbXAubTExLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0x
MiwgdG9EZWNvbXAubTEyLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0y
MSwgdG9EZWNvbXAubTIxLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0y
MiwgdG9EZWNvbXAubTIyLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLnRy
YW5zbGF0ZVgsIHRvRGVjb21wLnRyYW5zbGF0ZVgsIHByb2dyZXNzKTsKKyAgICBibGVuZEZsb2F0
KGZyb21EZWNvbXAudHJhbnNsYXRlWSwgdG9EZWNvbXAudHJhbnNsYXRlWSwgcHJvZ3Jlc3MpOwor
ICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5zY2FsZVgsIHRvRGVjb21wLnNjYWxlWCwgcHJvZ3Jl
c3MpOworICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5zY2FsZVksIHRvRGVjb21wLnNjYWxlWSwg
cHJvZ3Jlc3MpOworICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5hbmdsZSwgdG9EZWNvbXAuYW5n
bGUsIHByb2dyZXNzKTsKKworICAgIHJlY29tcG9zZTIoZnJvbURlY29tcCk7Cit9CisKK3ZvaWQg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kNChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZnJvbSwgZG91YmxlIHByb2dyZXNzKQoreworICAgIERlY29tcG9zZWQ0VHlwZSBmcm9tRGVjb21w
OworICAgIERlY29tcG9zZWQ0VHlwZSB0b0RlY29tcDsKKyAgICBmcm9tLmRlY29tcG9zZTQoZnJv
bURlY29tcCk7CisgICAgZGVjb21wb3NlNCh0b0RlY29tcCk7CisKICAgICBibGVuZEZsb2F0KGZy
b21EZWNvbXAuc2NhbGVYLCB0b0RlY29tcC5zY2FsZVgsIHByb2dyZXNzKTsKICAgICBibGVuZEZs
b2F0KGZyb21EZWNvbXAuc2NhbGVZLCB0b0RlY29tcC5zY2FsZVksIHByb2dyZXNzKTsKICAgICBi
bGVuZEZsb2F0KGZyb21EZWNvbXAuc2NhbGVaLCB0b0RlY29tcC5zY2FsZVosIHByb2dyZXNzKTsK
QEAgLTEzOTcsMTQgKzE0OTgsMzcgQEAgdm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZyb20sIGRvdWJsZSBwcm9ncmUKICAgICBibGVu
ZEZsb2F0KGZyb21EZWNvbXAucGVyc3BlY3RpdmVZLCB0b0RlY29tcC5wZXJzcGVjdGl2ZVksIHBy
b2dyZXNzKTsKICAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAucGVyc3BlY3RpdmVaLCB0b0RlY29t
cC5wZXJzcGVjdGl2ZVosIHByb2dyZXNzKTsKICAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAucGVy
c3BlY3RpdmVXLCB0b0RlY29tcC5wZXJzcGVjdGl2ZVcsIHByb2dyZXNzKTsKLSAgICAKKwogICAg
IHNsZXJwKCZmcm9tRGVjb21wLnF1YXRlcm5pb25YLCAmdG9EZWNvbXAucXVhdGVybmlvblgsIHBy
b2dyZXNzKTsKLSAgICAgICAgCi0gICAgLy8gcmVjb21wb3NlCi0gICAgcmVjb21wb3NlKGZyb21E
ZWNvbXApOworCisgICAgcmVjb21wb3NlNChmcm9tRGVjb21wKTsKK30KKwordm9pZCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6YmxlbmQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZyb20sIGRv
dWJsZSBwcm9ncmVzcykKK3sKKyAgICBpZiAoZnJvbS5pc0lkZW50aXR5KCkgJiYgaXNJZGVudGl0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZnJvbS5pc0FmZmluZSgpICYmIGlzQWZm
aW5lKCkpCisgICAgICAgIGJsZW5kMihmcm9tLCBwcm9ncmVzcyk7CisgICAgZWxzZQorICAgICAg
ICBibGVuZDQoZnJvbSwgcHJvZ3Jlc3MpOworfQorCitib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpkZWNvbXBvc2UyKERlY29tcG9zZWQyVHlwZSYgZGVjb21wKSBjb25zdAoreworICAgIGlmIChp
c0lkZW50aXR5KCkpIHsKKyAgICAgICAgbWVtc2V0KCZkZWNvbXAsIDAsIHNpemVvZihkZWNvbXAp
KTsKKyAgICAgICAgZGVjb21wLnNjYWxlWCA9IDE7CisgICAgICAgIGRlY29tcC5zY2FsZVkgPSAx
OworICAgIH0KKworICAgIGlmICghV2ViQ29yZTo6ZGVjb21wb3NlMihtX21hdHJpeCwgZGVjb21w
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpkZWNvbXBvc2UoRGVjb21wb3NlZFR5cGUmIGRlY29tcCkgY29u
c3QKK2Jvb2wgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmRlY29tcG9zZTQoRGVjb21wb3NlZDRUeXBl
JiBkZWNvbXApIGNvbnN0CiB7CiAgICAgaWYgKGlzSWRlbnRpdHkoKSkgewogICAgICAgICBtZW1z
ZXQoJmRlY29tcCwgMCwgc2l6ZW9mKGRlY29tcCkpOwpAQCAtMTQxMywyNiArMTUzNyw0MSBAQCBi
b29sIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpkZWNvbXBvc2UoRGVjb21wb3NlZFR5cGUmIGRlY29t
cCkgY29uc3QKICAgICAgICAgZGVjb21wLnNjYWxlWSA9IDE7CiAgICAgICAgIGRlY29tcC5zY2Fs
ZVogPSAxOwogICAgIH0KLSAgICAKLSAgICBpZiAoIVdlYkNvcmU6OmRlY29tcG9zZShtX21hdHJp
eCwgZGVjb21wKSkKKworICAgIGlmICghV2ViQ29yZTo6ZGVjb21wb3NlNChtX21hdHJpeCwgZGVj
b21wKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2UoY29uc3QgRGVjb21wb3NlZFR5cGUmIGRl
Y29tcCkKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9zZTIoY29uc3QgRGVjb21w
b3NlZDJUeXBlJiBkZWNvbXApCiB7CiAgICAgbWFrZUlkZW50aXR5KCk7Ci0gICAgCi0gICAgLy8g
Zmlyc3QgYXBwbHkgcGVyc3BlY3RpdmUKKworICAgIG1fbWF0cml4WzBdWzBdID0gZGVjb21wLm0x
MTsKKyAgICBtX21hdHJpeFswXVsxXSA9IGRlY29tcC5tMTI7CisgICAgbV9tYXRyaXhbMV1bMF0g
PSBkZWNvbXAubTIxOworICAgIG1fbWF0cml4WzFdWzFdID0gZGVjb21wLm0yMjsKKworICAgIHRy
YW5zbGF0ZTNkKGRlY29tcC50cmFuc2xhdGVYLCBkZWNvbXAudHJhbnNsYXRlWSwgMCk7CisgICAg
aWYgKGRlY29tcC5hbmdsZSkKKyAgICAgICAgcm90YXRlKGRlY29tcC5hbmdsZSk7CisgICAgc2Nh
bGUzZChkZWNvbXAuc2NhbGVYLCBkZWNvbXAuc2NhbGVZLCAxKTsKK30KKwordm9pZCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6cmVjb21wb3NlNChjb25zdCBEZWNvbXBvc2VkNFR5cGUmIGRlY29tcCkK
K3sKKyAgICBtYWtlSWRlbnRpdHkoKTsKKworICAgIC8vIEZpcnN0IGFwcGx5IHBlcnNwZWN0aXZl
LgogICAgIG1fbWF0cml4WzBdWzNdID0gZGVjb21wLnBlcnNwZWN0aXZlWDsKICAgICBtX21hdHJp
eFsxXVszXSA9IGRlY29tcC5wZXJzcGVjdGl2ZVk7CiAgICAgbV9tYXRyaXhbMl1bM10gPSBkZWNv
bXAucGVyc3BlY3RpdmVaOwogICAgIG1fbWF0cml4WzNdWzNdID0gZGVjb21wLnBlcnNwZWN0aXZl
VzsKLSAgICAKLSAgICAvLyBub3cgdHJhbnNsYXRlCisKKyAgICAvLyBOZXh0LCB0cmFuc2xhdGUu
CiAgICAgdHJhbnNsYXRlM2QoZGVjb21wLnRyYW5zbGF0ZVgsIGRlY29tcC50cmFuc2xhdGVZLCBk
ZWNvbXAudHJhbnNsYXRlWik7Ci0gICAgCi0gICAgLy8gYXBwbHkgcm90YXRpb24KKworICAgIC8v
IEFwcGx5IHJvdGF0aW9uLgogICAgIGRvdWJsZSB4eCA9IGRlY29tcC5xdWF0ZXJuaW9uWCAqIGRl
Y29tcC5xdWF0ZXJuaW9uWDsKICAgICBkb3VibGUgeHkgPSBkZWNvbXAucXVhdGVybmlvblggKiBk
ZWNvbXAucXVhdGVybmlvblk7CiAgICAgZG91YmxlIHh6ID0gZGVjb21wLnF1YXRlcm5pb25YICog
ZGVjb21wLnF1YXRlcm5pb25aOwpAQCAtMTQ0MiwzNSArMTU4MSwzNSBAQCB2b2lkIFRyYW5zZm9y
bWF0aW9uTWF0cml4OjpyZWNvbXBvc2UoY29uc3QgRGVjb21wb3NlZFR5cGUmIGRlY29tcCkKICAg
ICBkb3VibGUgeXcgPSBkZWNvbXAucXVhdGVybmlvblkgKiBkZWNvbXAucXVhdGVybmlvblc7CiAg
ICAgZG91YmxlIHp6ID0gZGVjb21wLnF1YXRlcm5pb25aICogZGVjb21wLnF1YXRlcm5pb25aOwog
ICAgIGRvdWJsZSB6dyA9IGRlY29tcC5xdWF0ZXJuaW9uWiAqIGRlY29tcC5xdWF0ZXJuaW9uVzsK
LSAgICAKLSAgICAvLyBDb25zdHJ1Y3QgYSBjb21wb3NpdGUgcm90YXRpb24gbWF0cml4IGZyb20g
dGhlIHF1YXRlcm5pb24gdmFsdWVzCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm90YXRpb25N
YXRyaXgoMSAtIDIgKiAoeXkgKyB6eiksIDIgKiAoeHkgLSB6dyksIDIgKiAoeHogKyB5dyksIDAs
IAorCisgICAgLy8gQ29uc3RydWN0IGEgY29tcG9zaXRlIHJvdGF0aW9uIG1hdHJpeCBmcm9tIHRo
ZSBxdWF0ZXJuaW9uIHZhbHVlcy4KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb3RhdGlvbk1h
dHJpeCgxIC0gMiAqICh5eSArIHp6KSwgMiAqICh4eSAtIHp3KSwgMiAqICh4eiArIHl3KSwgMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiAoeHkgKyB6dyksIDEgLSAyICogKHh4ICsg
enopLCAyICogKHl6IC0geHcpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqICh4
eiAtIHl3KSwgMiAqICh5eiArIHh3KSwgMSAtIDIgKiAoeHggKyB5eSksIDAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAxKTsKLSAgICAKKwogICAgIG11bHRpcGx5KHJvdGF0
aW9uTWF0cml4KTsKLSAgICAKLSAgICAvLyBub3cgYXBwbHkgc2tldworCisgICAgLy8gQXBwbHkg
c2tldy4KICAgICBpZiAoZGVjb21wLnNrZXdZWikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0bXA7CiAgICAgICAgIHRtcC5zZXRNMzIoZGVjb21wLnNrZXdZWik7CiAgICAgICAgIG11
bHRpcGx5KHRtcCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlY29tcC5za2V3WFopIHsKICAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG1wOwogICAgICAgICB0bXAuc2V0TTMxKGRlY29t
cC5za2V3WFopOwogICAgICAgICBtdWx0aXBseSh0bXApOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChkZWNvbXAuc2tld1hZKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRtcDsKICAg
ICAgICAgdG1wLnNldE0yMShkZWNvbXAuc2tld1hZKTsKICAgICAgICAgbXVsdGlwbHkodG1wKTsK
ICAgICB9Ci0gICAgCi0gICAgLy8gZmluYWxseSwgYXBwbHkgc2NhbGUKKworICAgIC8vIEZpbmFs
bHksIGFwcGx5IHNjYWxlLgogICAgIHNjYWxlM2QoZGVjb21wLnNjYWxlWCwgZGVjb21wLnNjYWxl
WSwgZGVjb21wLnNjYWxlWik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aAppbmRleCAwNTY5MGVjLi4zZGY5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICNlbHNlCiAgICAgdHlwZWRlZiBkb3Vi
bGUgTWF0cml4NFs0XVs0XTsKICNlbmRpZgotCisgICAgCiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSB7IG1ha2VJZGVudGl0eSgpOyB9CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0KTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdCkgeyAqdGhpcyA9IHQ7IH0KQEAgLTI2OCwxNyArMjY4LDI5IEBA
IHB1YmxpYzoKIAogICAgIC8vIGRlY29tcG9zZSB0aGUgbWF0cml4IGludG8gaXRzIGNvbXBvbmVu
dCBwYXJ0cwogICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgICAgZG91YmxlIHNjYWxlWCwgc2Nh
bGVZOworICAgICAgICBkb3VibGUgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWTsKKyAgICAgICAgZG91
YmxlIGFuZ2xlOworICAgICAgICBkb3VibGUgbTExLCBtMTIsIG0yMSwgbTIyOworICAgIH0gRGVj
b21wb3NlZDJUeXBlOworCisgICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBkb3VibGUgc2Nh
bGVYLCBzY2FsZVksIHNjYWxlWjsKICAgICAgICAgZG91YmxlIHNrZXdYWSwgc2tld1haLCBza2V3
WVo7CiAgICAgICAgIGRvdWJsZSBxdWF0ZXJuaW9uWCwgcXVhdGVybmlvblksIHF1YXRlcm5pb25a
LCBxdWF0ZXJuaW9uVzsKICAgICAgICAgZG91YmxlIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVksIHRy
YW5zbGF0ZVo7CiAgICAgICAgIGRvdWJsZSBwZXJzcGVjdGl2ZVgsIHBlcnNwZWN0aXZlWSwgcGVy
c3BlY3RpdmVaLCBwZXJzcGVjdGl2ZVc7Ci0gICAgfSBEZWNvbXBvc2VkVHlwZTsKLSAgICAKLSAg
ICBib29sIGRlY29tcG9zZShEZWNvbXBvc2VkVHlwZSYgZGVjb21wKSBjb25zdDsKLSAgICB2b2lk
IHJlY29tcG9zZShjb25zdCBEZWNvbXBvc2VkVHlwZSYgZGVjb21wKTsKKyAgICB9IERlY29tcG9z
ZWQ0VHlwZTsKICAgICAKKyAgICBib29sIGRlY29tcG9zZTIoRGVjb21wb3NlZDJUeXBlJiBkZWNv
bXApIGNvbnN0OworICAgIHZvaWQgcmVjb21wb3NlMihjb25zdCBEZWNvbXBvc2VkMlR5cGUmIGRl
Y29tcCk7CisKKyAgICBib29sIGRlY29tcG9zZTQoRGVjb21wb3NlZDRUeXBlJiBkZWNvbXApIGNv
bnN0OworICAgIHZvaWQgcmVjb21wb3NlNChjb25zdCBEZWNvbXBvc2VkNFR5cGUmIGRlY29tcCk7
CisKICAgICB2b2lkIGJsZW5kKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MpOworICAgIHZvaWQgYmxlbmQyKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHZvaWQgYmxlbmQ0KGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpOwogCiAgICAgYm9vbCBpc0FmZmlu
ZSgpIGNvbnN0CiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212777</attachid>
            <date>2013-09-26 18:16:26 -0700</date>
            <delta_ts>2013-09-27 09:34:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112824-20130926181626.patch</filename>
            <type>text/plain</type>
            <size>37960</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDEzYjRmMjQ1NTM0OGJk
NWEyYjM1Yjk3NjQ2MDI5ZjgwYWIyMDVlZC4uZjhmNGUzMDNlYzA3NDk5YWQyNzc4YTQ3ZjExZDU5
Y2NmZjhlNGNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEzLTA5LTI2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBQcm92aWRlIDJEIE1hdHJpeCBk
ZWNvbXBvc2l0aW9uIGZvciBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjgyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIG5ldyAyZCBtYXRyaXggYmxlbmQsIHdoaWNo
IGlzIHRyaWdnZXJlZAorICAgICAgICB3aGVuIGFuaW1hdGluZyBiZXR3ZWVuIHR3byBhZmZpbmUg
M2QgbWF0cmljZXMuIFRoaXMKKyAgICAgICAgaXMgaW50ZW5kZWQgdG8gYmUgdGhlIG9mZmljaWFs
IGFsZ29yaXRobSB0aGF0IGdldHMKKyAgICAgICAgcHV0IGludG8gdGhlIFczQyBUcmFuc2Zvcm1z
IHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgVGhlIG9sZCBjb2RlIGlzIHJlbmFtZWQgd2l0aCBh
IDQgcHJlZml4IChpbmRpY2F0aW5nCisgICAgICAgIGl0IGlzIGEgYmxlbmQgYmV0d2VlbiAzZCBt
YXRyaWNlcyB1c2luZyBxdWF0ZXJuaW9ucyksCisgICAgICAgIGFuZCBuZXcgbWV0aG9kcyBhbmQg
c3RydWN0dXJlcyBmb3IgMmQgYmxlbmRpbmcgd2VyZSBhZGRlZC4KKworICAgICAgICBJIGFsc28g
dG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gY2xlYW4gdXAgYSBsb3Qgb2YKKyAgICAgICAgYmFkIFdl
YktpdCBzdHlsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXhTY2FsZUZyb21UcmFuc2Zvcm0pOiBVc2Ug
M2QgZGVjb21wb3NpdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZCk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQpOiBEaXR0
by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb21wb3NlMik6IE5ldyBtZXRob2Qg
dG8gZGVjb21wb3NlIGFuIGFmZmluZSAzZCBtYXRyaXgKKyAgICAgICAgaW50byBYL1kgc2NhbGUg
KyB0cmFuc2xhdGUsIGEgcm90YXRpb24gYW5nbGUsIHBsdXMgc29tZSBleHRyYWN0ZWQKKyAgICAg
ICAgYSxiLGMsZCBmaWVsZHMgZnJvbSB0aGUgYWZmaW5lIHNlY3Rpb24uCisgICAgICAgIChXZWJD
b3JlOjpkZWNvbXBvc2U0KTogTmV3IG5hbWUgZm9yIHRoZSBvbGQgZnVuY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQyKTogUGVyZm9ybSBsaW5lYXIg
aW50ZXJwb2xhdGlvbgorICAgICAgICBiZXR3ZWVuIHR3byAyZCBkZWNvbXBvc2l0aW9ucy4KKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpibGVuZDQpOiBOZXcgbmFtZSBm
b3IgdGhlIG9sZCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4OjpibGVuZCk6IENhbGwgYmxlbmQyIG9yIGJsZW5kNCBkZXBlbmRpbmcKKyAgICAgICAgb24g
dGhlIHR5cGUgb2YgbWF0cml4LgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXg6OmRlY29tcG9zZTIpOiBDYWxscyBpbnRvIHRoZSBkZWNvbXBvc2UyCisgICAgICAgIG1ldGhv
ZCBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpkZWNvbXBv
c2U0KTogTmV3IG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
cmVjb21wb3NlMik6IFJlY29tcG9zZXMgYSAzZCBtYXRyaXggZnJvbQorICAgICAgICBhIDJkIGRl
Y29tcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVj
b21wb3NlNCk6IE5ldyBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDogQWxsIHRoZSBjaGFuZ2VzCisgICAgICAgIGZvciB0
aGUgbmV3IG1ldGhvZHMgYWJvdmUuCisKKzIwMTMtMDktMjYgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgorCiAgICAgICAgIEV4cG9zZSBhIHNldHRpbmcgdG8gZGlzYWJsZSBoYXJkd2Fy
ZSBhY2NlbGVyYXRlZCBhbmltYXRpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE5NzgKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1MDkxMjg0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKaW5kZXggMDI1MWZjM2NhNjcwMmNhZmZhZmY4N2JlYTAxNWI4ZDBjMjk4
MDRmNy4uYjFiNTI5MWMyZjBlNGRjYmUxYTdlNmI2YWUwYTdhODJkZjE0MjI0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCkBAIC0yNTYsOCArMjU2LDggQEAgc3RhdGljIGZsb2F0IG1heFNjYWxlRnJvbVRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKICAgICBpZiAodC5pc0lkZW50aXR5
T3JUcmFuc2xhdGlvbigpKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXBvc2VEYXRhOwotICAgIHQuZGVjb21wb3NlKGRl
Y29tcG9zZURhdGEpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkNFR5cGUg
ZGVjb21wb3NlRGF0YTsKKyAgICB0LmRlY29tcG9zZTQoZGVjb21wb3NlRGF0YSk7CiAgICAgcmV0
dXJuIHN0ZDo6bWF4KGZhYnNmKGRlY29tcG9zZURhdGEuc2NhbGVYKSwgZmFic2YoZGVjb21wb3Nl
RGF0YS5zY2FsZVkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJh
bnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBlODQyMjkyNWMyZTZmNDkwYWU3NWFhMjMyYWViZmUw
YTAwNTVjZTJiLi5jZTliNWZiMzhlMTM0YTM2NzlhMzEzOWRlYTE1ZTYwNWZmYTdmZDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApA
QCAtNTMsOCArNTMsOCBAQCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZgogICAgIGZyb21ULmFwcGx5
UGVyc3BlY3RpdmUoZmxvYXRWYWx1ZUZvckxlbmd0aChmcm9tUCwgMSkpOwogICAgIHRvVC5hcHBs
eVBlcnNwZWN0aXZlKGZsb2F0VmFsdWVGb3JMZW5ndGgodG9QLCAxKSk7CiAgICAgdG9ULmJsZW5k
KGZyb21ULCBwcm9ncmVzcyk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWRU
eXBlIGRlY29tcDsKLSAgICB0b1QuZGVjb21wb3NlKGRlY29tcCk7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXg6OkRlY29tcG9zZWQ0VHlwZSBkZWNvbXA7CisgICAgdG9ULmRlY29tcG9zZTQoZGVj
b21wKTsKIAogICAgIGlmIChkZWNvbXAucGVyc3BlY3RpdmVaKSB7CiAgICAgICAgIGRvdWJsZSB2
YWwgPSAtMS4wIC8gZGVjb21wLnBlcnNwZWN0aXZlWjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCA5MDYzNGI3ZWI0ODcwMWQ1YmQ1MTE0MmYxMjMw
NjZiMmZlOTJiNTg4Li5hN2IzNGMyYzZiZTA3ZGE1MWM0MzZlMTY0YzE4MGFjYzFiZTJjZjY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Jv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC03MCw4
ICs3MCw4IEBAIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBSb3RhdGVUcmFuc2Zvcm1P
cGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wCiAgICAgdG9ULmJsZW5kKGZyb21ULCBw
cm9ncmVzcyk7CiAgICAgCiAgICAgLy8gRXh0cmFjdCB0aGUgcmVzdWx0IGFzIGEgcXVhdGVybmlv
bgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXA7Ci0gICAg
dG9ULmRlY29tcG9zZShkZWNvbXApOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBv
c2VkNFR5cGUgZGVjb21wOworICAgIHRvVC5kZWNvbXBvc2U0KGRlY29tcCk7CiAgICAgCiAgICAg
Ly8gQ29udmVydCB0aGF0IHRvIEF4aXMvQW5nbGUgZm9ybQogICAgIGRvdWJsZSB4ID0gLWRlY29t
cC5xdWF0ZXJuaW9uWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5k
ZXggYmNlNjc3NzNhNjFlN2MwMTYxZTRiOTMzZDBkNDk1ZWI5YzhlOWIzNS4uMTdkZjE3YmI1YzY1
ZDM1NThmNDFkM2QyNGJlODMyNTg2ZWFlOGExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDEzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMjEsNyArMjEsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC01NCwxNiArNTQsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8KIC8vIEFkYXB0ZWQgZnJvbSBNYXRyaXggSW52ZXJzaW9uIGJ5IFJpY2hhcmQgQ2Fy
bGluZywgR3JhcGhpY3MgR2VtcyA8aHR0cDovL3RvZy5hY20ub3JnL0dyYXBoaWNzR2Vtcy9pbmRl
eC5odG1sPi4KIAotLy8gRVVMQTogVGhlIEdyYXBoaWNzIEdlbXMgY29kZSBpcyBjb3B5cmlnaHQt
cHJvdGVjdGVkLiBJbiBvdGhlciB3b3JkcywgeW91IGNhbm5vdCBjbGFpbSB0aGUgdGV4dCBvZiB0
aGUgY29kZSAKLS8vIGFzIHlvdXIgb3duIGFuZCByZXNlbGwgaXQuIFVzaW5nIHRoZSBjb2RlIGlz
IHBlcm1pdHRlZCBpbiBhbnkgcHJvZ3JhbSwgcHJvZHVjdCwgb3IgbGlicmFyeSwgbm9uLWNvbW1l
cmNpYWwgCi0vLyBvciBjb21tZXJjaWFsLiBHaXZpbmcgY3JlZGl0IGlzIG5vdCByZXF1aXJlZCwg
dGhvdWdoIGlzIGEgbmljZSBnZXN0dXJlLiBUaGUgY29kZSBjb21lcyBhcy1pcywgYW5kIGlmIHRo
ZXJlIAotLy8gYXJlIGFueSBmbGF3cyBvciBwcm9ibGVtcyB3aXRoIGFueSBHZW1zIGNvZGUsIG5v
Ym9keSBpbnZvbHZlZCB3aXRoIEdlbXMgLSBhdXRob3JzLCBlZGl0b3JzLCBwdWJsaXNoZXJzLCBv
ciAKLS8vIHdlYm1hc3RlcnMgLSBhcmUgdG8gYmUgaGVsZCByZXNwb25zaWJsZS4gQmFzaWNhbGx5
LCBkb24ndCBiZSBhIGplcmssIGFuZCByZW1lbWJlciB0aGF0IGFueXRoaW5nIGZyZWUgY29tZXMg
CisvLyBFVUxBOiBUaGUgR3JhcGhpY3MgR2VtcyBjb2RlIGlzIGNvcHlyaWdodC1wcm90ZWN0ZWQu
IEluIG90aGVyIHdvcmRzLCB5b3UgY2Fubm90IGNsYWltIHRoZSB0ZXh0IG9mIHRoZSBjb2RlCisv
LyBhcyB5b3VyIG93biBhbmQgcmVzZWxsIGl0LiBVc2luZyB0aGUgY29kZSBpcyBwZXJtaXR0ZWQg
aW4gYW55IHByb2dyYW0sIHByb2R1Y3QsIG9yIGxpYnJhcnksIG5vbi1jb21tZXJjaWFsCisvLyBv
ciBjb21tZXJjaWFsLiBHaXZpbmcgY3JlZGl0IGlzIG5vdCByZXF1aXJlZCwgdGhvdWdoIGlzIGEg
bmljZSBnZXN0dXJlLiBUaGUgY29kZSBjb21lcyBhcy1pcywgYW5kIGlmIHRoZXJlCisvLyBhcmUg
YW55IGZsYXdzIG9yIHByb2JsZW1zIHdpdGggYW55IEdlbXMgY29kZSwgbm9ib2R5IGludm9sdmVk
IHdpdGggR2VtcyAtIGF1dGhvcnMsIGVkaXRvcnMsIHB1Ymxpc2hlcnMsIG9yCisvLyB3ZWJtYXN0
ZXJzIC0gYXJlIHRvIGJlIGhlbGQgcmVzcG9uc2libGUuIEJhc2ljYWxseSwgZG9uJ3QgYmUgYSBq
ZXJrLCBhbmQgcmVtZW1iZXIgdGhhdCBhbnl0aGluZyBmcmVlIGNvbWVzCiAvLyB3aXRoIG5vIGd1
YXJhbnRlZS4KIAogLy8gQSBjbGFyaWZpY2F0aW9uIGFib3V0IHRoZSBzdG9yYWdlIG9mIG1hdHJp
eCBlbGVtZW50cwogLy8KLS8vIFRoaXMgY2xhc3MgdXNlcyBhIDIgZGltZW5zaW9uYWwgYXJyYXkg
aW50ZXJuYWxseSB0byBzdG9yZSB0aGUgZWxlbWVudHMgb2YgdGhlIG1hdHJpeC4gIFRoZSBmaXJz
dCBpbmRleCBpbnRvIAorLy8gVGhpcyBjbGFzcyB1c2VzIGEgMiBkaW1lbnNpb25hbCBhcnJheSBp
bnRlcm5hbGx5IHRvIHN0b3JlIHRoZSBlbGVtZW50cyBvZiB0aGUgbWF0cml4LiBUaGUgZmlyc3Qg
aW5kZXggaW50bwogLy8gdGhlIGFycmF5IHJlZmVycyB0byB0aGUgY29sdW1uIHRoYXQgdGhlIGVs
ZW1lbnQgbGllcyBpbjsgdGhlIHNlY29uZCBpbmRleCByZWZlcnMgdG8gdGhlIHJvdy4KIC8vCiAv
LyBJbiBvdGhlciB3b3JkcywgdGhpcyBpcyB0aGUgbGF5b3V0IG9mIHRoZSBtYXRyaXg6CkBAIC03
OSwxNSArNzksMTUgQEAgdHlwZWRlZiBkb3VibGUgVmVjdG9yM1szXTsKIGNvbnN0IGRvdWJsZSBT
TUFMTF9OVU1CRVIgPSAxLmUtODsKIAogLy8gaW52ZXJzZShvcmlnaW5hbF9tYXRyaXgsIGludmVy
c2VfbWF0cml4KQotLy8gCisvLwogLy8gY2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIGEgNHg0IG1h
dHJpeAotLy8gCi0vLyAtMSAgICAgCisvLworLy8gLTEKIC8vIEEgID0gX19fMV9fIGFkam9pbnQg
QQogLy8gICAgICAgZGV0IEEKIAogLy8gIGRvdWJsZSA9IGRldGVybWluYW50MngyKGRvdWJsZSBh
LCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkKQotLy8gIAorLy8KIC8vICBjYWxjdWxhdGUg
dGhlIGRldGVybWluYW50IG9mIGEgMngyIG1hdHJpeC4KIAogc3RhdGljIGRvdWJsZSBkZXRlcm1p
bmFudDJ4Mihkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCkKQEAgLTk2LDEw
ICs5NiwxMCBAQCBzdGF0aWMgZG91YmxlIGRldGVybWluYW50MngyKGRvdWJsZSBhLCBkb3VibGUg
YiwgZG91YmxlIGMsIGRvdWJsZSBkKQogfQogCiAvLyAgZG91YmxlID0gZGV0ZXJtaW5hbnQzeDMo
YTEsIGEyLCBhMywgYjEsIGIyLCBiMywgYzEsIGMyLCBjMykKLS8vICAKKy8vCiAvLyAgQ2FsY3Vs
YXRlIHRoZSBkZXRlcm1pbmFudCBvZiBhIDN4MyBtYXRyaXgKIC8vICBpbiB0aGUgZm9ybQotLy8g
CisvLwogLy8gICAgICB8IGExLCAgYjEsICBjMSB8CiAvLyAgICAgIHwgYTIsICBiMiwgIGMyIHwK
IC8vICAgICAgfCBhMywgIGIzLCAgYzMgfApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBkb3Vi
bGUgZGV0ZXJtaW5hbnQzeDMoZG91YmxlIGExLCBkb3VibGUgYTIsIGRvdWJsZSBhMywgZG91Ymxl
IGIxLCBkb3VibGUKIH0KIAogLy8gIGRvdWJsZSA9IGRldGVybWluYW50NHg0KG1hdHJpeCkKLS8v
ICAKKy8vCiAvLyAgY2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudCBvZiBhIDR4NCBtYXRyaXguCiAK
IHN0YXRpYyBkb3VibGUgZGV0ZXJtaW5hbnQ0eDQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6
Ok1hdHJpeDQmIG0pCkBAIC0xMjEsMjIgKzEyMSwyMiBAQCBzdGF0aWMgZG91YmxlIGRldGVybWlu
YW50NHg0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtKQogICAgIC8vIGNv
cnJlY3QgZWxlbWVudHMKIAogICAgIGRvdWJsZSBhMSA9IG1bMF1bMF07Ci0gICAgZG91YmxlIGIx
ID0gbVswXVsxXTsgCisgICAgZG91YmxlIGIxID0gbVswXVsxXTsKICAgICBkb3VibGUgYzEgPSBt
WzBdWzJdOwogICAgIGRvdWJsZSBkMSA9IG1bMF1bM107CiAKICAgICBkb3VibGUgYTIgPSBtWzFd
WzBdOwotICAgIGRvdWJsZSBiMiA9IG1bMV1bMV07IAorICAgIGRvdWJsZSBiMiA9IG1bMV1bMV07
CiAgICAgZG91YmxlIGMyID0gbVsxXVsyXTsKICAgICBkb3VibGUgZDIgPSBtWzFdWzNdOwogCi0g
ICAgZG91YmxlIGEzID0gbVsyXVswXTsgCisgICAgZG91YmxlIGEzID0gbVsyXVswXTsKICAgICBk
b3VibGUgYjMgPSBtWzJdWzFdOwogICAgIGRvdWJsZSBjMyA9IG1bMl1bMl07CiAgICAgZG91Ymxl
IGQzID0gbVsyXVszXTsKIAogICAgIGRvdWJsZSBhNCA9IG1bM11bMF07Ci0gICAgZG91YmxlIGI0
ID0gbVszXVsxXTsgCisgICAgZG91YmxlIGI0ID0gbVszXVsxXTsKICAgICBkb3VibGUgYzQgPSBt
WzNdWzJdOwogICAgIGRvdWJsZSBkNCA9IG1bM11bM107CiAKQEAgLTE1NCwxMSArMTU0LDExIEBA
IHN0YXRpYyBkb3VibGUgZGV0ZXJtaW5hbnQ0eDQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6
Ok1hdHJpeDQmIG0pCiAvLyAgICAgICAgIGlqCiAvLwogLy8gICAgZGVsZXRpbmcgdGhlIGl0aCBy
b3cgYW5kIGp0aCBjb2x1bW4gZnJvbSBBLgotLy8gCisvLwogLy8gICAgICAgICAgICAgICAgICBp
K2oKIC8vICAgTGV0ICBiICAgPSAoLTEpICAgIGEKIC8vICAgICAgICBpaiAgICAgICAgICAgIGpp
Ci0vLyAKKy8vCiAvLyAgVGhlIG1hdHJpeCBCID0gKGIgICkgaXMgdGhlIGFkam9pbnQgb2YgQQog
Ly8gICAgICAgICAgICAgICAgICAgaWoKIApAQCAtMTY3LDEyICsxNjcsMTIgQEAgc3RhdGljIHZv
aWQgYWRqb2ludChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0cml4LCBU
cmFuc2Zvcm1hdGlvbk0KICAgICAvLyBBc3NpZ24gdG8gaW5kaXZpZHVhbCB2YXJpYWJsZSBuYW1l
cyB0byBhaWQKICAgICAvLyBzZWxlY3RpbmcgY29ycmVjdCB2YWx1ZXMKICAgICBkb3VibGUgYTEg
PSBtYXRyaXhbMF1bMF07Ci0gICAgZG91YmxlIGIxID0gbWF0cml4WzBdWzFdOyAKKyAgICBkb3Vi
bGUgYjEgPSBtYXRyaXhbMF1bMV07CiAgICAgZG91YmxlIGMxID0gbWF0cml4WzBdWzJdOwogICAg
IGRvdWJsZSBkMSA9IG1hdHJpeFswXVszXTsKIAogICAgIGRvdWJsZSBhMiA9IG1hdHJpeFsxXVsw
XTsKLSAgICBkb3VibGUgYjIgPSBtYXRyaXhbMV1bMV07IAorICAgIGRvdWJsZSBiMiA9IG1hdHJp
eFsxXVsxXTsKICAgICBkb3VibGUgYzIgPSBtYXRyaXhbMV1bMl07CiAgICAgZG91YmxlIGQyID0g
bWF0cml4WzFdWzNdOwogCkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgYWRqb2ludChj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0cml4LCBUcmFuc2Zvcm1hdGlv
bk0KICAgICBkb3VibGUgZDMgPSBtYXRyaXhbMl1bM107CiAKICAgICBkb3VibGUgYTQgPSBtYXRy
aXhbM11bMF07Ci0gICAgZG91YmxlIGI0ID0gbWF0cml4WzNdWzFdOyAKKyAgICBkb3VibGUgYjQg
PSBtYXRyaXhbM11bMV07CiAgICAgZG91YmxlIGM0ID0gbWF0cml4WzNdWzJdOwogICAgIGRvdWJs
ZSBkNCA9IG1hdHJpeFszXVszXTsKIApAQCAtMTkxLDE3ICsxOTEsMTcgQEAgc3RhdGljIHZvaWQg
YWRqb2ludChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0cml4LCBUcmFu
c2Zvcm1hdGlvbk0KICAgICByZXN1bHRbMV1bMF0gID0gLSBkZXRlcm1pbmFudDN4MyhhMiwgYTMs
IGE0LCBjMiwgYzMsIGM0LCBkMiwgZDMsIGQ0KTsKICAgICByZXN1bHRbMl1bMF0gID0gICBkZXRl
cm1pbmFudDN4MyhhMiwgYTMsIGE0LCBiMiwgYjMsIGI0LCBkMiwgZDMsIGQ0KTsKICAgICByZXN1
bHRbM11bMF0gID0gLSBkZXRlcm1pbmFudDN4MyhhMiwgYTMsIGE0LCBiMiwgYjMsIGI0LCBjMiwg
YzMsIGM0KTsKLSAgICAgICAgCisKICAgICByZXN1bHRbMF1bMV0gID0gLSBkZXRlcm1pbmFudDN4
MyhiMSwgYjMsIGI0LCBjMSwgYzMsIGM0LCBkMSwgZDMsIGQ0KTsKICAgICByZXN1bHRbMV1bMV0g
ID0gICBkZXRlcm1pbmFudDN4MyhhMSwgYTMsIGE0LCBjMSwgYzMsIGM0LCBkMSwgZDMsIGQ0KTsK
ICAgICByZXN1bHRbMl1bMV0gID0gLSBkZXRlcm1pbmFudDN4MyhhMSwgYTMsIGE0LCBiMSwgYjMs
IGI0LCBkMSwgZDMsIGQ0KTsKICAgICByZXN1bHRbM11bMV0gID0gICBkZXRlcm1pbmFudDN4Myhh
MSwgYTMsIGE0LCBiMSwgYjMsIGI0LCBjMSwgYzMsIGM0KTsKLSAgICAgICAgCisKICAgICByZXN1
bHRbMF1bMl0gID0gICBkZXRlcm1pbmFudDN4MyhiMSwgYjIsIGI0LCBjMSwgYzIsIGM0LCBkMSwg
ZDIsIGQ0KTsKICAgICByZXN1bHRbMV1bMl0gID0gLSBkZXRlcm1pbmFudDN4MyhhMSwgYTIsIGE0
LCBjMSwgYzIsIGM0LCBkMSwgZDIsIGQ0KTsKICAgICByZXN1bHRbMl1bMl0gID0gICBkZXRlcm1p
bmFudDN4MyhhMSwgYTIsIGE0LCBiMSwgYjIsIGI0LCBkMSwgZDIsIGQ0KTsKICAgICByZXN1bHRb
M11bMl0gID0gLSBkZXRlcm1pbmFudDN4MyhhMSwgYTIsIGE0LCBiMSwgYjIsIGI0LCBjMSwgYzIs
IGM0KTsKLSAgICAgICAgCisKICAgICByZXN1bHRbMF1bM10gID0gLSBkZXRlcm1pbmFudDN4Myhi
MSwgYjIsIGIzLCBjMSwgYzIsIGMzLCBkMSwgZDIsIGQzKTsKICAgICByZXN1bHRbMV1bM10gID0g
ICBkZXRlcm1pbmFudDN4MyhhMSwgYTIsIGEzLCBjMSwgYzIsIGMzLCBkMSwgZDIsIGQzKTsKICAg
ICByZXN1bHRbMl1bM10gID0gLSBkZXRlcm1pbmFudDN4MyhhMSwgYTIsIGEzLCBiMSwgYjIsIGIz
LCBkMSwgZDIsIGQzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgYm9vbCBpbnZlcnNlKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXRyaXgsIFRyYW5zZm9ybWF0aW9u
TQogICAgIGFkam9pbnQobWF0cml4LCByZXN1bHQpOwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSA0
eDQgZGV0ZXJtaW5hbnQKLSAgICAvLyBJZiB0aGUgZGV0ZXJtaW5hbnQgaXMgemVybywgCisgICAg
Ly8gSWYgdGhlIGRldGVybWluYW50IGlzIHplcm8sCiAgICAgLy8gdGhlbiB0aGUgaW52ZXJzZSBt
YXRyaXggaXMgbm90IHVuaXF1ZS4KICAgICBkb3VibGUgZGV0ID0gZGV0ZXJtaW5hbnQ0eDQobWF0
cml4KTsKIApAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBkb3VibGUgdjNMZW5ndGgoVmVjdG9y
MyBhKQogICAgIHJldHVybiBzcXJ0KChhWzBdICogYVswXSkgKyAoYVsxXSAqIGFbMV0pICsgKGFb
Ml0gKiBhWzJdKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHYzU2NhbGUoVmVjdG9yMyB2LCBkb3VibGUg
ZGVzaXJlZExlbmd0aCkgCitzdGF0aWMgdm9pZCB2M1NjYWxlKFZlY3RvcjMgdiwgZG91YmxlIGRl
c2lyZWRMZW5ndGgpCiB7CiAgICAgZG91YmxlIGxlbiA9IHYzTGVuZ3RoKHYpOwogICAgIGlmIChs
ZW4gIT0gMCkgewpAQCAtMjczLDcgKzI3Myw3IEBAIHN0YXRpYyB2b2lkIHYzU2NhbGUoVmVjdG9y
MyB2LCBkb3VibGUgZGVzaXJlZExlbmd0aCkKICAgICB9CiB9CiAKLXN0YXRpYyBkb3VibGUgdjNE
b3QoY29uc3QgVmVjdG9yMyBhLCBjb25zdCBWZWN0b3IzIGIpIAorc3RhdGljIGRvdWJsZSB2M0Rv
dChjb25zdCBWZWN0b3IzIGEsIGNvbnN0IFZlY3RvcjMgYikKIHsKICAgICByZXR1cm4gKGFbMF0g
KiBiWzBdKSArIChhWzFdICogYlsxXSkgKyAoYVsyXSAqIGJbMl0pOwogfQpAQCAtMjk1LDcgKzI5
NSw3MCBAQCBzdGF0aWMgdm9pZCB2M0Nyb3NzKGNvbnN0IFZlY3RvcjMgYSwgY29uc3QgVmVjdG9y
MyBiLCBWZWN0b3IzIHJlc3VsdCkKICAgICByZXN1bHRbMl0gPSAoYVswXSAqIGJbMV0pIC0gKGFb
MV0gKiBiWzBdKTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2Vk
VHlwZSYgcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb21wb3NlMihjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6TWF0cml4NCYgbWF0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVjb21wb3NlZDJU
eXBlJiByZXN1bHQpCit7CisgICAgZG91YmxlIHJvdzB4ID0gbWF0WzBdWzBdOworICAgIGRvdWJs
ZSByb3cweSA9IG1hdFswXVsxXTsKKyAgICBkb3VibGUgcm93MXggPSBtYXRbMV1bMF07CisgICAg
ZG91YmxlIHJvdzF5ID0gbWF0WzFdWzFdOworICAgIHJlc3VsdC50cmFuc2xhdGVYID0gbWF0WzNd
WzBdOworICAgIHJlc3VsdC50cmFuc2xhdGVZID0gbWF0WzNdWzFdOworCisgICAgLy8gQ29tcHV0
ZSBzY2FsaW5nIGZhY3RvcnMuCisKKyAgICByZXN1bHQuc2NhbGVYID0gc3FydChyb3cweCAqIHJv
dzB4ICsgcm93MHkgKiByb3cweSk7CisgICAgcmVzdWx0LnNjYWxlWSA9IHNxcnQocm93MXggKiBy
b3cxeCArIHJvdzF5ICogcm93MXkpOworCisgICAgLy8gSWYgZGV0ZXJtaW5hbnQgaXMgbmVnYXRp
dmUsIG9uZSBheGlzIHdhcyBmbGlwcGVkLgorICAgIGRvdWJsZSBkZXRlcm1pbmFudCA9IHJvdzB4
ICogcm93MXkgLSByb3cweSAqIHJvdzF4OworICAgIGlmIChkZXRlcm1pbmFudCA8IDApIHsKKyAg
ICAgICAgLy8gRmxpcCBheGlzIHdpdGggbWluaW11bSB1bml0IHZlY3RvciBkb3QgcHJvZHVjdC4K
KyAgICAgICAgaWYgKHJvdzB4IDwgcm93MXkpCisgICAgICAgICAgICByZXN1bHQuc2NhbGVYID0g
LXJlc3VsdC5zY2FsZVg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5zY2FsZVkg
PSAtcmVzdWx0LnNjYWxlWTsKKyAgICB9CisKKyAgICAvLyBSZW5vcm1hbGl6ZSBtYXRyaXggdG8g
cmVtb3ZlIHNjYWxlLgorCisgICAgaWYgKHJlc3VsdC5zY2FsZVgpIHsKKyAgICAgICAgcm93MHgg
Kj0gMSAvIHJlc3VsdC5zY2FsZVg7CisgICAgICAgIHJvdzB5ICo9IDEgLyByZXN1bHQuc2NhbGVY
OworICAgIH0KKyAgICBpZiAocmVzdWx0LnNjYWxlWSkgeworICAgICAgICByb3cxeCAqPSAxIC8g
cmVzdWx0LnNjYWxlWTsKKyAgICAgICAgcm93MXkgKj0gMSAvIHJlc3VsdC5zY2FsZVk7CisgICAg
fQorCisgICAgLy8gQ29tcHV0ZSByb3RhdGlvbiBhbmQgcmVub3JtYWxpemUgbWF0cml4LgorCisg
ICAgcmVzdWx0LmFuZ2xlID0gYXRhbjIocm93MHksIHJvdzB4KTsKKworICAgIGlmIChyZXN1bHQu
YW5nbGUpIHsKKyAgICAgICAgLy8gUm90YXRlKC1hbmdsZSkgPSBbY3MsIHNuOyAtc24sIGNzXS4K
KyAgICAgICAgZG91YmxlIHNuID0gc2luKC1yZXN1bHQuYW5nbGUpOworICAgICAgICBkb3VibGUg
Y3MgPSBjb3MoLXJlc3VsdC5hbmdsZSk7CisKKyAgICAgICAgZG91YmxlIG0xMSA9IHJvdzB4LCBt
MTIgPSByb3cweTsKKyAgICAgICAgZG91YmxlIG0yMSA9IHJvdzF4LCBtMjIgPSByb3cxeTsKKyAg
ICAgICAgcm93MHggPSBjcyAqIG0xMSArIHNuICogbTIxOworICAgICAgICByb3cweSA9IGNzICog
bTEyICsgc24gKiBtMjI7CisgICAgICAgIHJvdzF4ID0gLXNuICogbTExICsgY3MgKiBtMjE7Cisg
ICAgICAgIHJvdzF5ID0gLXNuICogbTEyICsgY3MgKiBtMjI7CisgICAgfQorCisgICAgcmVzdWx0
Lm0xMSA9IHJvdzB4OworICAgIHJlc3VsdC5tMTIgPSByb3cweTsKKyAgICByZXN1bHQubTIxID0g
cm93MXg7CisgICAgcmVzdWx0Lm0yMiA9IHJvdzF5OworCisgICAgLy8gQ29udmVydCBpbnRvIGRl
Z3JlZXMgYmVjYXVzZSBvdXIgcm90YXRpb24gZnVuY3Rpb25zIGV4cGVjdCBpdC4KKyAgICByZXN1
bHQuYW5nbGUgPSByYWQyZGVnKHJlc3VsdC5hbmdsZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGJvb2wgZGVjb21wb3NlNChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0
cml4NCYgbWF0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVjb21wb3NlZDRUeXBlJiByZXN1bHQp
CiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQgbG9jYWxNYXRyaXg7CiAgICAg
bWVtY3B5KGxvY2FsTWF0cml4LCBtYXQsIHNpemVvZihUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0
cml4NCkpOwpAQCAtMzIwLDcgKzM4Myw3IEBAIHN0YXRpYyBib29sIGRlY29tcG9zZShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0LCBUcmFuc2Zvcm1hdGlvbk1hCiAgICAg
aWYgKGRldGVybWluYW50NHg0KHBlcnNwZWN0aXZlTWF0cml4KSA9PSAwKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBGaXJzdCwgaXNvbGF0ZSBwZXJzcGVjdGl2ZS4gIFRoaXMgaXMg
dGhlIG1lc3NpZXN0LgorICAgIC8vIEZpcnN0LCBpc29sYXRlIHBlcnNwZWN0aXZlLiBUaGlzIGlz
IHRoZSBtZXNzaWVzdC4KICAgICBpZiAobG9jYWxNYXRyaXhbMF1bM10gIT0gMCB8fCBsb2NhbE1h
dHJpeFsxXVszXSAhPSAwIHx8IGxvY2FsTWF0cml4WzJdWzNdICE9IDApIHsKICAgICAgICAgLy8g
cmlnaHRIYW5kU2lkZSBpcyB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSBlcXVhdGlvbi4KICAg
ICAgICAgVmVjdG9yNCByaWdodEhhbmRTaWRlOwpAQCAtMzMwLDcgKzM5Myw3IEBAIHN0YXRpYyBi
b29sIGRlY29tcG9zZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0LCBU
cmFuc2Zvcm1hdGlvbk1hCiAgICAgICAgIHJpZ2h0SGFuZFNpZGVbM10gPSBsb2NhbE1hdHJpeFsz
XVszXTsKIAogICAgICAgICAvLyBTb2x2ZSB0aGUgZXF1YXRpb24gYnkgaW52ZXJ0aW5nIHBlcnNw
ZWN0aXZlTWF0cml4IGFuZCBtdWx0aXBseWluZwotICAgICAgICAvLyByaWdodEhhbmRTaWRlIGJ5
IHRoZSBpbnZlcnNlLiAgKFRoaXMgaXMgdGhlIGVhc2llc3Qgd2F5LCBub3QKKyAgICAgICAgLy8g
cmlnaHRIYW5kU2lkZSBieSB0aGUgaW52ZXJzZS4gKFRoaXMgaXMgdGhlIGVhc2llc3Qgd2F5LCBu
b3QKICAgICAgICAgLy8gbmVjZXNzYXJpbHkgdGhlIGJlc3QuKQogICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6TWF0cml4NCBpbnZlcnNlUGVyc3BlY3RpdmVNYXRyaXgsIHRyYW5zcG9zZWRJ
bnZlcnNlUGVyc3BlY3RpdmVNYXRyaXg7CiAgICAgICAgIGludmVyc2UocGVyc3BlY3RpdmVNYXRy
aXgsIGludmVyc2VQZXJzcGVjdGl2ZU1hdHJpeCk7CkBAIC0zMzgsMTIgKzQwMSwxMiBAQCBzdGF0
aWMgYm9vbCBkZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1h
dCwgVHJhbnNmb3JtYXRpb25NYQogCiAgICAgICAgIFZlY3RvcjQgcGVyc3BlY3RpdmVQb2ludDsK
ICAgICAgICAgdjRNdWxQb2ludEJ5TWF0cml4KHJpZ2h0SGFuZFNpZGUsIHRyYW5zcG9zZWRJbnZl
cnNlUGVyc3BlY3RpdmVNYXRyaXgsIHBlcnNwZWN0aXZlUG9pbnQpOwotIAorCiAgICAgICAgIHJl
c3VsdC5wZXJzcGVjdGl2ZVggPSBwZXJzcGVjdGl2ZVBvaW50WzBdOwogICAgICAgICByZXN1bHQu
cGVyc3BlY3RpdmVZID0gcGVyc3BlY3RpdmVQb2ludFsxXTsKICAgICAgICAgcmVzdWx0LnBlcnNw
ZWN0aXZlWiA9IHBlcnNwZWN0aXZlUG9pbnRbMl07CiAgICAgICAgIHJlc3VsdC5wZXJzcGVjdGl2
ZVcgPSBwZXJzcGVjdGl2ZVBvaW50WzNdOwotICAgICAgICAKKwogICAgICAgICAvLyBDbGVhciB0
aGUgcGVyc3BlY3RpdmUgcGFydGl0aW9uCiAgICAgICAgIGxvY2FsTWF0cml4WzBdWzNdID0gbG9j
YWxNYXRyaXhbMV1bM10gPSBsb2NhbE1hdHJpeFsyXVszXSA9IDA7CiAgICAgICAgIGxvY2FsTWF0
cml4WzNdWzNdID0gMTsKQEAgLTM1Miw3ICs0MTUsNyBAQCBzdGF0aWMgYm9vbCBkZWNvbXBvc2Uo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJhbnNmb3JtYXRpb25N
YQogICAgICAgICByZXN1bHQucGVyc3BlY3RpdmVYID0gcmVzdWx0LnBlcnNwZWN0aXZlWSA9IHJl
c3VsdC5wZXJzcGVjdGl2ZVogPSAwOwogICAgICAgICByZXN1bHQucGVyc3BlY3RpdmVXID0gMTsK
ICAgICB9Ci0gICAgCisKICAgICAvLyBOZXh0IHRha2UgY2FyZSBvZiB0cmFuc2xhdGlvbiAoZWFz
eSkuCiAgICAgcmVzdWx0LnRyYW5zbGF0ZVggPSBsb2NhbE1hdHJpeFszXVswXTsKICAgICBsb2Nh
bE1hdHJpeFszXVswXSA9IDA7CkBAIC0zOTUsOSArNDU4LDkgQEAgc3RhdGljIGJvb2wgZGVjb21w
b3NlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0
aW9uTWEKICAgICB2M1NjYWxlKHJvd1syXSwgMS4wKTsKICAgICByZXN1bHQuc2tld1haIC89IHJl
c3VsdC5zY2FsZVo7CiAgICAgcmVzdWx0LnNrZXdZWiAvPSByZXN1bHQuc2NhbGVaOwotIAorCiAg
ICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIG1hdHJpeCAoaW4gcm93c1tdKSBpcyBvcnRob25vcm1h
bC4KLSAgICAvLyBDaGVjayBmb3IgYSBjb29yZGluYXRlIHN5c3RlbSBmbGlwLiAgSWYgdGhlIGRl
dGVybWluYW50CisgICAgLy8gQ2hlY2sgZm9yIGEgY29vcmRpbmF0ZSBzeXN0ZW0gZmxpcC4gSWYg
dGhlIGRldGVybWluYW50CiAgICAgLy8gaXMgLTEsIHRoZW4gbmVnYXRlIHRoZSBtYXRyaXggYW5k
IHRoZSBzY2FsaW5nIGZhY3RvcnMuCiAgICAgdjNDcm9zcyhyb3dbMV0sIHJvd1syXSwgcGR1bTMp
OwogICAgIGlmICh2M0RvdChyb3dbMF0sIHBkdW0zKSA8IDApIHsKQEAgLTQxMiw5ICs0NzUsOSBA
QCBzdGF0aWMgYm9vbCBkZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJp
eDQmIG1hdCwgVHJhbnNmb3JtYXRpb25NYQogICAgICAgICAgICAgcm93W2ldWzJdICo9IC0xOwog
ICAgICAgICB9CiAgICAgfQotIAorCiAgICAgLy8gTm93LCBnZXQgdGhlIHJvdGF0aW9ucyBvdXQs
IGFzIGRlc2NyaWJlZCBpbiB0aGUgZ2VtLgotICAgIAorCiAgICAgLy8gRklYTUUgLSBBZGQgdGhl
IGFiaWxpdHkgdG8gcmV0dXJuIGVpdGhlciBxdWF0ZXJuaW9ucyAod2hpY2ggYXJlCiAgICAgLy8g
ZWFzaWVyIHRvIHJlY29tcG9zZSB3aXRoKSBvciBFdWxlciBhbmdsZXMgKHJ4LCByeSwgcnopLCB3
aGljaAogICAgIC8vIGFyZSBlYXNpZXIgZm9yIGF1dGhvcnMgdG8gZGVhbCB3aXRoLiBUaGUgbGF0
dGVyIHdpbGwgb25seSBiZSB1c2VmdWwKQEAgLTQyOSw3ICs0OTIsNyBAQCBzdGF0aWMgYm9vbCBk
ZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJhbnNm
b3JtYXRpb25NYQogICAgIC8vICAgICByZXQucm90YXRlWCA9IGF0YW4yKC1yb3dbMl1bMF0sIHJv
d1sxXVsxXSk7CiAgICAgLy8gICAgIHJldC5yb3RhdGVaID0gMDsKICAgICAvLyB9Ci0gICAgCisK
ICAgICBkb3VibGUgcywgdCwgeCwgeSwgeiwgdzsKIAogICAgIHQgPSByb3dbMF1bMF0gKyByb3db
MV1bMV0gKyByb3dbMl1bMl0gKyAxLjA7CkBAIC00NDAsMjIgKzUwMywyMiBAQCBzdGF0aWMgYm9v
bCBkZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJh
bnNmb3JtYXRpb25NYQogICAgICAgICB4ID0gKHJvd1syXVsxXSAtIHJvd1sxXVsyXSkgKiBzOwog
ICAgICAgICB5ID0gKHJvd1swXVsyXSAtIHJvd1syXVswXSkgKiBzOwogICAgICAgICB6ID0gKHJv
d1sxXVswXSAtIHJvd1swXVsxXSkgKiBzOwotICAgIH0gZWxzZSBpZiAocm93WzBdWzBdID4gcm93
WzFdWzFdICYmIHJvd1swXVswXSA+IHJvd1syXVsyXSkgeyAKLSAgICAgICAgcyA9IHNxcnQgKDEu
MCArIHJvd1swXVswXSAtIHJvd1sxXVsxXSAtIHJvd1syXVsyXSkgKiAyLjA7IC8vIFM9NCpxeCAK
KyAgICB9IGVsc2UgaWYgKHJvd1swXVswXSA+IHJvd1sxXVsxXSAmJiByb3dbMF1bMF0gPiByb3db
Ml1bMl0pIHsKKyAgICAgICAgcyA9IHNxcnQoMS4wICsgcm93WzBdWzBdIC0gcm93WzFdWzFdIC0g
cm93WzJdWzJdKSAqIDIuMDsgLy8gUyA9IDQgKiBxeC4KICAgICAgICAgeCA9IDAuMjUgKiBzOwot
ICAgICAgICB5ID0gKHJvd1swXVsxXSArIHJvd1sxXVswXSkgLyBzOyAKLSAgICAgICAgeiA9IChy
b3dbMF1bMl0gKyByb3dbMl1bMF0pIC8gczsgCisgICAgICAgIHkgPSAocm93WzBdWzFdICsgcm93
WzFdWzBdKSAvIHM7CisgICAgICAgIHogPSAocm93WzBdWzJdICsgcm93WzJdWzBdKSAvIHM7CiAg
ICAgICAgIHcgPSAocm93WzJdWzFdIC0gcm93WzFdWzJdKSAvIHM7Ci0gICAgfSBlbHNlIGlmIChy
b3dbMV1bMV0gPiByb3dbMl1bMl0pIHsgCi0gICAgICAgIHMgPSBzcXJ0ICgxLjAgKyByb3dbMV1b
MV0gLSByb3dbMF1bMF0gLSByb3dbMl1bMl0pICogMi4wOyAvLyBTPTQqcXkKLSAgICAgICAgeCA9
IChyb3dbMF1bMV0gKyByb3dbMV1bMF0pIC8gczsgCisgICAgfSBlbHNlIGlmIChyb3dbMV1bMV0g
PiByb3dbMl1bMl0pIHsKKyAgICAgICAgcyA9IHNxcnQoMS4wICsgcm93WzFdWzFdIC0gcm93WzBd
WzBdIC0gcm93WzJdWzJdKSAqIDIuMDsgLy8gUyA9IDQgKiBxeS4KKyAgICAgICAgeCA9IChyb3db
MF1bMV0gKyByb3dbMV1bMF0pIC8gczsKICAgICAgICAgeSA9IDAuMjUgKiBzOwotICAgICAgICB6
ID0gKHJvd1sxXVsyXSArIHJvd1syXVsxXSkgLyBzOyAKKyAgICAgICAgeiA9IChyb3dbMV1bMl0g
KyByb3dbMl1bMV0pIC8gczsKICAgICAgICAgdyA9IChyb3dbMF1bMl0gLSByb3dbMl1bMF0pIC8g
czsKLSAgICB9IGVsc2UgeyAKLSAgICAgICAgcyA9IHNxcnQoMS4wICsgcm93WzJdWzJdIC0gcm93
WzBdWzBdIC0gcm93WzFdWzFdKSAqIDIuMDsgLy8gUz00KnF6CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcyA9IHNxcnQoMS4wICsgcm93WzJdWzJdIC0gcm93WzBdWzBdIC0gcm93WzFdWzFdKSAqIDIu
MDsgLy8gUyA9IDQgKiBxei4KICAgICAgICAgeCA9IChyb3dbMF1bMl0gKyByb3dbMl1bMF0pIC8g
czsKLSAgICAgICAgeSA9IChyb3dbMV1bMl0gKyByb3dbMl1bMV0pIC8gczsgCisgICAgICAgIHkg
PSAocm93WzFdWzJdICsgcm93WzJdWzFdKSAvIHM7CiAgICAgICAgIHogPSAwLjI1ICogczsKICAg
ICAgICAgdyA9IChyb3dbMV1bMF0gLSByb3dbMF1bMV0pIC8gczsKICAgICB9CkBAIC00NjQsMTIg
KzUyNywxMiBAQCBzdGF0aWMgYm9vbCBkZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXg6Ok1hdHJpeDQmIG1hdCwgVHJhbnNmb3JtYXRpb25NYQogICAgIHJlc3VsdC5xdWF0ZXJuaW9u
WSA9IHk7CiAgICAgcmVzdWx0LnF1YXRlcm5pb25aID0gejsKICAgICByZXN1bHQucXVhdGVybmlv
blcgPSB3OwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIFBlcmZvcm0gYSBzcGhl
cmljYWwgbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiB0aGUgdHdvCi0vLyBwYXNzZWQgcXVh
dGVybmlvbnMgd2l0aCAwIDw9IHQgPD0gMQorLy8gcGFzc2VkIHF1YXRlcm5pb25zIHdpdGggMCA8
PSB0IDw9IDEuCiBzdGF0aWMgdm9pZCBzbGVycChkb3VibGUgcWFbNF0sIGNvbnN0IGRvdWJsZSBx
Yls0XSwgZG91YmxlIHQpCiB7CiAgICAgZG91YmxlIGF4LCBheSwgYXosIGF3OwpAQCAtNTUxLDEx
ICs2MTQsMTEgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVjdFBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmIHAsIGJvb2wqIGNsYW1wZWQKICAgICAvLyB3aXRoIHRoZSB0cmFu
c2Zvcm0gYXBwbGllZC4gT25jZSB3ZSBoYXZlIHRoYXQgcG9pbnQgd2UgYXBwbHkgdGhlCiAgICAg
Ly8gaW52ZXJzZSB0cmFuc2Zvcm0gdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBwb2ludCBpbiB0
aGUgc291cmNlCiAgICAgLy8gc3BhY2UuCi0gICAgLy8gCisgICAgLy8KICAgICAvLyBHaXZlbiBh
IHBsYW5lIHdpdGggbm9ybWFsIFBuLCBhbmQgYSByYXkgc3RhcnRpbmcgYXQgcG9pbnQgUjAgYW5k
CiAgICAgLy8gd2l0aCBkaXJlY3Rpb24gZGVmaW5lZCBieSB0aGUgdmVjdG9yIFJkLCB3ZSBjYW4g
ZmluZCB0aGUKICAgICAvLyBpbnRlcnNlY3Rpb24gcG9pbnQgYXMgYSBkaXN0YW5jZSBkIGZyb20g
UjAgaW4gdW5pdHMgb2YgUmQgYnk6Ci0gICAgLy8gCisgICAgLy8KICAgICAvLyBkID0gLWRvdCAo
UG4nLCBSMCkgLyBkb3QgKFBuJywgUmQpCiAgICAgaWYgKGNsYW1wZWQpCiAgICAgICAgICpjbGFt
cGVkID0gZmFsc2U7CkBAIC01NjUsNyArNjI4LDcgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6cHJvamVjdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHAsIGJvb2wqIGNsYW1wZWQK
ICAgICAgICAgLy8gdHJhY2UsIGFuZCB0aGVyZSBpcyBubyB3ZWxsLWRlZmluZWQgdmFsdWUgZm9y
IHRoZSBwcm9qZWN0aW9uLgogICAgICAgICByZXR1cm4gRmxvYXRQb2ludCgpOwogICAgIH0KLSAg
ICAKKwogICAgIGRvdWJsZSB4ID0gcC54KCk7CiAgICAgZG91YmxlIHkgPSBwLnkoKTsKICAgICBk
b3VibGUgeiA9IC0obTEzKCkgKiB4ICsgbTIzKCkgKiB5ICsgbTQzKCkpIC8gbTMzKCk7CkBAIC02
MDgsNyArNjcxLDcgQEAgRmxvYXRRdWFkIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpwcm9qZWN0UXVh
ZChjb25zdCBGbG9hdFF1YWQmIHEsIGJvb2wqIGNsYW1wZWQpIGMKIAogICAgIGlmIChjbGFtcGVk
KQogICAgICAgICAqY2xhbXBlZCA9IGNsYW1wZWQxIHx8IGNsYW1wZWQyIHx8IGNsYW1wZWQzIHx8
IGNsYW1wZWQ0OwotICAgICAgICAKKwogICAgIC8vIElmIGFsbCBwb2ludHMgb24gdGhlIHF1YWQg
aGFkIHcgPCAwLCB0aGVuIHRoZSBlbnRpcmUgcXVhZCB3b3VsZCBub3QgYmUgdmlzaWJsZSB0byB0
aGUgcHJvamVjdGVkIHN1cmZhY2UuCiAgICAgYm9vbCBldmVyeXRoaW5nV2FzQ2xpcHBlZCA9IGNs
YW1wZWQxICYmIGNsYW1wZWQyICYmIGNsYW1wZWQzICYmIGNsYW1wZWQ0OwogICAgIGlmIChldmVy
eXRoaW5nV2FzQ2xpcHBlZCkKQEAgLTcxNSw3ICs3NzgsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJs
ZSBzeQogICAgIG1fbWF0cml4WzBdWzFdICo9IHN4OwogICAgIG1fbWF0cml4WzBdWzJdICo9IHN4
OwogICAgIG1fbWF0cml4WzBdWzNdICo9IHN4OwotICAgIAorCiAgICAgbV9tYXRyaXhbMV1bMF0g
Kj0gc3k7CiAgICAgbV9tYXRyaXhbMV1bMV0gKj0gc3k7CiAgICAgbV9tYXRyaXhbMV1bMl0gKj0g
c3k7CkBAIC03MjYsNyArNzg5LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kKIFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGUzZChkb3VibGUgc3gsIGRv
dWJsZSBzeSwgZG91YmxlIHN6KQogewogICAgIHNjYWxlTm9uVW5pZm9ybShzeCwgc3kpOwotICAg
IAorCiAgICAgbV9tYXRyaXhbMl1bMF0gKj0gc3o7CiAgICAgbV9tYXRyaXhbMl1bMV0gKj0gc3o7
CiAgICAgbV9tYXRyaXhbMl1bMl0gKj0gc3o7CkBAIC03MzksNyArODAyLDcgQEAgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgeCwgZG91
YmxlIHksIGRvdWJsZQogICAgIC8vIE5vcm1hbGl6ZSB0aGUgYXhpcyBvZiByb3RhdGlvbgogICAg
IGRvdWJsZSBsZW5ndGggPSBzcXJ0KHggKiB4ICsgeSAqIHkgKyB6ICogeik7CiAgICAgaWYgKGxl
bmd0aCA9PSAwKSB7Ci0gICAgICAgIC8vIEEgZGlyZWN0aW9uIHZlY3RvciB0aGF0IGNhbm5vdCBi
ZSBub3JtYWxpemVkLCBzdWNoIGFzIFswLCAwLCAwXSwgd2lsbCBjYXVzZSB0aGUgcm90YXRpb24g
dG8gbm90IGJlIGFwcGxpZWQuIAorICAgICAgICAvLyBBIGRpcmVjdGlvbiB2ZWN0b3IgdGhhdCBj
YW5ub3QgYmUgbm9ybWFsaXplZCwgc3VjaCBhcyBbMCwgMCwgMF0sIHdpbGwgY2F1c2UgdGhlIHJv
dGF0aW9uIHRvIG5vdCBiZSBhcHBsaWVkLgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfSBl
bHNlIGlmIChsZW5ndGggIT0gMSkgewogICAgICAgICB4IC89IGxlbmd0aDsKQEAgLTc1Miw3ICs4
MTUsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0
ZTNkKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlCiAKICAgICBkb3VibGUgc2luVGhldGEgPSBz
aW4oYW5nbGUpOwogICAgIGRvdWJsZSBjb3NUaGV0YSA9IGNvcyhhbmdsZSk7Ci0gICAgCisKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXQ7CiAKICAgICAvLyBPcHRpbWl6ZSBjYXNlcyB3aGVy
ZSB0aGUgYXhpcyBpcyBhbG9uZyBhIG1ham9yIGF4aXMKQEAgLTgyNywxMiArODkwLDEyIEBAIFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlM2QoZG91Ymxl
IHJ4LCBkb3VibGUgcnksIGRvdWJsCiAgICAgcnggPSBkZWcycmFkKHJ4KTsKICAgICByeSA9IGRl
ZzJyYWQocnkpOwogICAgIHJ6ID0gZGVnMnJhZChyeik7Ci0gICAgCisKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtYXQ7Ci0gICAgCisKICAgICBkb3VibGUgc2luVGhldGEgPSBzaW4ocnopOwog
ICAgIGRvdWJsZSBjb3NUaGV0YSA9IGNvcyhyeik7Ci0gICAgCisKICAgICBtYXQubV9tYXRyaXhb
MF1bMF0gPSBjb3NUaGV0YTsKICAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSBzaW5UaGV0YTsKICAg
ICBtYXQubV9tYXRyaXhbMF1bMl0gPSAwLjA7CkBAIC04NDUsMTIgKzkwOCwxMiBAQCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRvdWJsZSByeCwg
ZG91YmxlIHJ5LCBkb3VibAogICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsx
XVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMDsKICAgICBtYXQubV9tYXRyaXhbM11bMF0g
PSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjA7CiAgICAgbWF0
Lm1fbWF0cml4WzNdWzNdID0gMS4wOwotICAgIAorCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
cm1hdChtYXQpOwotICAgIAorCiAgICAgc2luVGhldGEgPSBzaW4ocnkpOwogICAgIGNvc1RoZXRh
ID0gY29zKHJ5KTsKLSAgICAKKwogICAgIG1hdC5tX21hdHJpeFswXVswXSA9IGNvc1RoZXRhOwog
ICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDAuMDsKICAgICBtYXQubV9tYXRyaXhbMF1bMl0gPSAt
c2luVGhldGE7CkBAIC04NjgsNyArOTMxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91YmwKIAog
ICAgIHNpblRoZXRhID0gc2luKHJ4KTsKICAgICBjb3NUaGV0YSA9IGNvcyhyeCk7Ci0gICAgCisK
ICAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSAxLjA7CiAgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0g
MC4wOwogICAgIG1hdC5tX21hdHJpeFswXVsyXSA9IDAuMDsKQEAgLTk0Myw3ICsxMDA2LDcgQEAg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpza2V3KGRvdWJsZSBz
eCwgZG91YmxlIHN5KQogICAgIC8vIGFuZ2xlcyBhcmUgaW4gZGVncmVlcy4gU3dpdGNoIHRvIHJh
ZGlhbnMKICAgICBzeCA9IGRlZzJyYWQoc3gpOwogICAgIHN5ID0gZGVnMnJhZChzeSk7Ci0gICAg
CisKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXQ7CiAgICAgbWF0Lm1fbWF0cml4WzBdWzFd
ID0gdGFuKHN5KTsgLy8gbm90ZSB0aGF0IHRoZSB5IHNoZWFyIGdvZXMgaW4gdGhlIGZpcnN0IHJv
dwogICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IHRhbihzeCk7IC8vIGFuZCB0aGUgeCBzaGVhciBp
biB0aGUgc2Vjb25kIHJvdwpAQCAtMTI0Miw3ICsxMzA1LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYKICAgICBfbW1fc3RvcmVfcGQoJm1fbWF0cml4WzNdWzJdLCBhY2N1bXVsYXRvcik7CiAj
ZWxzZQogICAgIE1hdHJpeDQgdG1wOwotICAgIAorCiAgICAgdG1wWzBdWzBdID0gKG1hdC5tX21h
dHJpeFswXVswXSAqIG1fbWF0cml4WzBdWzBdICsgbWF0Lm1fbWF0cml4WzBdWzFdICogbV9tYXRy
aXhbMV1bMF0KICAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzBdWzJdICogbV9tYXRyaXhb
Ml1bMF0gKyBtYXQubV9tYXRyaXhbMF1bM10gKiBtX21hdHJpeFszXVswXSk7CiAgICAgdG1wWzBd
WzFdID0gKG1hdC5tX21hdHJpeFswXVswXSAqIG1fbWF0cml4WzBdWzFdICsgbWF0Lm1fbWF0cml4
WzBdWzFdICogbV9tYXRyaXhbMV1bMV0KQEAgLTEyNzgsNyArMTM0MSw3IEBAIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmCiAgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFszXVsyXSAqIG1fbWF0
cml4WzJdWzJdICsgbWF0Lm1fbWF0cml4WzNdWzNdICogbV9tYXRyaXhbM11bMl0pOwogICAgIHRt
cFszXVszXSA9IChtYXQubV9tYXRyaXhbM11bMF0gKiBtX21hdHJpeFswXVszXSArIG1hdC5tX21h
dHJpeFszXVsxXSAqIG1fbWF0cml4WzFdWzNdCiAgICAgICAgICAgICAgICArIG1hdC5tX21hdHJp
eFszXVsyXSAqIG1fbWF0cml4WzJdWzNdICsgbWF0Lm1fbWF0cml4WzNdWzNdICogbV9tYXRyaXhb
M11bM10pOwotICAgIAorCiAgICAgc2V0TWF0cml4KHRtcCk7CiAjZW5kaWYKICAgICByZXR1cm4g
KnRoaXM7CkBAIC0xMzIxLDI1ICsxMzg0LDI1IEBAIGJvb2wgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OmlzSW52ZXJ0aWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVRyYW5zZm9ybWF0
aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QgCitUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKICAgICAgICAgLy8gaWRlbnRpdHkg
bWF0cml4CiAgICAgICAgIGlmIChtX21hdHJpeFszXVswXSA9PSAwICYmIG1fbWF0cml4WzNdWzFd
ID09IDAgJiYgbV9tYXRyaXhbM11bMl0gPT0gMCkKICAgICAgICAgICAgIHJldHVybiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpOwotICAgICAgICAKKwogICAgICAgICAvLyB0cmFuc2xhdGlvbgogICAg
ICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAxLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLW1fbWF0cml4WzNdWzBdLCAtbV9tYXRyaXhbM11bMV0sIC1tX21hdHJpeFszXVsy
XSwgMSk7CiAgICAgfQotICAgIAorCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52TWF0Owog
ICAgIGJvb2wgaW52ZXJ0ZWQgPSBXZWJDb3JlOjppbnZlcnNlKG1fbWF0cml4LCBpbnZNYXQubV9t
YXRyaXgpOwogICAgIGlmICghaW52ZXJ0ZWQpCiAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpOwotICAgIAorCiAgICAgcmV0dXJuIGludk1hdDsKIH0KIApAQCAtMTM0NywxNSAr
MTQxMCwxNSBAQCB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptYWtlQWZmaW5lKCkKIHsKICAg
ICBtX21hdHJpeFswXVsyXSA9IDA7CiAgICAgbV9tYXRyaXhbMF1bM10gPSAwOwotICAgIAorCiAg
ICAgbV9tYXRyaXhbMV1bMl0gPSAwOwogICAgIG1fbWF0cml4WzFdWzNdID0gMDsKLSAgICAKKwog
ICAgIG1fbWF0cml4WzJdWzBdID0gMDsKICAgICBtX21hdHJpeFsyXVsxXSA9IDA7CiAgICAgbV9t
YXRyaXhbMl1bMl0gPSAxOwogICAgIG1fbWF0cml4WzJdWzNdID0gMDsKLSAgICAKKwogICAgIG1f
bWF0cml4WzNdWzJdID0gMDsKICAgICBtX21hdHJpeFszXVszXSA9IDE7CiB9CkBAIC0xMzcyLDE4
ICsxNDM1LDUzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBibGVuZEZsb2F0KGRvdWJsZSYgZnJvbSwg
ZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgICAgIGZyb20gPSBmcm9tICsgKHRvIC0g
ZnJvbSkgKiBwcm9ncmVzczsKIH0KIAotdm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykKK3ZvaWQg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kMihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZnJvbSwgZG91YmxlIHByb2dyZXNzKQogewotICAgIGlmIChmcm9tLmlzSWRlbnRpdHkoKSAmJiBp
c0lkZW50aXR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgLy8gZGVjb21wb3Nl
Ci0gICAgRGVjb21wb3NlZFR5cGUgZnJvbURlY29tcDsKLSAgICBEZWNvbXBvc2VkVHlwZSB0b0Rl
Y29tcDsKLSAgICBmcm9tLmRlY29tcG9zZShmcm9tRGVjb21wKTsKLSAgICBkZWNvbXBvc2UodG9E
ZWNvbXApOwotCi0gICAgLy8gaW50ZXJwb2xhdGUKKyAgICBEZWNvbXBvc2VkMlR5cGUgZnJvbURl
Y29tcDsKKyAgICBEZWNvbXBvc2VkMlR5cGUgdG9EZWNvbXA7CisgICAgZnJvbS5kZWNvbXBvc2Uy
KGZyb21EZWNvbXApOworICAgIGRlY29tcG9zZTIodG9EZWNvbXApOworCisgICAgLy8gSWYgeC1h
eGlzIG9mIG9uZSBpcyBmbGlwcGVkLCBhbmQgeS1heGlzIG9mIHRoZSBvdGhlciwgY29udmVydCB0
byBhbiB1bmZsaXBwZWQgcm90YXRpb24uCisgICAgaWYgKChmcm9tRGVjb21wLnNjYWxlWCA8IDAg
JiYgdG9EZWNvbXAuc2NhbGVZIDwgMCkgfHwgKGZyb21EZWNvbXAuc2NhbGVZIDwgMCAmJiB0b0Rl
Y29tcC5zY2FsZVggPCAwKSkgeworICAgICAgICBmcm9tRGVjb21wLnNjYWxlWCA9IC1mcm9tRGVj
b21wLnNjYWxlWDsKKyAgICAgICAgZnJvbURlY29tcC5zY2FsZVkgPSAtZnJvbURlY29tcC5zY2Fs
ZVk7CisgICAgICAgIGZyb21EZWNvbXAuYW5nbGUgKz0gZnJvbURlY29tcC5hbmdsZSA8IDAgPyAx
ODAgOiAtMTgwOworICAgIH0KKworICAgIC8vIERvbid0IHJvdGF0ZSB0aGUgbG9uZyB3YXkgYXJv
dW5kLgorICAgIGlmICghZnJvbURlY29tcC5hbmdsZSkKKyAgICAgICAgZnJvbURlY29tcC5hbmds
ZSA9IDM2MDsKKyAgICBpZiAoIXRvRGVjb21wLmFuZ2xlKQorICAgICAgICB0b0RlY29tcC5hbmds
ZSA9IDM2MDsKKworICAgIGlmIChmYWJzKGZyb21EZWNvbXAuYW5nbGUgLSB0b0RlY29tcC5hbmds
ZSkgPiAxODApIHsKKyAgICAgICAgaWYgKGZyb21EZWNvbXAuYW5nbGUgPiB0b0RlY29tcC5hbmds
ZSkKKyAgICAgICAgICAgIGZyb21EZWNvbXAuYW5nbGUgLT0gMzYwOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0b0RlY29tcC5hbmdsZSAtPSAzNjA7CisgICAgfQorCisgICAgYmxlbmRGbG9h
dChmcm9tRGVjb21wLm0xMSwgdG9EZWNvbXAubTExLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9h
dChmcm9tRGVjb21wLm0xMiwgdG9EZWNvbXAubTEyLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9h
dChmcm9tRGVjb21wLm0yMSwgdG9EZWNvbXAubTIxLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9h
dChmcm9tRGVjb21wLm0yMiwgdG9EZWNvbXAubTIyLCBwcm9ncmVzcyk7CisgICAgYmxlbmRGbG9h
dChmcm9tRGVjb21wLnRyYW5zbGF0ZVgsIHRvRGVjb21wLnRyYW5zbGF0ZVgsIHByb2dyZXNzKTsK
KyAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAudHJhbnNsYXRlWSwgdG9EZWNvbXAudHJhbnNsYXRl
WSwgcHJvZ3Jlc3MpOworICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5zY2FsZVgsIHRvRGVjb21w
LnNjYWxlWCwgcHJvZ3Jlc3MpOworICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5zY2FsZVksIHRv
RGVjb21wLnNjYWxlWSwgcHJvZ3Jlc3MpOworICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5hbmds
ZSwgdG9EZWNvbXAuYW5nbGUsIHByb2dyZXNzKTsKKworICAgIHJlY29tcG9zZTIoZnJvbURlY29t
cCk7Cit9CisKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kNChjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKQoreworICAgIERlY29tcG9zZWQ0
VHlwZSBmcm9tRGVjb21wOworICAgIERlY29tcG9zZWQ0VHlwZSB0b0RlY29tcDsKKyAgICBmcm9t
LmRlY29tcG9zZTQoZnJvbURlY29tcCk7CisgICAgZGVjb21wb3NlNCh0b0RlY29tcCk7CisKICAg
ICBibGVuZEZsb2F0KGZyb21EZWNvbXAuc2NhbGVYLCB0b0RlY29tcC5zY2FsZVgsIHByb2dyZXNz
KTsKICAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAuc2NhbGVZLCB0b0RlY29tcC5zY2FsZVksIHBy
b2dyZXNzKTsKICAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAuc2NhbGVaLCB0b0RlY29tcC5zY2Fs
ZVosIHByb2dyZXNzKTsKQEAgLTEzOTcsMTQgKzE0OTUsMzcgQEAgdm9pZCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6YmxlbmQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZyb20sIGRvdWJsZSBw
cm9ncmUKICAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAucGVyc3BlY3RpdmVZLCB0b0RlY29tcC5w
ZXJzcGVjdGl2ZVksIHByb2dyZXNzKTsKICAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAucGVyc3Bl
Y3RpdmVaLCB0b0RlY29tcC5wZXJzcGVjdGl2ZVosIHByb2dyZXNzKTsKICAgICBibGVuZEZsb2F0
KGZyb21EZWNvbXAucGVyc3BlY3RpdmVXLCB0b0RlY29tcC5wZXJzcGVjdGl2ZVcsIHByb2dyZXNz
KTsKLSAgICAKKwogICAgIHNsZXJwKCZmcm9tRGVjb21wLnF1YXRlcm5pb25YLCAmdG9EZWNvbXAu
cXVhdGVybmlvblgsIHByb2dyZXNzKTsKLSAgICAgICAgCi0gICAgLy8gcmVjb21wb3NlCi0gICAg
cmVjb21wb3NlKGZyb21EZWNvbXApOworCisgICAgcmVjb21wb3NlNChmcm9tRGVjb21wKTsKK30K
Kwordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICBpZiAoZnJvbS5pc0lkZW50aXR5
KCkgJiYgaXNJZGVudGl0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZnJvbS5pc0Fm
ZmluZSgpICYmIGlzQWZmaW5lKCkpCisgICAgICAgIGJsZW5kMihmcm9tLCBwcm9ncmVzcyk7Cisg
ICAgZWxzZQorICAgICAgICBibGVuZDQoZnJvbSwgcHJvZ3Jlc3MpOworfQorCitib29sIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpkZWNvbXBvc2UyKERlY29tcG9zZWQyVHlwZSYgZGVjb21wKSBjb25z
dAoreworICAgIGlmIChpc0lkZW50aXR5KCkpIHsKKyAgICAgICAgbWVtc2V0KCZkZWNvbXAsIDAs
IHNpemVvZihkZWNvbXApKTsKKyAgICAgICAgZGVjb21wLnNjYWxlWCA9IDE7CisgICAgICAgIGRl
Y29tcC5zY2FsZVkgPSAxOworICAgIH0KKworICAgIGlmICghV2ViQ29yZTo6ZGVjb21wb3NlMiht
X21hdHJpeCwgZGVjb21wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpkZWNvbXBvc2UoRGVjb21wb3NlZFR5
cGUmIGRlY29tcCkgY29uc3QKK2Jvb2wgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmRlY29tcG9zZTQo
RGVjb21wb3NlZDRUeXBlJiBkZWNvbXApIGNvbnN0CiB7CiAgICAgaWYgKGlzSWRlbnRpdHkoKSkg
ewogICAgICAgICBtZW1zZXQoJmRlY29tcCwgMCwgc2l6ZW9mKGRlY29tcCkpOwpAQCAtMTQxMywy
NiArMTUzNCw0MSBAQCBib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpkZWNvbXBvc2UoRGVjb21w
b3NlZFR5cGUmIGRlY29tcCkgY29uc3QKICAgICAgICAgZGVjb21wLnNjYWxlWSA9IDE7CiAgICAg
ICAgIGRlY29tcC5zY2FsZVogPSAxOwogICAgIH0KLSAgICAKLSAgICBpZiAoIVdlYkNvcmU6OmRl
Y29tcG9zZShtX21hdHJpeCwgZGVjb21wKSkKKworICAgIGlmICghV2ViQ29yZTo6ZGVjb21wb3Nl
NChtX21hdHJpeCwgZGVjb21wKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2UoY29uc3QgRGVj
b21wb3NlZFR5cGUmIGRlY29tcCkKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9z
ZTIoY29uc3QgRGVjb21wb3NlZDJUeXBlJiBkZWNvbXApCit7CisgICAgbWFrZUlkZW50aXR5KCk7
CisKKyAgICBtX21hdHJpeFswXVswXSA9IGRlY29tcC5tMTE7CisgICAgbV9tYXRyaXhbMF1bMV0g
PSBkZWNvbXAubTEyOworICAgIG1fbWF0cml4WzFdWzBdID0gZGVjb21wLm0yMTsKKyAgICBtX21h
dHJpeFsxXVsxXSA9IGRlY29tcC5tMjI7CisKKyAgICB0cmFuc2xhdGUzZChkZWNvbXAudHJhbnNs
YXRlWCwgZGVjb21wLnRyYW5zbGF0ZVksIDApOworICAgIGlmIChkZWNvbXAuYW5nbGUpCisgICAg
ICAgIHJvdGF0ZShkZWNvbXAuYW5nbGUpOworICAgIHNjYWxlM2QoZGVjb21wLnNjYWxlWCwgZGVj
b21wLnNjYWxlWSwgMSk7Cit9CisKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9z
ZTQoY29uc3QgRGVjb21wb3NlZDRUeXBlJiBkZWNvbXApCiB7CiAgICAgbWFrZUlkZW50aXR5KCk7
Ci0gICAgCi0gICAgLy8gZmlyc3QgYXBwbHkgcGVyc3BlY3RpdmUKKworICAgIC8vIEZpcnN0IGFw
cGx5IHBlcnNwZWN0aXZlLgogICAgIG1fbWF0cml4WzBdWzNdID0gZGVjb21wLnBlcnNwZWN0aXZl
WDsKICAgICBtX21hdHJpeFsxXVszXSA9IGRlY29tcC5wZXJzcGVjdGl2ZVk7CiAgICAgbV9tYXRy
aXhbMl1bM10gPSBkZWNvbXAucGVyc3BlY3RpdmVaOwogICAgIG1fbWF0cml4WzNdWzNdID0gZGVj
b21wLnBlcnNwZWN0aXZlVzsKLSAgICAKLSAgICAvLyBub3cgdHJhbnNsYXRlCisKKyAgICAvLyBO
ZXh0LCB0cmFuc2xhdGUuCiAgICAgdHJhbnNsYXRlM2QoZGVjb21wLnRyYW5zbGF0ZVgsIGRlY29t
cC50cmFuc2xhdGVZLCBkZWNvbXAudHJhbnNsYXRlWik7Ci0gICAgCi0gICAgLy8gYXBwbHkgcm90
YXRpb24KKworICAgIC8vIEFwcGx5IHJvdGF0aW9uLgogICAgIGRvdWJsZSB4eCA9IGRlY29tcC5x
dWF0ZXJuaW9uWCAqIGRlY29tcC5xdWF0ZXJuaW9uWDsKICAgICBkb3VibGUgeHkgPSBkZWNvbXAu
cXVhdGVybmlvblggKiBkZWNvbXAucXVhdGVybmlvblk7CiAgICAgZG91YmxlIHh6ID0gZGVjb21w
LnF1YXRlcm5pb25YICogZGVjb21wLnF1YXRlcm5pb25aOwpAQCAtMTQ0MiwzNSArMTU3OCwzNSBA
QCB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2UoY29uc3QgRGVjb21wb3NlZFR5
cGUmIGRlY29tcCkKICAgICBkb3VibGUgeXcgPSBkZWNvbXAucXVhdGVybmlvblkgKiBkZWNvbXAu
cXVhdGVybmlvblc7CiAgICAgZG91YmxlIHp6ID0gZGVjb21wLnF1YXRlcm5pb25aICogZGVjb21w
LnF1YXRlcm5pb25aOwogICAgIGRvdWJsZSB6dyA9IGRlY29tcC5xdWF0ZXJuaW9uWiAqIGRlY29t
cC5xdWF0ZXJuaW9uVzsKLSAgICAKLSAgICAvLyBDb25zdHJ1Y3QgYSBjb21wb3NpdGUgcm90YXRp
b24gbWF0cml4IGZyb20gdGhlIHF1YXRlcm5pb24gdmFsdWVzCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcm90YXRpb25NYXRyaXgoMSAtIDIgKiAoeXkgKyB6eiksIDIgKiAoeHkgLSB6dyksIDIg
KiAoeHogKyB5dyksIDAsIAorCisgICAgLy8gQ29uc3RydWN0IGEgY29tcG9zaXRlIHJvdGF0aW9u
IG1hdHJpeCBmcm9tIHRoZSBxdWF0ZXJuaW9uIHZhbHVlcy4KKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCByb3RhdGlvbk1hdHJpeCgxIC0gMiAqICh5eSArIHp6KSwgMiAqICh4eSAtIHp3KSwgMiAq
ICh4eiArIHl3KSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiAoeHkgKyB6dyks
IDEgLSAyICogKHh4ICsgenopLCAyICogKHl6IC0geHcpLCAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMiAqICh4eiAtIHl3KSwgMiAqICh5eiArIHh3KSwgMSAtIDIgKiAoeHggKyB5eSks
IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAxKTsKLSAgICAKKwogICAg
IG11bHRpcGx5KHJvdGF0aW9uTWF0cml4KTsKLSAgICAKLSAgICAvLyBub3cgYXBwbHkgc2tldwor
CisgICAgLy8gQXBwbHkgc2tldy4KICAgICBpZiAoZGVjb21wLnNrZXdZWikgewogICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0bXA7CiAgICAgICAgIHRtcC5zZXRNMzIoZGVjb21wLnNrZXdZ
Wik7CiAgICAgICAgIG11bHRpcGx5KHRtcCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlY29t
cC5za2V3WFopIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG1wOwogICAgICAgICB0
bXAuc2V0TTMxKGRlY29tcC5za2V3WFopOwogICAgICAgICBtdWx0aXBseSh0bXApOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChkZWNvbXAuc2tld1hZKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRtcDsKICAgICAgICAgdG1wLnNldE0yMShkZWNvbXAuc2tld1hZKTsKICAgICAgICAg
bXVsdGlwbHkodG1wKTsKICAgICB9Ci0gICAgCi0gICAgLy8gZmluYWxseSwgYXBwbHkgc2NhbGUK
KworICAgIC8vIEZpbmFsbHksIGFwcGx5IHNjYWxlLgogICAgIHNjYWxlM2QoZGVjb21wLnNjYWxl
WCwgZGVjb21wLnNjYWxlWSwgZGVjb21wLnNjYWxlWik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguaAppbmRleCAwNTY5MGVjMjU0YjAwZTQ5MDIxOWY4YTRmYzk2MGEwZmM3
YzViMzhhLi4wMTA0NjcwYjFiMDM0ZGExNzg3MDJhZWE5OTBkOTJkZWQ0Njk3YjM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCkBAIC0yMzIsNyArMjMyLDggQEAgcHVibGlj
OgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOwogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpOwogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZTNkKGRvdWJsZSBzeCwgZG91YmxlIHN5LCBkb3Vi
bGUgc3opOwotICAgIAorCisgICAgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcm90YXRlKGRvdWJsZSBkKSB7IHJldHVybiByb3RhdGUzZCgwLCAwLCBk
KTsgfQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4
LCBkb3VibGUgeSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJvdGF0ZTNkKGRvdWJsZSBy
eCwgZG91YmxlIHJ5LCBkb3VibGUgcnopOwpAQCAtMjY4LDE3ICsyNjksMjkgQEAgcHVibGljOgog
CiAgICAgLy8gZGVjb21wb3NlIHRoZSBtYXRyaXggaW50byBpdHMgY29tcG9uZW50IHBhcnRzCiAg
ICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBkb3VibGUgc2NhbGVYLCBzY2FsZVk7CisgICAg
ICAgIGRvdWJsZSB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZOworICAgICAgICBkb3VibGUgYW5nbGU7
CisgICAgICAgIGRvdWJsZSBtMTEsIG0xMiwgbTIxLCBtMjI7CisgICAgfSBEZWNvbXBvc2VkMlR5
cGU7CisKKyAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIGRvdWJsZSBzY2FsZVgsIHNjYWxl
WSwgc2NhbGVaOwogICAgICAgICBkb3VibGUgc2tld1hZLCBza2V3WFosIHNrZXdZWjsKICAgICAg
ICAgZG91YmxlIHF1YXRlcm5pb25YLCBxdWF0ZXJuaW9uWSwgcXVhdGVybmlvblosIHF1YXRlcm5p
b25XOwogICAgICAgICBkb3VibGUgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWjsK
ICAgICAgICAgZG91YmxlIHBlcnNwZWN0aXZlWCwgcGVyc3BlY3RpdmVZLCBwZXJzcGVjdGl2ZVos
IHBlcnNwZWN0aXZlVzsKLSAgICB9IERlY29tcG9zZWRUeXBlOwotICAgIAotICAgIGJvb2wgZGVj
b21wb3NlKERlY29tcG9zZWRUeXBlJiBkZWNvbXApIGNvbnN0OwotICAgIHZvaWQgcmVjb21wb3Nl
KGNvbnN0IERlY29tcG9zZWRUeXBlJiBkZWNvbXApOworICAgIH0gRGVjb21wb3NlZDRUeXBlOwog
ICAgIAorICAgIGJvb2wgZGVjb21wb3NlMihEZWNvbXBvc2VkMlR5cGUmKSBjb25zdDsKKyAgICB2
b2lkIHJlY29tcG9zZTIoY29uc3QgRGVjb21wb3NlZDJUeXBlJik7CisKKyAgICBib29sIGRlY29t
cG9zZTQoRGVjb21wb3NlZDRUeXBlJikgY29uc3Q7CisgICAgdm9pZCByZWNvbXBvc2U0KGNvbnN0
IERlY29tcG9zZWQ0VHlwZSYpOworCiAgICAgdm9pZCBibGVuZChjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsKKyAgICB2b2lkIGJsZW5kMihjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsKKyAgICB2b2lkIGJs
ZW5kNChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsK
IAogICAgIGJvb2wgaXNBZmZpbmUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MDkzYWU2MzliNDEw
NDkyYmI2NGFmZDZmMjgxZjhjYzgxMTZkNGEzLi5kM2RhZTE5NzY1OTRhNzU3ODZhMDNmZjY5Mjc2
ZTM4NTc5NWRjNzRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTMtMDktMjYgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisgICAgICAgIFByb3ZpZGUgMkQgTWF0cml4IGRlY29t
cG9zaXRpb24gZm9yIGFuaW1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEyODI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IHdhcyBvbmx5IGV4ZXJjaXNpbmcgdGhlIGZhY3QgdGhh
dCBvdXIKKyAgICAgICAgc29mdHdhcmUgZGVjb21wb3NpdGlvbiBkaWQgbm90IG1hdGNoIG91ciBo
YXJkd2FyZQorICAgICAgICBkZWNvbXBvc2l0aW9uIChhbHRob3VnaCB0aGF0IHJlcXVpcmVkIHZp
c3VhbCBpbnNwZWN0aW9uKS4KKyAgICAgICAgTm93IHRoYXQgb3VyIDJkIGRlY29tcG9zaXRpb24g
aXMgY29ycmVjdCwgdXBkYXRlIHRoZQorICAgICAgICB0ZXN0IGFuZCBpdHMgZXhwZWN0ZWQgcmVz
dWx0LgorCisgICAgICAgICogYW5pbWF0aW9ucy90cmFuc2Zvcm0tbm9uLWFjY2VsZXJhdGVkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0
ZWQuaHRtbDoKKworMjAxMy0wOS0yNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisK
ICAgICAgICAgRXhwb3NlIGEgc2V0dGluZyB0byBkaXNhYmxlIGhhcmR3YXJlIGFjY2VsZXJhdGVk
IGFuaW1hdGlvbnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTk3OAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTUwOTEyODQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tbm9uLWFjY2VsZXJhdGVk
LWV4cGVjdGVkLnR4dAppbmRleCBkYWZlYzVkNWRkYTc3YjlmZTZiZDUwYzVjZTM2OWZmYjhmNzEz
OWQ5Li5kMzI0YzdhNTlhMmI1YTAwOTk0NDI4NWJjMWM2NjJhMjQzNzFlMjg5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJhbnNmb3JtLW5vbi1hY2NlbGVy
YXRlZC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiBEdXJpbmcgdGhlIGFuaW1hdGlvbiwg
dGhlIGJveCBzaG91bGQgZmxpcCBpbiB0aGUgaG9yaXpvbnRhbCBheGlzLiBJdCBzaG91bGQgbm90
IGRpc2FwcGVhciBpbnRvIGEgc2luZ2xlIHBvaW50IChpLmUuIHRoZSB2aXN1YWwgd2lkdGggc2hv
dWxkIG5vdCBjaGFuZ2UpLgogCi1QQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9y
ICJib3giIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLDAsMCwwLDAs
MAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0
IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMSwwLDAsMCwwLDAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tbm9uLWFjY2VsZXJhdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQuaHRtbAppbmRl
eCAxN2Y3ZGQ4ZmU3NDRmOTJkZGMwOWM2NzVjNzljOGI0YmM3MjE4ZmVlLi5kNTY4ZTVlODEyZGUx
OTQ0ZTEwMGQzMzc4NjcwNzAxNDkxMjk1YzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQuaHRtbApAQCAtMjksNyArMjksNyBA
QAogPHNjcmlwdD4KIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWwogICAvLyBbYW5pbWF0aW9uLW5h
bWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNl
XQotICBbImZsaXAiLCAwLjUsICJib3giLCAid2Via2l0VHJhbnNmb3JtIiwgWzAsIDAsIDAsIDAs
IDAsIDBdLCAwLjNdLAorICBbImZsaXAiLCAwLjUsICJib3giLCAid2Via2l0VHJhbnNmb3JtIiwg
WzEsIDAsIDAsIDAsIDAsIDBdLCAwLjNdLAogXTsKIAogaWYgKHdpbmRvdy5pbnRlcm5hbHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212817</attachid>
            <date>2013-09-27 09:34:44 -0700</date>
            <delta_ts>2013-09-27 10:20:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112824-20130927093444.patch</filename>
            <type>text/plain</type>
            <size>38850</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDEzYjRmMjQ1NTM0OGJk
NWEyYjM1Yjk3NjQ2MDI5ZjgwYWIyMDVlZC4uZDEyYzMzNzE1MWY2NTdkMjBjNTk0MThkNjA3NGMw
MjhhMzI3NGY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDEzLTA5LTI2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBQcm92aWRlIDJEIE1hdHJpeCBk
ZWNvbXBvc2l0aW9uIGZvciBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjgyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTUwOTE4
ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGEgbmV3IDJkIG1hdHJpeCBibGVuZCwgd2hpY2ggaXMgdHJpZ2dlcmVkCisgICAgICAg
IHdoZW4gYW5pbWF0aW5nIGJldHdlZW4gdHdvIGFmZmluZSAzZCBtYXRyaWNlcy4gVGhpcworICAg
ICAgICBpcyBpbnRlbmRlZCB0byBiZSB0aGUgb2ZmaWNpYWwgYWxnb3JpdGhtIHRoYXQgZ2V0cwor
ICAgICAgICBwdXQgaW50byB0aGUgVzNDIFRyYW5zZm9ybXMgc3BlY2lmaWNhdGlvbi4KKworICAg
ICAgICBUaGUgb2xkIGNvZGUgaXMgcmVuYW1lZCB3aXRoIGEgNCBwcmVmaXggKGluZGljYXRpbmcK
KyAgICAgICAgaXQgaXMgYSBibGVuZCBiZXR3ZWVuIDNkIG1hdHJpY2VzIHVzaW5nIHF1YXRlcm5p
b25zKSwKKyAgICAgICAgYW5kIG5ldyBtZXRob2RzIGFuZCBzdHJ1Y3R1cmVzIGZvciAyZCBibGVu
ZGluZyB3ZXJlIGFkZGVkLgorCisgICAgICAgIEkgYWxzbyB0b29rIHRoZSBvcHBvcnR1bml0eSB0
byBjbGVhbiB1cCBhIGxvdCBvZgorICAgICAgICBiYWQgV2ViS2l0IHN0eWxlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1heFNjYWxlRnJvbVRyYW5zZm9ybSk6IFVzZSAzZCBkZWNvbXBvc2l0aW9uLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1P
cGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb246OmJsZW5kKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkZWNvbXBvc2UyKTogTmV3IG1ldGhvZCB0byBkZWNvbXBvc2UgYW4gYWZmaW5l
IDNkIG1hdHJpeAorICAgICAgICBpbnRvIFgvWSBzY2FsZSArIHRyYW5zbGF0ZSwgYSByb3RhdGlv
biBhbmdsZSwgcGx1cyBzb21lIGV4dHJhY3RlZAorICAgICAgICBhLGIsYyxkIGZpZWxkcyBmcm9t
IHRoZSBhZmZpbmUgc2VjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmRlY29tcG9zZTQpOiBOZXcg
bmFtZSBmb3IgdGhlIG9sZCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpibGVuZDIpOiBQZXJmb3JtIGxpbmVhciBpbnRlcnBvbGF0aW9uCisgICAgICAg
IGJldHdlZW4gdHdvIDJkIGRlY29tcG9zaXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXg6OmJsZW5kNCk6IE5ldyBuYW1lIGZvciB0aGUgb2xkIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kKTogQ2FsbCBibGVu
ZDIgb3IgYmxlbmQ0IGRlcGVuZGluZworICAgICAgICBvbiB0aGUgdHlwZSBvZiBtYXRyaXguCisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZGVjb21wb3NlMik6IENhbGxz
IGludG8gdGhlIGRlY29tcG9zZTIKKyAgICAgICAgbWV0aG9kIGFib3ZlLgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmRlY29tcG9zZTQpOiBOZXcgbmFtZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2UyKTogUmVjb21wb3Nl
cyBhIDNkIG1hdHJpeCBmcm9tCisgICAgICAgIGEgMmQgZGVjb21wb3NpdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2U0KTogTmV3IG5hbWUuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oOiBBbGwgdGhlIGNoYW5nZXMKKyAgICAgICAgZm9yIHRoZSBuZXcgbWV0aG9kcyBhYm92ZS4K
KworMjAxMy0wOS0yNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKICAgICAgICAg
RXhwb3NlIGEgc2V0dGluZyB0byBkaXNhYmxlIGhhcmR3YXJlIGFjY2VsZXJhdGVkIGFuaW1hdGlv
bnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk3
OAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTUwOTEyODQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAw
MjUxZmMzY2E2NzAyY2FmZmFmZjg3YmVhMDE1YjhkMGMyOTgwNGY3Li5iMWI1MjkxYzJmMGU0ZGNi
ZTFhN2U2YjZhZTBhN2E4MmRmMTQyMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI1Niw4ICsyNTYs
OCBAQCBzdGF0aWMgZmxvYXQgbWF4U2NhbGVGcm9tVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0KQogICAgIGlmICh0LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpCiAgICAg
ICAgIHJldHVybiAxOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWRUeXBl
IGRlY29tcG9zZURhdGE7Ci0gICAgdC5kZWNvbXBvc2UoZGVjb21wb3NlRGF0YSk7CisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWQ0VHlwZSBkZWNvbXBvc2VEYXRhOworICAgIHQu
ZGVjb21wb3NlNChkZWNvbXBvc2VEYXRhKTsKICAgICByZXR1cm4gc3RkOjptYXgoZmFic2YoZGVj
b21wb3NlRGF0YS5zY2FsZVgpLCBmYWJzZihkZWNvbXBvc2VEYXRhLnNjYWxlWSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCmlu
ZGV4IGU4NDIyOTI1YzJlNmY0OTBhZTc1YWEyMzJhZWJmZTBhMDA1NWNlMmIuLmNlOWI1ZmIzOGUx
MzRhMzY3OWEzMTM5ZGVhMTVlNjA1ZmZhN2ZkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC01Myw4ICs1Myw4IEBAIFBhc3NS
ZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
YmxlbmQoY29uc3QgVHJhbnNmCiAgICAgZnJvbVQuYXBwbHlQZXJzcGVjdGl2ZShmbG9hdFZhbHVl
Rm9yTGVuZ3RoKGZyb21QLCAxKSk7CiAgICAgdG9ULmFwcGx5UGVyc3BlY3RpdmUoZmxvYXRWYWx1
ZUZvckxlbmd0aCh0b1AsIDEpKTsKICAgICB0b1QuYmxlbmQoZnJvbVQsIHByb2dyZXNzKTsKLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVjb21wb3NlZFR5cGUgZGVjb21wOwotICAgIHRvVC5k
ZWNvbXBvc2UoZGVjb21wKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVjb21wb3NlZDRU
eXBlIGRlY29tcDsKKyAgICB0b1QuZGVjb21wb3NlNChkZWNvbXApOwogCiAgICAgaWYgKGRlY29t
cC5wZXJzcGVjdGl2ZVopIHsKICAgICAgICAgZG91YmxlIHZhbCA9IC0xLjAgLyBkZWNvbXAucGVy
c3BlY3RpdmVaOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
CmluZGV4IDkwNjM0YjdlYjQ4NzAxZDViZDUxMTQyZjEyMzA2NmIyZmU5MmI1ODguLmE3YjM0YzJj
NmJlMDdkYTUxYzQzNmUxNjRjMTgwYWNjMWJlMmNmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Jv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKQEAgLTcwLDggKzcwLDggQEAgUGFzc1JlZlB0cjxU
cmFuc2Zvcm1PcGVyYXRpb24+IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3Qg
VHJhbnNmb3JtT3AKICAgICB0b1QuYmxlbmQoZnJvbVQsIHByb2dyZXNzKTsKICAgICAKICAgICAv
LyBFeHRyYWN0IHRoZSByZXN1bHQgYXMgYSBxdWF0ZXJuaW9uCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXg6OkRlY29tcG9zZWRUeXBlIGRlY29tcDsKLSAgICB0b1QuZGVjb21wb3NlKGRlY29tcCk7
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWQ0VHlwZSBkZWNvbXA7CisgICAg
dG9ULmRlY29tcG9zZTQoZGVjb21wKTsKICAgICAKICAgICAvLyBDb252ZXJ0IHRoYXQgdG8gQXhp
cy9BbmdsZSBmb3JtCiAgICAgZG91YmxlIHggPSAtZGVjb21wLnF1YXRlcm5pb25YOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBiY2U2Nzc3M2E2MWU3YzAxNjFl
NGI5MzNkMGQ0OTVlYjljOGU5YjM1Li43YTU2ZDgyMzdjNTZmNGNhYzM1N2E2YmZiNzljNzMzYzAz
YTYwODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYs
IDIwMTMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
MSw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
QEAgLTU0LDE2ICs1NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLwogLy8gQWRhcHRlZCBm
cm9tIE1hdHJpeCBJbnZlcnNpb24gYnkgUmljaGFyZCBDYXJsaW5nLCBHcmFwaGljcyBHZW1zIDxo
dHRwOi8vdG9nLmFjbS5vcmcvR3JhcGhpY3NHZW1zL2luZGV4Lmh0bWw+LgogCi0vLyBFVUxBOiBU
aGUgR3JhcGhpY3MgR2VtcyBjb2RlIGlzIGNvcHlyaWdodC1wcm90ZWN0ZWQuIEluIG90aGVyIHdv
cmRzLCB5b3UgY2Fubm90IGNsYWltIHRoZSB0ZXh0IG9mIHRoZSBjb2RlIAotLy8gYXMgeW91ciBv
d24gYW5kIHJlc2VsbCBpdC4gVXNpbmcgdGhlIGNvZGUgaXMgcGVybWl0dGVkIGluIGFueSBwcm9n
cmFtLCBwcm9kdWN0LCBvciBsaWJyYXJ5LCBub24tY29tbWVyY2lhbCAKLS8vIG9yIGNvbW1lcmNp
YWwuIEdpdmluZyBjcmVkaXQgaXMgbm90IHJlcXVpcmVkLCB0aG91Z2ggaXMgYSBuaWNlIGdlc3R1
cmUuIFRoZSBjb2RlIGNvbWVzIGFzLWlzLCBhbmQgaWYgdGhlcmUgCi0vLyBhcmUgYW55IGZsYXdz
IG9yIHByb2JsZW1zIHdpdGggYW55IEdlbXMgY29kZSwgbm9ib2R5IGludm9sdmVkIHdpdGggR2Vt
cyAtIGF1dGhvcnMsIGVkaXRvcnMsIHB1Ymxpc2hlcnMsIG9yIAotLy8gd2VibWFzdGVycyAtIGFy
ZSB0byBiZSBoZWxkIHJlc3BvbnNpYmxlLiBCYXNpY2FsbHksIGRvbid0IGJlIGEgamVyaywgYW5k
IHJlbWVtYmVyIHRoYXQgYW55dGhpbmcgZnJlZSBjb21lcyAKKy8vIEVVTEE6IFRoZSBHcmFwaGlj
cyBHZW1zIGNvZGUgaXMgY29weXJpZ2h0LXByb3RlY3RlZC4gSW4gb3RoZXIgd29yZHMsIHlvdSBj
YW5ub3QgY2xhaW0gdGhlIHRleHQgb2YgdGhlIGNvZGUKKy8vIGFzIHlvdXIgb3duIGFuZCByZXNl
bGwgaXQuIFVzaW5nIHRoZSBjb2RlIGlzIHBlcm1pdHRlZCBpbiBhbnkgcHJvZ3JhbSwgcHJvZHVj
dCwgb3IgbGlicmFyeSwgbm9uLWNvbW1lcmNpYWwKKy8vIG9yIGNvbW1lcmNpYWwuIEdpdmluZyBj
cmVkaXQgaXMgbm90IHJlcXVpcmVkLCB0aG91Z2ggaXMgYSBuaWNlIGdlc3R1cmUuIFRoZSBjb2Rl
IGNvbWVzIGFzLWlzLCBhbmQgaWYgdGhlcmUKKy8vIGFyZSBhbnkgZmxhd3Mgb3IgcHJvYmxlbXMg
d2l0aCBhbnkgR2VtcyBjb2RlLCBub2JvZHkgaW52b2x2ZWQgd2l0aCBHZW1zIC0gYXV0aG9ycywg
ZWRpdG9ycywgcHVibGlzaGVycywgb3IKKy8vIHdlYm1hc3RlcnMgLSBhcmUgdG8gYmUgaGVsZCBy
ZXNwb25zaWJsZS4gQmFzaWNhbGx5LCBkb24ndCBiZSBhIGplcmssIGFuZCByZW1lbWJlciB0aGF0
IGFueXRoaW5nIGZyZWUgY29tZXMKIC8vIHdpdGggbm8gZ3VhcmFudGVlLgogCiAvLyBBIGNsYXJp
ZmljYXRpb24gYWJvdXQgdGhlIHN0b3JhZ2Ugb2YgbWF0cml4IGVsZW1lbnRzCiAvLwotLy8gVGhp
cyBjbGFzcyB1c2VzIGEgMiBkaW1lbnNpb25hbCBhcnJheSBpbnRlcm5hbGx5IHRvIHN0b3JlIHRo
ZSBlbGVtZW50cyBvZiB0aGUgbWF0cml4LiAgVGhlIGZpcnN0IGluZGV4IGludG8gCisvLyBUaGlz
IGNsYXNzIHVzZXMgYSAyIGRpbWVuc2lvbmFsIGFycmF5IGludGVybmFsbHkgdG8gc3RvcmUgdGhl
IGVsZW1lbnRzIG9mIHRoZSBtYXRyaXguIFRoZSBmaXJzdCBpbmRleCBpbnRvCiAvLyB0aGUgYXJy
YXkgcmVmZXJzIHRvIHRoZSBjb2x1bW4gdGhhdCB0aGUgZWxlbWVudCBsaWVzIGluOyB0aGUgc2Vj
b25kIGluZGV4IHJlZmVycyB0byB0aGUgcm93LgogLy8KIC8vIEluIG90aGVyIHdvcmRzLCB0aGlz
IGlzIHRoZSBsYXlvdXQgb2YgdGhlIG1hdHJpeDoKQEAgLTc5LDE1ICs3OSwxNSBAQCB0eXBlZGVm
IGRvdWJsZSBWZWN0b3IzWzNdOwogY29uc3QgZG91YmxlIFNNQUxMX05VTUJFUiA9IDEuZS04Owog
CiAvLyBpbnZlcnNlKG9yaWdpbmFsX21hdHJpeCwgaW52ZXJzZV9tYXRyaXgpCi0vLyAKKy8vCiAv
LyBjYWxjdWxhdGUgdGhlIGludmVyc2Ugb2YgYSA0eDQgbWF0cml4Ci0vLyAKLS8vIC0xICAgICAK
Ky8vCisvLyAtMQogLy8gQSAgPSBfX18xX18gYWRqb2ludCBBCiAvLyAgICAgICBkZXQgQQogCiAv
LyAgZG91YmxlID0gZGV0ZXJtaW5hbnQyeDIoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywg
ZG91YmxlIGQpCi0vLyAgCisvLwogLy8gIGNhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnQgb2YgYSAy
eDIgbWF0cml4LgogCiBzdGF0aWMgZG91YmxlIGRldGVybWluYW50MngyKGRvdWJsZSBhLCBkb3Vi
bGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkKQpAQCAtOTYsMTAgKzk2LDEwIEBAIHN0YXRpYyBkb3Vi
bGUgZGV0ZXJtaW5hbnQyeDIoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQp
CiB9CiAKIC8vICBkb3VibGUgPSBkZXRlcm1pbmFudDN4MyhhMSwgYTIsIGEzLCBiMSwgYjIsIGIz
LCBjMSwgYzIsIGMzKQotLy8gIAorLy8KIC8vICBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50IG9m
IGEgM3gzIG1hdHJpeAogLy8gIGluIHRoZSBmb3JtCi0vLyAKKy8vCiAvLyAgICAgIHwgYTEsICBi
MSwgIGMxIHwKIC8vICAgICAgfCBhMiwgIGIyLCAgYzIgfAogLy8gICAgICB8IGEzLCAgYjMsICBj
MyB8CkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIGRvdWJsZSBkZXRlcm1pbmFudDN4Myhkb3Vi
bGUgYTEsIGRvdWJsZSBhMiwgZG91YmxlIGEzLCBkb3VibGUgYjEsIGRvdWJsZQogfQogCiAvLyAg
ZG91YmxlID0gZGV0ZXJtaW5hbnQ0eDQobWF0cml4KQotLy8gIAorLy8KIC8vICBjYWxjdWxhdGUg
dGhlIGRldGVybWluYW50IG9mIGEgNHg0IG1hdHJpeC4KIAogc3RhdGljIGRvdWJsZSBkZXRlcm1p
bmFudDR4NChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbSkKQEAgLTEyMSwy
MiArMTIxLDIyIEBAIHN0YXRpYyBkb3VibGUgZGV0ZXJtaW5hbnQ0eDQoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Ok1hdHJpeDQmIG0pCiAgICAgLy8gY29ycmVjdCBlbGVtZW50cwogCiAgICAg
ZG91YmxlIGExID0gbVswXVswXTsKLSAgICBkb3VibGUgYjEgPSBtWzBdWzFdOyAKKyAgICBkb3Vi
bGUgYjEgPSBtWzBdWzFdOwogICAgIGRvdWJsZSBjMSA9IG1bMF1bMl07CiAgICAgZG91YmxlIGQx
ID0gbVswXVszXTsKIAogICAgIGRvdWJsZSBhMiA9IG1bMV1bMF07Ci0gICAgZG91YmxlIGIyID0g
bVsxXVsxXTsgCisgICAgZG91YmxlIGIyID0gbVsxXVsxXTsKICAgICBkb3VibGUgYzIgPSBtWzFd
WzJdOwogICAgIGRvdWJsZSBkMiA9IG1bMV1bM107CiAKLSAgICBkb3VibGUgYTMgPSBtWzJdWzBd
OyAKKyAgICBkb3VibGUgYTMgPSBtWzJdWzBdOwogICAgIGRvdWJsZSBiMyA9IG1bMl1bMV07CiAg
ICAgZG91YmxlIGMzID0gbVsyXVsyXTsKICAgICBkb3VibGUgZDMgPSBtWzJdWzNdOwogCiAgICAg
ZG91YmxlIGE0ID0gbVszXVswXTsKLSAgICBkb3VibGUgYjQgPSBtWzNdWzFdOyAKKyAgICBkb3Vi
bGUgYjQgPSBtWzNdWzFdOwogICAgIGRvdWJsZSBjNCA9IG1bM11bMl07CiAgICAgZG91YmxlIGQ0
ID0gbVszXVszXTsKIApAQCAtMTU0LDExICsxNTQsMTEgQEAgc3RhdGljIGRvdWJsZSBkZXRlcm1p
bmFudDR4NChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbSkKIC8vICAgICAg
ICAgaWoKIC8vCiAvLyAgICBkZWxldGluZyB0aGUgaXRoIHJvdyBhbmQganRoIGNvbHVtbiBmcm9t
IEEuCi0vLyAKKy8vCiAvLyAgICAgICAgICAgICAgICAgIGkragogLy8gICBMZXQgIGIgICA9ICgt
MSkgICAgYQogLy8gICAgICAgIGlqICAgICAgICAgICAgamkKLS8vIAorLy8KIC8vICBUaGUgbWF0
cml4IEIgPSAoYiAgKSBpcyB0aGUgYWRqb2ludCBvZiBBCiAvLyAgICAgICAgICAgICAgICAgICBp
agogCkBAIC0xNjcsMTIgKzE2NywxMiBAQCBzdGF0aWMgdm9pZCBhZGpvaW50KGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXRyaXgsIFRyYW5zZm9ybWF0aW9uTQogICAgIC8v
IEFzc2lnbiB0byBpbmRpdmlkdWFsIHZhcmlhYmxlIG5hbWVzIHRvIGFpZAogICAgIC8vIHNlbGVj
dGluZyBjb3JyZWN0IHZhbHVlcwogICAgIGRvdWJsZSBhMSA9IG1hdHJpeFswXVswXTsKLSAgICBk
b3VibGUgYjEgPSBtYXRyaXhbMF1bMV07IAorICAgIGRvdWJsZSBiMSA9IG1hdHJpeFswXVsxXTsK
ICAgICBkb3VibGUgYzEgPSBtYXRyaXhbMF1bMl07CiAgICAgZG91YmxlIGQxID0gbWF0cml4WzBd
WzNdOwogCiAgICAgZG91YmxlIGEyID0gbWF0cml4WzFdWzBdOwotICAgIGRvdWJsZSBiMiA9IG1h
dHJpeFsxXVsxXTsgCisgICAgZG91YmxlIGIyID0gbWF0cml4WzFdWzFdOwogICAgIGRvdWJsZSBj
MiA9IG1hdHJpeFsxXVsyXTsKICAgICBkb3VibGUgZDIgPSBtYXRyaXhbMV1bM107CiAKQEAgLTE4
Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBhZGpvaW50KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpNYXRyaXg0JiBtYXRyaXgsIFRyYW5zZm9ybWF0aW9uTQogICAgIGRvdWJsZSBkMyA9IG1h
dHJpeFsyXVszXTsKIAogICAgIGRvdWJsZSBhNCA9IG1hdHJpeFszXVswXTsKLSAgICBkb3VibGUg
YjQgPSBtYXRyaXhbM11bMV07IAorICAgIGRvdWJsZSBiNCA9IG1hdHJpeFszXVsxXTsKICAgICBk
b3VibGUgYzQgPSBtYXRyaXhbM11bMl07CiAgICAgZG91YmxlIGQ0ID0gbWF0cml4WzNdWzNdOwog
CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBzdGF0aWMgdm9pZCBhZGpvaW50KGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXRyaXgsIFRyYW5zZm9ybWF0aW9uTQogICAgIHJlc3Vs
dFsxXVswXSAgPSAtIGRldGVybWluYW50M3gzKGEyLCBhMywgYTQsIGMyLCBjMywgYzQsIGQyLCBk
MywgZDQpOwogICAgIHJlc3VsdFsyXVswXSAgPSAgIGRldGVybWluYW50M3gzKGEyLCBhMywgYTQs
IGIyLCBiMywgYjQsIGQyLCBkMywgZDQpOwogICAgIHJlc3VsdFszXVswXSAgPSAtIGRldGVybWlu
YW50M3gzKGEyLCBhMywgYTQsIGIyLCBiMywgYjQsIGMyLCBjMywgYzQpOwotICAgICAgICAKKwog
ICAgIHJlc3VsdFswXVsxXSAgPSAtIGRldGVybWluYW50M3gzKGIxLCBiMywgYjQsIGMxLCBjMywg
YzQsIGQxLCBkMywgZDQpOwogICAgIHJlc3VsdFsxXVsxXSAgPSAgIGRldGVybWluYW50M3gzKGEx
LCBhMywgYTQsIGMxLCBjMywgYzQsIGQxLCBkMywgZDQpOwogICAgIHJlc3VsdFsyXVsxXSAgPSAt
IGRldGVybWluYW50M3gzKGExLCBhMywgYTQsIGIxLCBiMywgYjQsIGQxLCBkMywgZDQpOwogICAg
IHJlc3VsdFszXVsxXSAgPSAgIGRldGVybWluYW50M3gzKGExLCBhMywgYTQsIGIxLCBiMywgYjQs
IGMxLCBjMywgYzQpOwotICAgICAgICAKKwogICAgIHJlc3VsdFswXVsyXSAgPSAgIGRldGVybWlu
YW50M3gzKGIxLCBiMiwgYjQsIGMxLCBjMiwgYzQsIGQxLCBkMiwgZDQpOwogICAgIHJlc3VsdFsx
XVsyXSAgPSAtIGRldGVybWluYW50M3gzKGExLCBhMiwgYTQsIGMxLCBjMiwgYzQsIGQxLCBkMiwg
ZDQpOwogICAgIHJlc3VsdFsyXVsyXSAgPSAgIGRldGVybWluYW50M3gzKGExLCBhMiwgYTQsIGIx
LCBiMiwgYjQsIGQxLCBkMiwgZDQpOwogICAgIHJlc3VsdFszXVsyXSAgPSAtIGRldGVybWluYW50
M3gzKGExLCBhMiwgYTQsIGIxLCBiMiwgYjQsIGMxLCBjMiwgYzQpOwotICAgICAgICAKKwogICAg
IHJlc3VsdFswXVszXSAgPSAtIGRldGVybWluYW50M3gzKGIxLCBiMiwgYjMsIGMxLCBjMiwgYzMs
IGQxLCBkMiwgZDMpOwogICAgIHJlc3VsdFsxXVszXSAgPSAgIGRldGVybWluYW50M3gzKGExLCBh
MiwgYTMsIGMxLCBjMiwgYzMsIGQxLCBkMiwgZDMpOwogICAgIHJlc3VsdFsyXVszXSAgPSAtIGRl
dGVybWluYW50M3gzKGExLCBhMiwgYTMsIGIxLCBiMiwgYjMsIGQxLCBkMiwgZDMpOwpAQCAtMjE1
LDcgKzIxNSw3IEBAIHN0YXRpYyBib29sIGludmVyc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXg6Ok1hdHJpeDQmIG1hdHJpeCwgVHJhbnNmb3JtYXRpb25NCiAgICAgYWRqb2ludChtYXRyaXgs
IHJlc3VsdCk7CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIDR4NCBkZXRlcm1pbmFudAotICAgIC8v
IElmIHRoZSBkZXRlcm1pbmFudCBpcyB6ZXJvLCAKKyAgICAvLyBJZiB0aGUgZGV0ZXJtaW5hbnQg
aXMgemVybywKICAgICAvLyB0aGVuIHRoZSBpbnZlcnNlIG1hdHJpeCBpcyBub3QgdW5pcXVlLgog
ICAgIGRvdWJsZSBkZXQgPSBkZXRlcm1pbmFudDR4NChtYXRyaXgpOwogCkBAIC0yNjIsNyArMjYy
LDcgQEAgc3RhdGljIGRvdWJsZSB2M0xlbmd0aChWZWN0b3IzIGEpCiAgICAgcmV0dXJuIHNxcnQo
KGFbMF0gKiBhWzBdKSArIChhWzFdICogYVsxXSkgKyAoYVsyXSAqIGFbMl0pKTsKIH0KIAotc3Rh
dGljIHZvaWQgdjNTY2FsZShWZWN0b3IzIHYsIGRvdWJsZSBkZXNpcmVkTGVuZ3RoKSAKK3N0YXRp
YyB2b2lkIHYzU2NhbGUoVmVjdG9yMyB2LCBkb3VibGUgZGVzaXJlZExlbmd0aCkKIHsKICAgICBk
b3VibGUgbGVuID0gdjNMZW5ndGgodik7CiAgICAgaWYgKGxlbiAhPSAwKSB7CkBAIC0yNzMsNyAr
MjczLDcgQEAgc3RhdGljIHZvaWQgdjNTY2FsZShWZWN0b3IzIHYsIGRvdWJsZSBkZXNpcmVkTGVu
Z3RoKQogICAgIH0KIH0KIAotc3RhdGljIGRvdWJsZSB2M0RvdChjb25zdCBWZWN0b3IzIGEsIGNv
bnN0IFZlY3RvcjMgYikgCitzdGF0aWMgZG91YmxlIHYzRG90KGNvbnN0IFZlY3RvcjMgYSwgY29u
c3QgVmVjdG9yMyBiKQogewogICAgIHJldHVybiAoYVswXSAqIGJbMF0pICsgKGFbMV0gKiBiWzFd
KSArIChhWzJdICogYlsyXSk7CiB9CkBAIC0yOTUsNyArMjk1LDczIEBAIHN0YXRpYyB2b2lkIHYz
Q3Jvc3MoY29uc3QgVmVjdG9yMyBhLCBjb25zdCBWZWN0b3IzIGIsIFZlY3RvcjMgcmVzdWx0KQog
ICAgIHJlc3VsdFsyXSA9IChhWzBdICogYlsxXSkgLSAoYVsxXSAqIGJbMF0pOwogfQogCi1zdGF0
aWMgYm9vbCBkZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1h
dCwgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWRUeXBlJiByZXN1bHQpCitzdGF0aWMg
Ym9vbCBkZWNvbXBvc2UyKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQs
IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkMlR5cGUmIHJlc3VsdCkKK3sKKyAgICBk
b3VibGUgcm93MHggPSBtYXRbMF1bMF07CisgICAgZG91YmxlIHJvdzB5ID0gbWF0WzBdWzFdOwor
ICAgIGRvdWJsZSByb3cxeCA9IG1hdFsxXVswXTsKKyAgICBkb3VibGUgcm93MXkgPSBtYXRbMV1b
MV07CisgICAgcmVzdWx0LnRyYW5zbGF0ZVggPSBtYXRbM11bMF07CisgICAgcmVzdWx0LnRyYW5z
bGF0ZVkgPSBtYXRbM11bMV07CisKKyAgICAvLyBDb21wdXRlIHNjYWxpbmcgZmFjdG9ycy4KKwor
ICAgIHJlc3VsdC5zY2FsZVggPSBzcXJ0KHJvdzB4ICogcm93MHggKyByb3cweSAqIHJvdzB5KTsK
KyAgICByZXN1bHQuc2NhbGVZID0gc3FydChyb3cxeCAqIHJvdzF4ICsgcm93MXkgKiByb3cxeSk7
CisKKyAgICAvLyBJZiBkZXRlcm1pbmFudCBpcyBuZWdhdGl2ZSwgb25lIGF4aXMgd2FzIGZsaXBw
ZWQuCisgICAgZG91YmxlIGRldGVybWluYW50ID0gcm93MHggKiByb3cxeSAtIHJvdzB5ICogcm93
MXg7CisgICAgaWYgKGRldGVybWluYW50IDwgMCkgeworICAgICAgICAvLyBGbGlwIGF4aXMgd2l0
aCBtaW5pbXVtIHVuaXQgdmVjdG9yIGRvdCBwcm9kdWN0LgorICAgICAgICBpZiAocm93MHggPCBy
b3cxeSkKKyAgICAgICAgICAgIHJlc3VsdC5zY2FsZVggPSAtcmVzdWx0LnNjYWxlWDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0LnNjYWxlWSA9IC1yZXN1bHQuc2NhbGVZOworICAg
IH0KKworICAgIC8vIFJlbm9ybWFsaXplIG1hdHJpeCB0byByZW1vdmUgc2NhbGUuCisKKyAgICBp
ZiAocmVzdWx0LnNjYWxlWCkgeworICAgICAgICByb3cweCAqPSAxIC8gcmVzdWx0LnNjYWxlWDsK
KyAgICAgICAgcm93MHkgKj0gMSAvIHJlc3VsdC5zY2FsZVg7CisgICAgfQorICAgIGlmIChyZXN1
bHQuc2NhbGVZKSB7CisgICAgICAgIHJvdzF4ICo9IDEgLyByZXN1bHQuc2NhbGVZOworICAgICAg
ICByb3cxeSAqPSAxIC8gcmVzdWx0LnNjYWxlWTsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlIHJv
dGF0aW9uIGFuZCByZW5vcm1hbGl6ZSBtYXRyaXguCisKKyAgICByZXN1bHQuYW5nbGUgPSBhdGFu
Mihyb3cweSwgcm93MHgpOworCisgICAgaWYgKHJlc3VsdC5hbmdsZSkgeworICAgICAgICAvLyBS
b3RhdGUoLWFuZ2xlKSA9IFtjb3MoYW5nbGUpLCBzaW4oYW5nbGUpLCAtc2luKGFuZ2xlKSwgY29z
KGFuZ2xlKV0KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgPSBbcm93MHgsIC1yb3cweSwgcm93
MHksIHJvdzB4XQorICAgICAgICAvLyBUaGFua3MgdG8gdGhlIG5vcm1hbGl6YXRpb24gYWJvdmUu
CisgICAgICAgIAorICAgICAgICBkb3VibGUgc24gPSAtcm93MHk7CisgICAgICAgIGRvdWJsZSBj
cyA9IHJvdzB4OworICAgICAgICBkb3VibGUgbTExID0gcm93MHgsIG0xMiA9IHJvdzB5OworICAg
ICAgICBkb3VibGUgbTIxID0gcm93MXgsIG0yMiA9IHJvdzF5OworCisgICAgICAgIHJvdzB4ID0g
Y3MgKiBtMTEgKyBzbiAqIG0yMTsKKyAgICAgICAgcm93MHkgPSBjcyAqIG0xMiArIHNuICogbTIy
OworICAgICAgICByb3cxeCA9IC1zbiAqIG0xMSArIGNzICogbTIxOworICAgICAgICByb3cxeSA9
IC1zbiAqIG0xMiArIGNzICogbTIyOworICAgIH0KKworICAgIHJlc3VsdC5tMTEgPSByb3cweDsK
KyAgICByZXN1bHQubTEyID0gcm93MHk7CisgICAgcmVzdWx0Lm0yMSA9IHJvdzF4OworICAgIHJl
c3VsdC5tMjIgPSByb3cxeTsKKworICAgIC8vIENvbnZlcnQgaW50byBkZWdyZWVzIGJlY2F1c2Ug
b3VyIHJvdGF0aW9uIGZ1bmN0aW9ucyBleHBlY3QgaXQuCisgICAgcmVzdWx0LmFuZ2xlID0gcmFk
MmRlZyhyZXN1bHQuYW5nbGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29s
IGRlY29tcG9zZTQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJh
bnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWQ0VHlwZSYgcmVzdWx0KQogewogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0IGxvY2FsTWF0cml4OwogICAgIG1lbWNweShsb2NhbE1h
dHJpeCwgbWF0LCBzaXplb2YoVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQpKTsKQEAgLTMy
MCw3ICszODYsNyBAQCBzdGF0aWMgYm9vbCBkZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJhbnNmb3JtYXRpb25NYQogICAgIGlmIChkZXRlcm1pbmFu
dDR4NChwZXJzcGVjdGl2ZU1hdHJpeCkgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgLy8gRmlyc3QsIGlzb2xhdGUgcGVyc3BlY3RpdmUuICBUaGlzIGlzIHRoZSBtZXNzaWVzdC4K
KyAgICAvLyBGaXJzdCwgaXNvbGF0ZSBwZXJzcGVjdGl2ZS4gVGhpcyBpcyB0aGUgbWVzc2llc3Qu
CiAgICAgaWYgKGxvY2FsTWF0cml4WzBdWzNdICE9IDAgfHwgbG9jYWxNYXRyaXhbMV1bM10gIT0g
MCB8fCBsb2NhbE1hdHJpeFsyXVszXSAhPSAwKSB7CiAgICAgICAgIC8vIHJpZ2h0SGFuZFNpZGUg
aXMgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgZXF1YXRpb24uCiAgICAgICAgIFZlY3RvcjQg
cmlnaHRIYW5kU2lkZTsKQEAgLTMzMCw3ICszOTYsNyBAQCBzdGF0aWMgYm9vbCBkZWNvbXBvc2Uo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1hdHJpeDQmIG1hdCwgVHJhbnNmb3JtYXRpb25N
YQogICAgICAgICByaWdodEhhbmRTaWRlWzNdID0gbG9jYWxNYXRyaXhbM11bM107CiAKICAgICAg
ICAgLy8gU29sdmUgdGhlIGVxdWF0aW9uIGJ5IGludmVydGluZyBwZXJzcGVjdGl2ZU1hdHJpeCBh
bmQgbXVsdGlwbHlpbmcKLSAgICAgICAgLy8gcmlnaHRIYW5kU2lkZSBieSB0aGUgaW52ZXJzZS4g
IChUaGlzIGlzIHRoZSBlYXNpZXN0IHdheSwgbm90CisgICAgICAgIC8vIHJpZ2h0SGFuZFNpZGUg
YnkgdGhlIGludmVyc2UuIChUaGlzIGlzIHRoZSBlYXNpZXN0IHdheSwgbm90CiAgICAgICAgIC8v
IG5lY2Vzc2FyaWx5IHRoZSBiZXN0LikKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6Ok1h
dHJpeDQgaW52ZXJzZVBlcnNwZWN0aXZlTWF0cml4LCB0cmFuc3Bvc2VkSW52ZXJzZVBlcnNwZWN0
aXZlTWF0cml4OwogICAgICAgICBpbnZlcnNlKHBlcnNwZWN0aXZlTWF0cml4LCBpbnZlcnNlUGVy
c3BlY3RpdmVNYXRyaXgpOwpAQCAtMzM4LDEyICs0MDQsMTIgQEAgc3RhdGljIGJvb2wgZGVjb21w
b3NlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0
aW9uTWEKIAogICAgICAgICBWZWN0b3I0IHBlcnNwZWN0aXZlUG9pbnQ7CiAgICAgICAgIHY0TXVs
UG9pbnRCeU1hdHJpeChyaWdodEhhbmRTaWRlLCB0cmFuc3Bvc2VkSW52ZXJzZVBlcnNwZWN0aXZl
TWF0cml4LCBwZXJzcGVjdGl2ZVBvaW50KTsKLSAKKwogICAgICAgICByZXN1bHQucGVyc3BlY3Rp
dmVYID0gcGVyc3BlY3RpdmVQb2ludFswXTsKICAgICAgICAgcmVzdWx0LnBlcnNwZWN0aXZlWSA9
IHBlcnNwZWN0aXZlUG9pbnRbMV07CiAgICAgICAgIHJlc3VsdC5wZXJzcGVjdGl2ZVogPSBwZXJz
cGVjdGl2ZVBvaW50WzJdOwogICAgICAgICByZXN1bHQucGVyc3BlY3RpdmVXID0gcGVyc3BlY3Rp
dmVQb2ludFszXTsKLSAgICAgICAgCisKICAgICAgICAgLy8gQ2xlYXIgdGhlIHBlcnNwZWN0aXZl
IHBhcnRpdGlvbgogICAgICAgICBsb2NhbE1hdHJpeFswXVszXSA9IGxvY2FsTWF0cml4WzFdWzNd
ID0gbG9jYWxNYXRyaXhbMl1bM10gPSAwOwogICAgICAgICBsb2NhbE1hdHJpeFszXVszXSA9IDE7
CkBAIC0zNTIsNyArNDE4LDcgQEAgc3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEKICAgICAgICAgcmVz
dWx0LnBlcnNwZWN0aXZlWCA9IHJlc3VsdC5wZXJzcGVjdGl2ZVkgPSByZXN1bHQucGVyc3BlY3Rp
dmVaID0gMDsKICAgICAgICAgcmVzdWx0LnBlcnNwZWN0aXZlVyA9IDE7CiAgICAgfQotICAgIAor
CiAgICAgLy8gTmV4dCB0YWtlIGNhcmUgb2YgdHJhbnNsYXRpb24gKGVhc3kpLgogICAgIHJlc3Vs
dC50cmFuc2xhdGVYID0gbG9jYWxNYXRyaXhbM11bMF07CiAgICAgbG9jYWxNYXRyaXhbM11bMF0g
PSAwOwpAQCAtMzk1LDkgKzQ2MSw5IEBAIHN0YXRpYyBib29sIGRlY29tcG9zZShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6TWF0cml4NCYgbWF0LCBUcmFuc2Zvcm1hdGlvbk1hCiAgICAgdjNT
Y2FsZShyb3dbMl0sIDEuMCk7CiAgICAgcmVzdWx0LnNrZXdYWiAvPSByZXN1bHQuc2NhbGVaOwog
ICAgIHJlc3VsdC5za2V3WVogLz0gcmVzdWx0LnNjYWxlWjsKLSAKKwogICAgIC8vIEF0IHRoaXMg
cG9pbnQsIHRoZSBtYXRyaXggKGluIHJvd3NbXSkgaXMgb3J0aG9ub3JtYWwuCi0gICAgLy8gQ2hl
Y2sgZm9yIGEgY29vcmRpbmF0ZSBzeXN0ZW0gZmxpcC4gIElmIHRoZSBkZXRlcm1pbmFudAorICAg
IC8vIENoZWNrIGZvciBhIGNvb3JkaW5hdGUgc3lzdGVtIGZsaXAuIElmIHRoZSBkZXRlcm1pbmFu
dAogICAgIC8vIGlzIC0xLCB0aGVuIG5lZ2F0ZSB0aGUgbWF0cml4IGFuZCB0aGUgc2NhbGluZyBm
YWN0b3JzLgogICAgIHYzQ3Jvc3Mocm93WzFdLCByb3dbMl0sIHBkdW0zKTsKICAgICBpZiAodjNE
b3Qocm93WzBdLCBwZHVtMykgPCAwKSB7CkBAIC00MTIsOSArNDc4LDkgQEAgc3RhdGljIGJvb2wg
ZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5z
Zm9ybWF0aW9uTWEKICAgICAgICAgICAgIHJvd1tpXVsyXSAqPSAtMTsKICAgICAgICAgfQogICAg
IH0KLSAKKwogICAgIC8vIE5vdywgZ2V0IHRoZSByb3RhdGlvbnMgb3V0LCBhcyBkZXNjcmliZWQg
aW4gdGhlIGdlbS4KLSAgICAKKwogICAgIC8vIEZJWE1FIC0gQWRkIHRoZSBhYmlsaXR5IHRvIHJl
dHVybiBlaXRoZXIgcXVhdGVybmlvbnMgKHdoaWNoIGFyZQogICAgIC8vIGVhc2llciB0byByZWNv
bXBvc2Ugd2l0aCkgb3IgRXVsZXIgYW5nbGVzIChyeCwgcnksIHJ6KSwgd2hpY2gKICAgICAvLyBh
cmUgZWFzaWVyIGZvciBhdXRob3JzIHRvIGRlYWwgd2l0aC4gVGhlIGxhdHRlciB3aWxsIG9ubHkg
YmUgdXNlZnVsCkBAIC00MjksNyArNDk1LDcgQEAgc3RhdGljIGJvb2wgZGVjb21wb3NlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEKICAg
ICAvLyAgICAgcmV0LnJvdGF0ZVggPSBhdGFuMigtcm93WzJdWzBdLCByb3dbMV1bMV0pOwogICAg
IC8vICAgICByZXQucm90YXRlWiA9IDA7CiAgICAgLy8gfQotICAgIAorCiAgICAgZG91YmxlIHMs
IHQsIHgsIHksIHosIHc7CiAKICAgICB0ID0gcm93WzBdWzBdICsgcm93WzFdWzFdICsgcm93WzJd
WzJdICsgMS4wOwpAQCAtNDQwLDIyICs1MDYsMjIgQEAgc3RhdGljIGJvb2wgZGVjb21wb3NlKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBtYXQsIFRyYW5zZm9ybWF0aW9uTWEK
ICAgICAgICAgeCA9IChyb3dbMl1bMV0gLSByb3dbMV1bMl0pICogczsKICAgICAgICAgeSA9IChy
b3dbMF1bMl0gLSByb3dbMl1bMF0pICogczsKICAgICAgICAgeiA9IChyb3dbMV1bMF0gLSByb3db
MF1bMV0pICogczsKLSAgICB9IGVsc2UgaWYgKHJvd1swXVswXSA+IHJvd1sxXVsxXSAmJiByb3db
MF1bMF0gPiByb3dbMl1bMl0pIHsgCi0gICAgICAgIHMgPSBzcXJ0ICgxLjAgKyByb3dbMF1bMF0g
LSByb3dbMV1bMV0gLSByb3dbMl1bMl0pICogMi4wOyAvLyBTPTQqcXggCisgICAgfSBlbHNlIGlm
IChyb3dbMF1bMF0gPiByb3dbMV1bMV0gJiYgcm93WzBdWzBdID4gcm93WzJdWzJdKSB7CisgICAg
ICAgIHMgPSBzcXJ0KDEuMCArIHJvd1swXVswXSAtIHJvd1sxXVsxXSAtIHJvd1syXVsyXSkgKiAy
LjA7IC8vIFMgPSA0ICogcXguCiAgICAgICAgIHggPSAwLjI1ICogczsKLSAgICAgICAgeSA9IChy
b3dbMF1bMV0gKyByb3dbMV1bMF0pIC8gczsgCi0gICAgICAgIHogPSAocm93WzBdWzJdICsgcm93
WzJdWzBdKSAvIHM7IAorICAgICAgICB5ID0gKHJvd1swXVsxXSArIHJvd1sxXVswXSkgLyBzOwor
ICAgICAgICB6ID0gKHJvd1swXVsyXSArIHJvd1syXVswXSkgLyBzOwogICAgICAgICB3ID0gKHJv
d1syXVsxXSAtIHJvd1sxXVsyXSkgLyBzOwotICAgIH0gZWxzZSBpZiAocm93WzFdWzFdID4gcm93
WzJdWzJdKSB7IAotICAgICAgICBzID0gc3FydCAoMS4wICsgcm93WzFdWzFdIC0gcm93WzBdWzBd
IC0gcm93WzJdWzJdKSAqIDIuMDsgLy8gUz00KnF5Ci0gICAgICAgIHggPSAocm93WzBdWzFdICsg
cm93WzFdWzBdKSAvIHM7IAorICAgIH0gZWxzZSBpZiAocm93WzFdWzFdID4gcm93WzJdWzJdKSB7
CisgICAgICAgIHMgPSBzcXJ0KDEuMCArIHJvd1sxXVsxXSAtIHJvd1swXVswXSAtIHJvd1syXVsy
XSkgKiAyLjA7IC8vIFMgPSA0ICogcXkuCisgICAgICAgIHggPSAocm93WzBdWzFdICsgcm93WzFd
WzBdKSAvIHM7CiAgICAgICAgIHkgPSAwLjI1ICogczsKLSAgICAgICAgeiA9IChyb3dbMV1bMl0g
KyByb3dbMl1bMV0pIC8gczsgCisgICAgICAgIHogPSAocm93WzFdWzJdICsgcm93WzJdWzFdKSAv
IHM7CiAgICAgICAgIHcgPSAocm93WzBdWzJdIC0gcm93WzJdWzBdKSAvIHM7Ci0gICAgfSBlbHNl
IHsgCi0gICAgICAgIHMgPSBzcXJ0KDEuMCArIHJvd1syXVsyXSAtIHJvd1swXVswXSAtIHJvd1sx
XVsxXSkgKiAyLjA7IC8vIFM9NCpxegorICAgIH0gZWxzZSB7CisgICAgICAgIHMgPSBzcXJ0KDEu
MCArIHJvd1syXVsyXSAtIHJvd1swXVswXSAtIHJvd1sxXVsxXSkgKiAyLjA7IC8vIFMgPSA0ICog
cXouCiAgICAgICAgIHggPSAocm93WzBdWzJdICsgcm93WzJdWzBdKSAvIHM7Ci0gICAgICAgIHkg
PSAocm93WzFdWzJdICsgcm93WzJdWzFdKSAvIHM7IAorICAgICAgICB5ID0gKHJvd1sxXVsyXSAr
IHJvd1syXVsxXSkgLyBzOwogICAgICAgICB6ID0gMC4yNSAqIHM7CiAgICAgICAgIHcgPSAocm93
WzFdWzBdIC0gcm93WzBdWzFdKSAvIHM7CiAgICAgfQpAQCAtNDY0LDEyICs1MzAsMTIgQEAgc3Rh
dGljIGJvb2wgZGVjb21wb3NlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpNYXRyaXg0JiBt
YXQsIFRyYW5zZm9ybWF0aW9uTWEKICAgICByZXN1bHQucXVhdGVybmlvblkgPSB5OwogICAgIHJl
c3VsdC5xdWF0ZXJuaW9uWiA9IHo7CiAgICAgcmVzdWx0LnF1YXRlcm5pb25XID0gdzsKLSAgICAK
KwogICAgIHJldHVybiB0cnVlOwogfQogCiAvLyBQZXJmb3JtIGEgc3BoZXJpY2FsIGxpbmVhciBp
bnRlcnBvbGF0aW9uIGJldHdlZW4gdGhlIHR3bwotLy8gcGFzc2VkIHF1YXRlcm5pb25zIHdpdGgg
MCA8PSB0IDw9IDEKKy8vIHBhc3NlZCBxdWF0ZXJuaW9ucyB3aXRoIDAgPD0gdCA8PSAxLgogc3Rh
dGljIHZvaWQgc2xlcnAoZG91YmxlIHFhWzRdLCBjb25zdCBkb3VibGUgcWJbNF0sIGRvdWJsZSB0
KQogewogICAgIGRvdWJsZSBheCwgYXksIGF6LCBhdzsKQEAgLTU1MSwxMSArNjE3LDExIEBAIEZs
b2F0UG9pbnQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnByb2plY3RQb2ludChjb25zdCBGbG9hdFBv
aW50JiBwLCBib29sKiBjbGFtcGVkCiAgICAgLy8gd2l0aCB0aGUgdHJhbnNmb3JtIGFwcGxpZWQu
IE9uY2Ugd2UgaGF2ZSB0aGF0IHBvaW50IHdlIGFwcGx5IHRoZQogICAgIC8vIGludmVyc2UgdHJh
bnNmb3JtIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgcG9pbnQgaW4gdGhlIHNvdXJjZQogICAg
IC8vIHNwYWNlLgotICAgIC8vIAorICAgIC8vCiAgICAgLy8gR2l2ZW4gYSBwbGFuZSB3aXRoIG5v
cm1hbCBQbiwgYW5kIGEgcmF5IHN0YXJ0aW5nIGF0IHBvaW50IFIwIGFuZAogICAgIC8vIHdpdGgg
ZGlyZWN0aW9uIGRlZmluZWQgYnkgdGhlIHZlY3RvciBSZCwgd2UgY2FuIGZpbmQgdGhlCiAgICAg
Ly8gaW50ZXJzZWN0aW9uIHBvaW50IGFzIGEgZGlzdGFuY2UgZCBmcm9tIFIwIGluIHVuaXRzIG9m
IFJkIGJ5OgotICAgIC8vIAorICAgIC8vCiAgICAgLy8gZCA9IC1kb3QgKFBuJywgUjApIC8gZG90
IChQbicsIFJkKQogICAgIGlmIChjbGFtcGVkKQogICAgICAgICAqY2xhbXBlZCA9IGZhbHNlOwpA
QCAtNTY1LDcgKzYzMSw3IEBAIEZsb2F0UG9pbnQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnByb2pl
Y3RQb2ludChjb25zdCBGbG9hdFBvaW50JiBwLCBib29sKiBjbGFtcGVkCiAgICAgICAgIC8vIHRy
YWNlLCBhbmQgdGhlcmUgaXMgbm8gd2VsbC1kZWZpbmVkIHZhbHVlIGZvciB0aGUgcHJvamVjdGlv
bi4KICAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKICAgICB9Ci0gICAgCisKICAgICBkb3Vi
bGUgeCA9IHAueCgpOwogICAgIGRvdWJsZSB5ID0gcC55KCk7CiAgICAgZG91YmxlIHogPSAtKG0x
MygpICogeCArIG0yMygpICogeSArIG00MygpKSAvIG0zMygpOwpAQCAtNjA4LDcgKzY3NCw3IEBA
IEZsb2F0UXVhZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVjdFF1YWQoY29uc3QgRmxvYXRR
dWFkJiBxLCBib29sKiBjbGFtcGVkKSBjCiAKICAgICBpZiAoY2xhbXBlZCkKICAgICAgICAgKmNs
YW1wZWQgPSBjbGFtcGVkMSB8fCBjbGFtcGVkMiB8fCBjbGFtcGVkMyB8fCBjbGFtcGVkNDsKLSAg
ICAgICAgCisKICAgICAvLyBJZiBhbGwgcG9pbnRzIG9uIHRoZSBxdWFkIGhhZCB3IDwgMCwgdGhl
biB0aGUgZW50aXJlIHF1YWQgd291bGQgbm90IGJlIHZpc2libGUgdG8gdGhlIHByb2plY3RlZCBz
dXJmYWNlLgogICAgIGJvb2wgZXZlcnl0aGluZ1dhc0NsaXBwZWQgPSBjbGFtcGVkMSAmJiBjbGFt
cGVkMiAmJiBjbGFtcGVkMyAmJiBjbGFtcGVkNDsKICAgICBpZiAoZXZlcnl0aGluZ1dhc0NsaXBw
ZWQpCkBAIC03MTUsNyArNzgxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kKICAgICBtX21h
dHJpeFswXVsxXSAqPSBzeDsKICAgICBtX21hdHJpeFswXVsyXSAqPSBzeDsKICAgICBtX21hdHJp
eFswXVszXSAqPSBzeDsKLSAgICAKKwogICAgIG1fbWF0cml4WzFdWzBdICo9IHN5OwogICAgIG1f
bWF0cml4WzFdWzFdICo9IHN5OwogICAgIG1fbWF0cml4WzFdWzJdICo9IHN5OwpAQCAtNzI2LDcg
Kzc5Miw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2Nh
bGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5CiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlM2QoZG91YmxlIHN4LCBkb3VibGUgc3ksIGRvdWJs
ZSBzeikKIHsKICAgICBzY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKLSAgICAKKwogICAgIG1fbWF0
cml4WzJdWzBdICo9IHN6OwogICAgIG1fbWF0cml4WzJdWzFdICo9IHN6OwogICAgIG1fbWF0cml4
WzJdWzJdICo9IHN6OwpAQCAtNzM5LDcgKzgwNSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlM2QoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUK
ICAgICAvLyBOb3JtYWxpemUgdGhlIGF4aXMgb2Ygcm90YXRpb24KICAgICBkb3VibGUgbGVuZ3Ro
ID0gc3FydCh4ICogeCArIHkgKiB5ICsgeiAqIHopOwogICAgIGlmIChsZW5ndGggPT0gMCkgewot
ICAgICAgICAvLyBBIGRpcmVjdGlvbiB2ZWN0b3IgdGhhdCBjYW5ub3QgYmUgbm9ybWFsaXplZCwg
c3VjaCBhcyBbMCwgMCwgMF0sIHdpbGwgY2F1c2UgdGhlIHJvdGF0aW9uIHRvIG5vdCBiZSBhcHBs
aWVkLiAKKyAgICAgICAgLy8gQSBkaXJlY3Rpb24gdmVjdG9yIHRoYXQgY2Fubm90IGJlIG5vcm1h
bGl6ZWQsIHN1Y2ggYXMgWzAsIDAsIDBdLCB3aWxsIGNhdXNlIHRoZSByb3RhdGlvbiB0byBub3Qg
YmUgYXBwbGllZC4KICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0gZWxzZSBpZiAobGVuZ3Ro
ICE9IDEpIHsKICAgICAgICAgeCAvPSBsZW5ndGg7CkBAIC03NTIsNyArODE4LDcgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgeCwg
ZG91YmxlIHksIGRvdWJsZQogCiAgICAgZG91YmxlIHNpblRoZXRhID0gc2luKGFuZ2xlKTsKICAg
ICBkb3VibGUgY29zVGhldGEgPSBjb3MoYW5nbGUpOwotICAgIAorCiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbWF0OwogCiAgICAgLy8gT3B0aW1pemUgY2FzZXMgd2hlcmUgdGhlIGF4aXMgaXMg
YWxvbmcgYSBtYWpvciBheGlzCkBAIC04MjcsMTIgKzg5MywxMiBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRvdWJsZSByeCwgZG91YmxlIHJ5
LCBkb3VibAogICAgIHJ4ID0gZGVnMnJhZChyeCk7CiAgICAgcnkgPSBkZWcycmFkKHJ5KTsKICAg
ICByeiA9IGRlZzJyYWQocnopOwotICAgIAorCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
OwotICAgIAorCiAgICAgZG91YmxlIHNpblRoZXRhID0gc2luKHJ6KTsKICAgICBkb3VibGUgY29z
VGhldGEgPSBjb3MocnopOwotICAgIAorCiAgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gY29zVGhl
dGE7CiAgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gc2luVGhldGE7CiAgICAgbWF0Lm1fbWF0cml4
WzBdWzJdID0gMC4wOwpAQCAtODQ1LDEyICs5MTEsMTIgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91
YmwKICAgICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9t
YXRyaXhbMl1bM10gPSAwLjA7CiAgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4
WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wOwogICAgIG1hdC5tX21hdHJpeFszXVsz
XSA9IDEuMDsKLSAgICAKKwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJtYXQobWF0KTsKLSAg
ICAKKwogICAgIHNpblRoZXRhID0gc2luKHJ5KTsKICAgICBjb3NUaGV0YSA9IGNvcyhyeSk7Ci0g
ICAgCisKICAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSBjb3NUaGV0YTsKICAgICBtYXQubV9tYXRy
aXhbMF1bMV0gPSAwLjA7CiAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gLXNpblRoZXRhOwpAQCAt
ODY4LDcgKzkzNCw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6cm90YXRlM2QoZG91YmxlIHJ4LCBkb3VibGUgcnksIGRvdWJsCiAKICAgICBzaW5UaGV0YSA9
IHNpbihyeCk7CiAgICAgY29zVGhldGEgPSBjb3MocngpOwotICAgIAorCiAgICAgbWF0Lm1fbWF0
cml4WzBdWzBdID0gMS4wOwogICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDAuMDsKICAgICBtYXQu
bV9tYXRyaXhbMF1bMl0gPSAwLjA7CkBAIC05NDMsNyArMTAwOSw3IEBAIFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tldyhkb3VibGUgc3gsIGRvdWJsZSBzeSkK
ICAgICAvLyBhbmdsZXMgYXJlIGluIGRlZ3JlZXMuIFN3aXRjaCB0byByYWRpYW5zCiAgICAgc3gg
PSBkZWcycmFkKHN4KTsKICAgICBzeSA9IGRlZzJyYWQoc3kpOwotICAgIAorCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbWF0OwogICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IHRhbihzeSk7IC8v
IG5vdGUgdGhhdCB0aGUgeSBzaGVhciBnb2VzIGluIHRoZSBmaXJzdCByb3cKICAgICBtYXQubV9t
YXRyaXhbMV1bMF0gPSB0YW4oc3gpOyAvLyBhbmQgdGhlIHggc2hlYXIgaW4gdGhlIHNlY29uZCBy
b3cKQEAgLTEyNDIsNyArMTMwOCw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmCiAgICAgX21t
X3N0b3JlX3BkKCZtX21hdHJpeFszXVsyXSwgYWNjdW11bGF0b3IpOwogI2Vsc2UKICAgICBNYXRy
aXg0IHRtcDsKLSAgICAKKwogICAgIHRtcFswXVswXSA9IChtYXQubV9tYXRyaXhbMF1bMF0gKiBt
X21hdHJpeFswXVswXSArIG1hdC5tX21hdHJpeFswXVsxXSAqIG1fbWF0cml4WzFdWzBdCiAgICAg
ICAgICAgICAgICArIG1hdC5tX21hdHJpeFswXVsyXSAqIG1fbWF0cml4WzJdWzBdICsgbWF0Lm1f
bWF0cml4WzBdWzNdICogbV9tYXRyaXhbM11bMF0pOwogICAgIHRtcFswXVsxXSA9IChtYXQubV9t
YXRyaXhbMF1bMF0gKiBtX21hdHJpeFswXVsxXSArIG1hdC5tX21hdHJpeFswXVsxXSAqIG1fbWF0
cml4WzFdWzFdCkBAIC0xMjc4LDcgKzEzNDQsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jgog
ICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbM11bMl0gKiBtX21hdHJpeFsyXVsyXSArIG1h
dC5tX21hdHJpeFszXVszXSAqIG1fbWF0cml4WzNdWzJdKTsKICAgICB0bXBbM11bM10gPSAobWF0
Lm1fbWF0cml4WzNdWzBdICogbV9tYXRyaXhbMF1bM10gKyBtYXQubV9tYXRyaXhbM11bMV0gKiBt
X21hdHJpeFsxXVszXQogICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbM11bMl0gKiBtX21h
dHJpeFsyXVszXSArIG1hdC5tX21hdHJpeFszXVszXSAqIG1fbWF0cml4WzNdWzNdKTsKLSAgICAK
KwogICAgIHNldE1hdHJpeCh0bXApOwogI2VuZGlmCiAgICAgcmV0dXJuICp0aGlzOwpAQCAtMTMy
MSwyNSArMTM4NywyNSBAQCBib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0ludmVydGlibGUo
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0IAorVHJhbnNmb3JtYXRpb25NYXRyaXgg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UoKSBjb25zdAogewogICAgIGlmIChpc0lkZW50
aXR5T3JUcmFuc2xhdGlvbigpKSB7CiAgICAgICAgIC8vIGlkZW50aXR5IG1hdHJpeAogICAgICAg
ICBpZiAobV9tYXRyaXhbM11bMF0gPT0gMCAmJiBtX21hdHJpeFszXVsxXSA9PSAwICYmIG1fbWF0
cml4WzNdWzJdID09IDApCiAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgo
KTsKLSAgICAgICAgCisKICAgICAgICAgLy8gdHJhbnNsYXRpb24KICAgICAgICAgcmV0dXJuIFRy
YW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAxLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tX21h
dHJpeFszXVswXSwgLW1fbWF0cml4WzNdWzFdLCAtbV9tYXRyaXhbM11bMl0sIDEpOwogICAgIH0K
LSAgICAKKwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludk1hdDsKICAgICBib29sIGludmVy
dGVkID0gV2ViQ29yZTo6aW52ZXJzZShtX21hdHJpeCwgaW52TWF0Lm1fbWF0cml4KTsKICAgICBp
ZiAoIWludmVydGVkKQogICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKLSAg
ICAKKwogICAgIHJldHVybiBpbnZNYXQ7CiB9CiAKQEAgLTEzNDcsMTUgKzE0MTMsMTUgQEAgdm9p
ZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFrZUFmZmluZSgpCiB7CiAgICAgbV9tYXRyaXhbMF1b
Ml0gPSAwOwogICAgIG1fbWF0cml4WzBdWzNdID0gMDsKLSAgICAKKwogICAgIG1fbWF0cml4WzFd
WzJdID0gMDsKICAgICBtX21hdHJpeFsxXVszXSA9IDA7Ci0gICAgCisKICAgICBtX21hdHJpeFsy
XVswXSA9IDA7CiAgICAgbV9tYXRyaXhbMl1bMV0gPSAwOwogICAgIG1fbWF0cml4WzJdWzJdID0g
MTsKICAgICBtX21hdHJpeFsyXVszXSA9IDA7Ci0gICAgCisKICAgICBtX21hdHJpeFszXVsyXSA9
IDA7CiAgICAgbV9tYXRyaXhbM11bM10gPSAxOwogfQpAQCAtMTM3MiwxOCArMTQzOCw1MyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgYmxlbmRGbG9hdChkb3VibGUmIGZyb20sIGRvdWJsZSB0bywgZG91
YmxlIHByb2dyZXNzKQogICAgICAgICBmcm9tID0gZnJvbSArICh0byAtIGZyb20pICogcHJvZ3Jl
c3M7CiB9CiAKLXZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpCit2b2lkIFRyYW5zZm9ybWF0aW9u
TWF0cml4OjpibGVuZDIoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZyb20sIGRvdWJsZSBw
cm9ncmVzcykKIHsKLSAgICBpZiAoZnJvbS5pc0lkZW50aXR5KCkgJiYgaXNJZGVudGl0eSgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIC8vIGRlY29tcG9zZQotICAgIERlY29tcG9z
ZWRUeXBlIGZyb21EZWNvbXA7Ci0gICAgRGVjb21wb3NlZFR5cGUgdG9EZWNvbXA7Ci0gICAgZnJv
bS5kZWNvbXBvc2UoZnJvbURlY29tcCk7Ci0gICAgZGVjb21wb3NlKHRvRGVjb21wKTsKKyAgICBE
ZWNvbXBvc2VkMlR5cGUgZnJvbURlY29tcDsKKyAgICBEZWNvbXBvc2VkMlR5cGUgdG9EZWNvbXA7
CisgICAgZnJvbS5kZWNvbXBvc2UyKGZyb21EZWNvbXApOworICAgIGRlY29tcG9zZTIodG9EZWNv
bXApOworCisgICAgLy8gSWYgeC1heGlzIG9mIG9uZSBpcyBmbGlwcGVkLCBhbmQgeS1heGlzIG9m
IHRoZSBvdGhlciwgY29udmVydCB0byBhbiB1bmZsaXBwZWQgcm90YXRpb24uCisgICAgaWYgKChm
cm9tRGVjb21wLnNjYWxlWCA8IDAgJiYgdG9EZWNvbXAuc2NhbGVZIDwgMCkgfHwgKGZyb21EZWNv
bXAuc2NhbGVZIDwgMCAmJiB0b0RlY29tcC5zY2FsZVggPCAwKSkgeworICAgICAgICBmcm9tRGVj
b21wLnNjYWxlWCA9IC1mcm9tRGVjb21wLnNjYWxlWDsKKyAgICAgICAgZnJvbURlY29tcC5zY2Fs
ZVkgPSAtZnJvbURlY29tcC5zY2FsZVk7CisgICAgICAgIGZyb21EZWNvbXAuYW5nbGUgKz0gZnJv
bURlY29tcC5hbmdsZSA8IDAgPyAxODAgOiAtMTgwOworICAgIH0KKworICAgIC8vIERvbid0IHJv
dGF0ZSB0aGUgbG9uZyB3YXkgYXJvdW5kLgorICAgIGlmICghZnJvbURlY29tcC5hbmdsZSkKKyAg
ICAgICAgZnJvbURlY29tcC5hbmdsZSA9IDM2MDsKKyAgICBpZiAoIXRvRGVjb21wLmFuZ2xlKQor
ICAgICAgICB0b0RlY29tcC5hbmdsZSA9IDM2MDsKKworICAgIGlmIChmYWJzKGZyb21EZWNvbXAu
YW5nbGUgLSB0b0RlY29tcC5hbmdsZSkgPiAxODApIHsKKyAgICAgICAgaWYgKGZyb21EZWNvbXAu
YW5nbGUgPiB0b0RlY29tcC5hbmdsZSkKKyAgICAgICAgICAgIGZyb21EZWNvbXAuYW5nbGUgLT0g
MzYwOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0b0RlY29tcC5hbmdsZSAtPSAzNjA7Cisg
ICAgfQorCisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0xMSwgdG9EZWNvbXAubTExLCBwcm9n
cmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0xMiwgdG9EZWNvbXAubTEyLCBwcm9n
cmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0yMSwgdG9EZWNvbXAubTIxLCBwcm9n
cmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLm0yMiwgdG9EZWNvbXAubTIyLCBwcm9n
cmVzcyk7CisgICAgYmxlbmRGbG9hdChmcm9tRGVjb21wLnRyYW5zbGF0ZVgsIHRvRGVjb21wLnRy
YW5zbGF0ZVgsIHByb2dyZXNzKTsKKyAgICBibGVuZEZsb2F0KGZyb21EZWNvbXAudHJhbnNsYXRl
WSwgdG9EZWNvbXAudHJhbnNsYXRlWSwgcHJvZ3Jlc3MpOworICAgIGJsZW5kRmxvYXQoZnJvbURl
Y29tcC5zY2FsZVgsIHRvRGVjb21wLnNjYWxlWCwgcHJvZ3Jlc3MpOworICAgIGJsZW5kRmxvYXQo
ZnJvbURlY29tcC5zY2FsZVksIHRvRGVjb21wLnNjYWxlWSwgcHJvZ3Jlc3MpOworICAgIGJsZW5k
RmxvYXQoZnJvbURlY29tcC5hbmdsZSwgdG9EZWNvbXAuYW5nbGUsIHByb2dyZXNzKTsKKworICAg
IHJlY29tcG9zZTIoZnJvbURlY29tcCk7Cit9CisKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OmJsZW5kNChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNz
KQoreworICAgIERlY29tcG9zZWQ0VHlwZSBmcm9tRGVjb21wOworICAgIERlY29tcG9zZWQ0VHlw
ZSB0b0RlY29tcDsKKyAgICBmcm9tLmRlY29tcG9zZTQoZnJvbURlY29tcCk7CisgICAgZGVjb21w
b3NlNCh0b0RlY29tcCk7CiAKLSAgICAvLyBpbnRlcnBvbGF0ZQogICAgIGJsZW5kRmxvYXQoZnJv
bURlY29tcC5zY2FsZVgsIHRvRGVjb21wLnNjYWxlWCwgcHJvZ3Jlc3MpOwogICAgIGJsZW5kRmxv
YXQoZnJvbURlY29tcC5zY2FsZVksIHRvRGVjb21wLnNjYWxlWSwgcHJvZ3Jlc3MpOwogICAgIGJs
ZW5kRmxvYXQoZnJvbURlY29tcC5zY2FsZVosIHRvRGVjb21wLnNjYWxlWiwgcHJvZ3Jlc3MpOwpA
QCAtMTM5NywxNCArMTQ5OCwzNyBAQCB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpibGVuZChj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZQogICAgIGJsZW5k
RmxvYXQoZnJvbURlY29tcC5wZXJzcGVjdGl2ZVksIHRvRGVjb21wLnBlcnNwZWN0aXZlWSwgcHJv
Z3Jlc3MpOwogICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5wZXJzcGVjdGl2ZVosIHRvRGVjb21w
LnBlcnNwZWN0aXZlWiwgcHJvZ3Jlc3MpOwogICAgIGJsZW5kRmxvYXQoZnJvbURlY29tcC5wZXJz
cGVjdGl2ZVcsIHRvRGVjb21wLnBlcnNwZWN0aXZlVywgcHJvZ3Jlc3MpOwotICAgIAorCiAgICAg
c2xlcnAoJmZyb21EZWNvbXAucXVhdGVybmlvblgsICZ0b0RlY29tcC5xdWF0ZXJuaW9uWCwgcHJv
Z3Jlc3MpOwotICAgICAgICAKLSAgICAvLyByZWNvbXBvc2UKLSAgICByZWNvbXBvc2UoZnJvbURl
Y29tcCk7CisKKyAgICByZWNvbXBvc2U0KGZyb21EZWNvbXApOworfQorCit2b2lkIFRyYW5zZm9y
bWF0aW9uTWF0cml4OjpibGVuZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91
YmxlIHByb2dyZXNzKQoreworICAgIGlmIChmcm9tLmlzSWRlbnRpdHkoKSAmJiBpc0lkZW50aXR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmcm9tLmlzQWZmaW5lKCkgJiYgaXNBZmZp
bmUoKSkKKyAgICAgICAgYmxlbmQyKGZyb20sIHByb2dyZXNzKTsKKyAgICBlbHNlCisgICAgICAg
IGJsZW5kNChmcm9tLCBwcm9ncmVzcyk7CiB9CiAKLWJvb2wgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OmRlY29tcG9zZShEZWNvbXBvc2VkVHlwZSYgZGVjb21wKSBjb25zdAorYm9vbCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6ZGVjb21wb3NlMihEZWNvbXBvc2VkMlR5cGUmIGRlY29tcCkgY29uc3QKK3sK
KyAgICBpZiAoaXNJZGVudGl0eSgpKSB7CisgICAgICAgIG1lbXNldCgmZGVjb21wLCAwLCBzaXpl
b2YoZGVjb21wKSk7CisgICAgICAgIGRlY29tcC5zY2FsZVggPSAxOworICAgICAgICBkZWNvbXAu
c2NhbGVZID0gMTsKKyAgICB9CisKKyAgICBpZiAoIVdlYkNvcmU6OmRlY29tcG9zZTIobV9tYXRy
aXgsIGRlY29tcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZGVjb21wb3NlNChEZWNvbXBvc2VkNFR5cGUm
IGRlY29tcCkgY29uc3QKIHsKICAgICBpZiAoaXNJZGVudGl0eSgpKSB7CiAgICAgICAgIG1lbXNl
dCgmZGVjb21wLCAwLCBzaXplb2YoZGVjb21wKSk7CkBAIC0xNDEzLDI2ICsxNTM3LDQwIEBAIGJv
b2wgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmRlY29tcG9zZShEZWNvbXBvc2VkVHlwZSYgZGVjb21w
KSBjb25zdAogICAgICAgICBkZWNvbXAuc2NhbGVZID0gMTsKICAgICAgICAgZGVjb21wLnNjYWxl
WiA9IDE7CiAgICAgfQotICAgIAotICAgIGlmICghV2ViQ29yZTo6ZGVjb21wb3NlKG1fbWF0cml4
LCBkZWNvbXApKQorCisgICAgaWYgKCFXZWJDb3JlOjpkZWNvbXBvc2U0KG1fbWF0cml4LCBkZWNv
bXApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9zZShjb25zdCBEZWNvbXBvc2VkVHlwZSYgZGVj
b21wKQordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjb21wb3NlMihjb25zdCBEZWNvbXBv
c2VkMlR5cGUmIGRlY29tcCkKIHsKICAgICBtYWtlSWRlbnRpdHkoKTsKLSAgICAKLSAgICAvLyBm
aXJzdCBhcHBseSBwZXJzcGVjdGl2ZQorCisgICAgbV9tYXRyaXhbMF1bMF0gPSBkZWNvbXAubTEx
OworICAgIG1fbWF0cml4WzBdWzFdID0gZGVjb21wLm0xMjsKKyAgICBtX21hdHJpeFsxXVswXSA9
IGRlY29tcC5tMjE7CisgICAgbV9tYXRyaXhbMV1bMV0gPSBkZWNvbXAubTIyOworCisgICAgdHJh
bnNsYXRlM2QoZGVjb21wLnRyYW5zbGF0ZVgsIGRlY29tcC50cmFuc2xhdGVZLCAwKTsKKyAgICBy
b3RhdGUoZGVjb21wLmFuZ2xlKTsKKyAgICBzY2FsZTNkKGRlY29tcC5zY2FsZVgsIGRlY29tcC5z
Y2FsZVksIDEpOworfQorCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2U0KGNv
bnN0IERlY29tcG9zZWQ0VHlwZSYgZGVjb21wKQoreworICAgIG1ha2VJZGVudGl0eSgpOworCisg
ICAgLy8gRmlyc3QgYXBwbHkgcGVyc3BlY3RpdmUuCiAgICAgbV9tYXRyaXhbMF1bM10gPSBkZWNv
bXAucGVyc3BlY3RpdmVYOwogICAgIG1fbWF0cml4WzFdWzNdID0gZGVjb21wLnBlcnNwZWN0aXZl
WTsKICAgICBtX21hdHJpeFsyXVszXSA9IGRlY29tcC5wZXJzcGVjdGl2ZVo7CiAgICAgbV9tYXRy
aXhbM11bM10gPSBkZWNvbXAucGVyc3BlY3RpdmVXOwotICAgIAotICAgIC8vIG5vdyB0cmFuc2xh
dGUKKworICAgIC8vIE5leHQsIHRyYW5zbGF0ZS4KICAgICB0cmFuc2xhdGUzZChkZWNvbXAudHJh
bnNsYXRlWCwgZGVjb21wLnRyYW5zbGF0ZVksIGRlY29tcC50cmFuc2xhdGVaKTsKLSAgICAKLSAg
ICAvLyBhcHBseSByb3RhdGlvbgorCisgICAgLy8gQXBwbHkgcm90YXRpb24uCiAgICAgZG91Ymxl
IHh4ID0gZGVjb21wLnF1YXRlcm5pb25YICogZGVjb21wLnF1YXRlcm5pb25YOwogICAgIGRvdWJs
ZSB4eSA9IGRlY29tcC5xdWF0ZXJuaW9uWCAqIGRlY29tcC5xdWF0ZXJuaW9uWTsKICAgICBkb3Vi
bGUgeHogPSBkZWNvbXAucXVhdGVybmlvblggKiBkZWNvbXAucXVhdGVybmlvblo7CkBAIC0xNDQy
LDM1ICsxNTgwLDM1IEBAIHZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9zZShjb25z
dCBEZWNvbXBvc2VkVHlwZSYgZGVjb21wKQogICAgIGRvdWJsZSB5dyA9IGRlY29tcC5xdWF0ZXJu
aW9uWSAqIGRlY29tcC5xdWF0ZXJuaW9uVzsKICAgICBkb3VibGUgenogPSBkZWNvbXAucXVhdGVy
bmlvblogKiBkZWNvbXAucXVhdGVybmlvblo7CiAgICAgZG91YmxlIHp3ID0gZGVjb21wLnF1YXRl
cm5pb25aICogZGVjb21wLnF1YXRlcm5pb25XOwotICAgIAotICAgIC8vIENvbnN0cnVjdCBhIGNv
bXBvc2l0ZSByb3RhdGlvbiBtYXRyaXggZnJvbSB0aGUgcXVhdGVybmlvbiB2YWx1ZXMKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByb3RhdGlvbk1hdHJpeCgxIC0gMiAqICh5eSArIHp6KSwgMiAq
ICh4eSAtIHp3KSwgMiAqICh4eiArIHl3KSwgMCwgCisKKyAgICAvLyBDb25zdHJ1Y3QgYSBjb21w
b3NpdGUgcm90YXRpb24gbWF0cml4IGZyb20gdGhlIHF1YXRlcm5pb24gdmFsdWVzLgorICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHJvdGF0aW9uTWF0cml4KDEgLSAyICogKHl5ICsgenopLCAyICog
KHh5IC0gencpLCAyICogKHh6ICsgeXcpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
MiAqICh4eSArIHp3KSwgMSAtIDIgKiAoeHggKyB6eiksIDIgKiAoeXogLSB4dyksIDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyICogKHh6IC0geXcpLCAyICogKHl6ICsgeHcpLCAxIC0g
MiAqICh4eCArIHl5KSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDEp
OwotICAgIAorCiAgICAgbXVsdGlwbHkocm90YXRpb25NYXRyaXgpOwotICAgIAotICAgIC8vIG5v
dyBhcHBseSBza2V3CisKKyAgICAvLyBBcHBseSBza2V3LgogICAgIGlmIChkZWNvbXAuc2tld1la
KSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRtcDsKICAgICAgICAgdG1wLnNldE0z
MihkZWNvbXAuc2tld1laKTsKICAgICAgICAgbXVsdGlwbHkodG1wKTsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAoZGVjb21wLnNrZXdYWikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
bXA7CiAgICAgICAgIHRtcC5zZXRNMzEoZGVjb21wLnNrZXdYWik7CiAgICAgICAgIG11bHRpcGx5
KHRtcCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlY29tcC5za2V3WFkpIHsKICAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdG1wOwogICAgICAgICB0bXAuc2V0TTIxKGRlY29tcC5za2V3
WFkpOwogICAgICAgICBtdWx0aXBseSh0bXApOwogICAgIH0KLSAgICAKLSAgICAvLyBmaW5hbGx5
LCBhcHBseSBzY2FsZQorCisgICAgLy8gRmluYWxseSwgYXBwbHkgc2NhbGUuCiAgICAgc2NhbGUz
ZChkZWNvbXAuc2NhbGVYLCBkZWNvbXAuc2NhbGVZLCBkZWNvbXAuc2NhbGVaKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDA1NjkwZWMyNTRiMDBlNDkwMjE5
ZjhhNGZjOTYwYTBmYzdjNWIzOGEuLjAxMDQ2NzBiMWIwMzRkYTE3ODcwMmFlYTk5MGQ5MmRlZDQ2
OTdiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTIzMiw3ICsy
MzIsOCBAQCBwdWJsaWM6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlKGRvdWJsZSk7
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRv
dWJsZSBzeSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlM2QoZG91YmxlIHN4LCBk
b3VibGUgc3ksIGRvdWJsZSBzeik7Ci0gICAgCisKKyAgICAvLyBBbmdsZSBpcyBpbiBkZWdyZWVz
LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiByb3RhdGUoZG91YmxlIGQpIHsgcmV0dXJuIHJv
dGF0ZTNkKDAsIDAsIGQpOyB9CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJvdGF0ZUZyb21W
ZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcm90
YXRlM2QoZG91YmxlIHJ4LCBkb3VibGUgcnksIGRvdWJsZSByeik7CkBAIC0yNjgsMTcgKzI2OSwy
OSBAQCBwdWJsaWM6CiAKICAgICAvLyBkZWNvbXBvc2UgdGhlIG1hdHJpeCBpbnRvIGl0cyBjb21w
b25lbnQgcGFydHMKICAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIGRvdWJsZSBzY2FsZVgs
IHNjYWxlWTsKKyAgICAgICAgZG91YmxlIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVk7CisgICAgICAg
IGRvdWJsZSBhbmdsZTsKKyAgICAgICAgZG91YmxlIG0xMSwgbTEyLCBtMjEsIG0yMjsKKyAgICB9
IERlY29tcG9zZWQyVHlwZTsKKworICAgIHR5cGVkZWYgc3RydWN0IHsKICAgICAgICAgZG91Ymxl
IHNjYWxlWCwgc2NhbGVZLCBzY2FsZVo7CiAgICAgICAgIGRvdWJsZSBza2V3WFksIHNrZXdYWiwg
c2tld1laOwogICAgICAgICBkb3VibGUgcXVhdGVybmlvblgsIHF1YXRlcm5pb25ZLCBxdWF0ZXJu
aW9uWiwgcXVhdGVybmlvblc7CiAgICAgICAgIGRvdWJsZSB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZ
LCB0cmFuc2xhdGVaOwogICAgICAgICBkb3VibGUgcGVyc3BlY3RpdmVYLCBwZXJzcGVjdGl2ZVks
IHBlcnNwZWN0aXZlWiwgcGVyc3BlY3RpdmVXOwotICAgIH0gRGVjb21wb3NlZFR5cGU7Ci0gICAg
Ci0gICAgYm9vbCBkZWNvbXBvc2UoRGVjb21wb3NlZFR5cGUmIGRlY29tcCkgY29uc3Q7Ci0gICAg
dm9pZCByZWNvbXBvc2UoY29uc3QgRGVjb21wb3NlZFR5cGUmIGRlY29tcCk7CisgICAgfSBEZWNv
bXBvc2VkNFR5cGU7CiAgICAgCisgICAgYm9vbCBkZWNvbXBvc2UyKERlY29tcG9zZWQyVHlwZSYp
IGNvbnN0OworICAgIHZvaWQgcmVjb21wb3NlMihjb25zdCBEZWNvbXBvc2VkMlR5cGUmKTsKKwor
ICAgIGJvb2wgZGVjb21wb3NlNChEZWNvbXBvc2VkNFR5cGUmKSBjb25zdDsKKyAgICB2b2lkIHJl
Y29tcG9zZTQoY29uc3QgRGVjb21wb3NlZDRUeXBlJik7CisKICAgICB2b2lkIGJsZW5kKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHZvaWQg
YmxlbmQyKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Mp
OworICAgIHZvaWQgYmxlbmQ0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MpOwogCiAgICAgYm9vbCBpc0FmZmluZSgpIGNvbnN0CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA2MGYy
NzAwYTEzOTQ3ZjI5MzE1MjI3OTI5NGVlOTM1OGNhNGQzOWU2Li5hOTU4OTg1MmE3MWM1MWQ1ZTE2
NWM1ZGVhZmFhN2FiZWE2MjY5NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjEzOSw3ICsyMTM5LDcgQEAgYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmlt
YXRpb24qIGFuaW0KICNlbmRpZgogICAgIH0KIAotICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCku
cGFnZSgpICYmICFyZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpLT5zZXR0aW5ncygpLmFjY2VsZXJh
dGVkQ29tcG9zaXRlZEFuaW1hdGlvbnNFbmFibGVkKCkpCisgICAgaWYgKHJlbmRlcmVyKCkuZnJh
bWUoKS5wYWdlKCkgJiYgcmVuZGVyZXIoKS5mcmFtZSgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5hY2Nl
bGVyYXRlZENvbXBvc2l0ZWRBbmltYXRpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBib29sIGRpZEFuaW1hdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MDkzYWU2MzliNDEw
NDkyYmI2NGFmZDZmMjgxZjhjYzgxMTZkNGEzLi42NDU4Njk5NWFmZGJkZWNjYWMwZDk0NGE0NTAw
NmI3MGFjOTRhNDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTMtMDktMjYgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisgICAgICAgIFByb3ZpZGUgMkQgTWF0cml4IGRlY29t
cG9zaXRpb24gZm9yIGFuaW1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEyODI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTA5MTg4Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHRl
c3Qgd2FzIG9ubHkgZXhlcmNpc2luZyB0aGUgZmFjdCB0aGF0IG91cgorICAgICAgICBzb2Z0d2Fy
ZSBkZWNvbXBvc2l0aW9uIGRpZCBub3QgbWF0Y2ggb3VyIGhhcmR3YXJlCisgICAgICAgIGRlY29t
cG9zaXRpb24gKGFsdGhvdWdoIHRoYXQgcmVxdWlyZWQgdmlzdWFsIGluc3BlY3Rpb24pLgorICAg
ICAgICBOb3cgdGhhdCBvdXIgMmQgZGVjb21wb3NpdGlvbiBpcyBjb3JyZWN0LCB1cGRhdGUgdGhl
CisgICAgICAgIHRlc3QgYW5kIGl0cyBleHBlY3RlZCByZXN1bHQuCisKKyAgICAgICAgKiBhbmlt
YXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGFuaW1hdGlvbnMvdHJhbnNmb3JtLW5vbi1hY2NlbGVyYXRlZC5odG1sOgorCisyMDEzLTA5LTI2
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBFeHBvc2UgYSBzZXR0
aW5nIHRvIGRpc2FibGUgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTc4CiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xNTA5MTI4ND4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvdHJhbnNmb3JtLW5vbi1hY2NlbGVyYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IGRh
ZmVjNWQ1ZGRhNzdiOWZlNmJkNTBjNWNlMzY5ZmZiOGY3MTM5ZDkuLmQzMjRjN2E1OWEyYjVhMDA5
OTQ0Mjg1YmMxYzY2MmEyNDM3MWUyODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvdHJhbnNmb3JtLW5vbi1hY2NlbGVyYXRlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tbm9uLWFjY2VsZXJhdGVkLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKIER1cmluZyB0aGUgYW5pbWF0aW9uLCB0aGUgYm94IHNob3VsZCBmbGlwIGlu
IHRoZSBob3Jpem9udGFsIGF4aXMuIEl0IHNob3VsZCBub3QgZGlzYXBwZWFyIGludG8gYSBzaW5n
bGUgcG9pbnQgKGkuZS4gdGhlIHZpc3VhbCB3aWR0aCBzaG91bGQgbm90IGNoYW5nZSkuCiAKLVBB
U1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjVz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAsMCwwLDAsMCwwCitQQVNTIC0gIndlYmtpdFRyYW5z
Zm9ybSIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAxLDAsMCwwLDAsMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25z
L3RyYW5zZm9ybS1ub24tYWNjZWxlcmF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
dHJhbnNmb3JtLW5vbi1hY2NlbGVyYXRlZC5odG1sCmluZGV4IDE3ZjdkZDhmZTc0NGY5MmRkYzA5
YzY3NWM3OWM4YjRiYzcyMThmZWUuLmQ1NjhlNWU4MTJkZTE5NDRlMTAwZDMzNzg2NzA3MDE0OTEy
OTVjNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJhbnNmb3JtLW5vbi1h
Y2NlbGVyYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJhbnNmb3JtLW5v
bi1hY2NlbGVyYXRlZC5odG1sCkBAIC0yOSw3ICsyOSw3IEBACiA8c2NyaXB0PgogY29uc3QgZXhw
ZWN0ZWRWYWx1ZXMgPSBbCiAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwg
cHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCi0gIFsiZmxpcCIsIDAuNSwgImJv
eCIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbMCwgMCwgMCwgMCwgMCwgMF0sIDAuM10sCisgIFsiZmxp
cCIsIDAuNSwgImJveCIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbMSwgMCwgMCwgMCwgMCwgMF0sIDAu
M10sCiBdOwogCiBpZiAod2luZG93LmludGVybmFscykK
</data>
<flag name="review"
          id="235076"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>