<?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>74509</bug_id>
          
          <creation_ts>2011-12-14 08:50:45 -0800</creation_ts>
          <short_desc>Interpose CodeNode between ScopeNode and ProgramNode et al</short_desc>
          <delta_ts>2013-10-31 11:36:15 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>79112</dependson>
          <blocked>74725</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andy Wingo">wingo</reporter>
          <assigned_to name="Andy Wingo">wingo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>520961</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-14 08:50:45 -0800</bug_when>
    <thetext>Currently in JS, variables are bound at functions, and in eval code, and in toplevel program code.  Harmony / ES6 introduces a new way to bind variables, in block scopes.  See bug 31813 for more.

The patch to be attached separates the concern of function binding with the other concerns of functions, eval code, and eval code (namely, holding a codeblock).  It does so by introducing a new class, CodeNode, between ScopeNode and ProgramNode.

A future patch will add BlockScopeNode whose superclass is ScopeNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520962</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-14 08:51:54 -0800</bug_when>
    <thetext>Er, &quot;separates the concern of variable binding&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520963</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-14 08:52:29 -0800</bug_when>
    <thetext>Also, &quot;eval code, and program code&quot;.  Sorry again for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520978</commentid>
    <comment_count>3</comment_count>
      <attachid>119230</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-14 09:06:57 -0800</bug_when>
    <thetext>Created attachment 119230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537194</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-17 10:46:28 -0800</bug_when>
    <thetext>I think this patch may be going in the wrong direction.  If the purpose of this patch is to allow BlockScopeNodes that subclass ScopeNode, and the effect of this patch is to move the needsActivation &amp; capture state out into a subclass, it appears that you are predicating this change on early tear-off onto a scope node? – but I think we may really want lazy tear-off using an activation.

You really need to address my comments in https://bugs.webkit.org/show_bug.cgi?id=74633 to further elucidate on your design before proceeding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537300</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-01-17 12:47:10 -0800</bug_when>
    <thetext>Thanks for the note, Gavin.  I have been thinking about that comment for a little while now, and will address it tomorrow.  Briefly now though, I&apos;m not certain that this change (and a subsequent BlockScopeNode) necessitates &quot;early tear-off&quot;.  This patch would seem to work equally well for both strategies.  But, more tomorrow.

Happy hacking :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537974</commentid>
    <comment_count>6</comment_count>
      <attachid>122957</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-01-18 10:28:20 -0800</bug_when>
    <thetext>Created attachment 122957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566720</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-02-28 08:39:28 -0800</bug_when>
    <thetext>Attaching a rebase on top of bug 79112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566729</commentid>
    <comment_count>8</comment_count>
      <attachid>129266</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-02-28 08:45:10 -0800</bug_when>
    <thetext>Created attachment 129266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573000</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-03-07 10:33:08 -0800</bug_when>
    <thetext>Performance-neutral on master: 5.997s in my parse test[0] vs 5.983s for trunk.

[0] bug 79776 comment 12

I have some pending patches for lazy tear-off that haven&apos;t quite congealed yet.  This is a step in that direction, but if it&apos;s not clear to you, dear reviewer, then it&apos;s OK to hold off on reviewing this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573013</commentid>
    <comment_count>10</comment_count>
      <attachid>130648</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-03-07 10:53:16 -0800</bug_when>
    <thetext>Created attachment 130648
fix a loose ends from rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945607</commentid>
    <comment_count>11</comment_count>
      <attachid>130648</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 11:36:15 -0700</bug_when>
    <thetext>Comment on attachment 130648
fix a loose ends from rebasing

This probably needs a massive rebase.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119230</attachid>
            <date>2011-12-14 09:06:57 -0800</date>
            <delta_ts>2012-01-18 10:28:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74509-20111214180655.patch</filename>
            <type>text/plain</type>
            <size>20862</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OTVlODdmY2VkYzg3YTk3MmFmN2Q4NWIxODI5MzFkOWNmMjc4NDZjLi44MDVjMmZhYzlmNGI0MTMy
N2Q2N2FlNWFmMWM0Y2M0YzQ1YjBmNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2MiBAQAogMjAxMS0xMi0xNCAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgSW50ZXJwb3NlIENvZGVOb2RlIGJldHdlZW4gU2NvcGVOb2RlIGFuZCBQcm9ncmFt
Tm9kZSBldCBhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ1MDkKKworICAgICAgICBIYXJtb255IC8gRVM2IGludHJvZHVjZXMgYSBuZXcgd2F5IHRv
IGJpbmQgdmFyaWFibGVzLCBpbiBibG9jaworICAgICAgICBzY29wZXMuICBUaGUgcGF0Y2ggdG8g
YmUgYXR0YWNoZWQgc2VwYXJhdGVzIHRoZSBjb25jZXJuIG9mCisgICAgICAgIHZhcmlhYmxlIGJp
bmRpbmcgd2l0aCB0aGUgb3RoZXIgY29uY2VybnMgb2YgZnVuY3Rpb25zLCBwcm9ncmFtCisgICAg
ICAgIGNvZGUsIGFuZCBldmFsIGNvZGUgKG5hbWVseSwgaG9sZGluZyBhIGNvZGVibG9jaykuICBJ
dCBkb2VzIHNvIGJ5CisgICAgICAgIGludHJvZHVjaW5nIGEgbmV3IGNsYXNzLCBDb2RlTm9kZSwg
YmV0d2VlbiBTY29wZU5vZGUgYW5kCisgICAgICAgIFByb2dyYW1Ob2RlLgorCisgICAgICAgIEEg
ZnV0dXJlIHBhdGNoIHdpbGwgYWRkIEJsb2NrU2NvcGVOb2RlIHdob3NlIHN1cGVyY2xhc3MgaXMK
KyAgICAgICAgU2NvcGVOb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmg6IERlY2xhcmUgQ29kZU5vZGUs
IG5vdCBTY29wZU5vZGUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6IG1fY29kZU5vZGUsIG5vdCBtX3Njb3BlTm9kZS4KKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IpOiBDaGFuZ2UgdXNlcyBhbmQKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgbV9jb2Rl
Tm9kZS4KKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlND
OjpTY29wZU5vZGU6OlNjb3BlTm9kZSk6IERlY2xhcmUgaW5saW5lIGNvbnN0cnVjdG9ycyBmb3IK
KyAgICAgICAgU2NvcGVOb2RlLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OlNjb3BlTm9kZURhdGE6OlNjb3BlTm9kZURhdGEpOiBUaGlzIGhlbHBlciBzdHJ1Y3Qg
bm8gbG9uZ2VyCisgICAgICAgIHJlY29yZHMgdGhlIG51bWJlciBvZiBjb25zdGFudHMgaW4gdGhl
IHNjb3BlLCBhcyB0aGF0IGlzIGEgY29uY2VybgorICAgICAgICBvZiBjb2RlYmxvY2tzLiAgSXQg
YWxzbyBkb2Vzbid0IHByZXBhcmUgYSBuZXcgYXJlbmEsIGFzIHRoYXQgaXMgYQorICAgICAgICBj
b25jZXJuIG9mIENvZGVOb2RlLgorICAgICAgICAoSlNDOjpDb2RlTm9kZTo6Q29kZU5vZGUpOiBC
YXNpY2FsbHksIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGlzIGZyb20KKyAgICAgICAgU2NvcGVOb2Rl
LCBhbmQgYWxzbyByZWNvcmQgdGhlIG51bWJlciBvZiBjb25zdGFudHMgYW5kIGRvIHRoZQorICAg
ICAgICBhcmVuYSBzd2FwIGhlcmUuCisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpFdmFsTm9kZTo6RXZhbE5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6IEFkYXB0IHRvIGRlc2NlbmQgZnJv
bSBDb2RlTm9kZSwKKyAgICAgICAgYW5kIGFkYXB0IHRoZSBhc3NlcnRpb25zIHRvIGxvb2sgZm9y
IHRoZSBhcmVuYSBpbiB0aGUgQ29kZU5vZGUuCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgIChKU0M6OlNjb3BlTm9kZTo6aGFzQ2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAo
SlNDOjpTY29wZU5vZGU6OmNhcHR1cmVkVmFyaWFibGVDb3VudCk6CisgICAgICAgIChKU0M6OlNj
b3BlTm9kZTo6Y2FwdHVyZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnZhclN0YWNrKToK
KyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpmdW5jdGlvblN0YWNrKToKKyAgICAgICAgKEpTQzo6
U2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpDb2RlTm9kZTo6bmVl
ZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpDb2RlTm9k
ZTo6bmVlZHNBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZU5vZGU6Om5lZWRlZENvbnN0
YW50cyk6ICBEbyB0aGUgbWFudWFsIHJlZmFjdG9yaW5ncyB0bworICAgICAgICBzcGxpdCB3aGF0
IHdhcyB0aGUgU2NvcGVOb2RlIGZ1bmN0aW9uYWxpdHkgaW50byB0d28gY2xhc3NlcywKKyAgICAg
ICAgU2NvcGVOb2RlIGFuZCBDb2RlTm9kZS4gIENvZGVOb2RlIGlzIHRoZSBvbmUgdGhhdCBrZWVw
cyB0aGUKKyAgICAgICAgcGFyc2VyLWFyZW5hIHJlZmNvdW50aW5nLgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuaCAoSlNDOjpQYXJzZXI6OmlzRnVuY3Rpb25Cb2R5Tm9kZSk6IFRha2UgYQorICAg
ICAgICBDb2RlTm9kZSwgbm90IGEgU2NvcGVOb2RlLgorCisyMDExLTEyLTE0ICBBbmR5IFdpbmdv
ICA8d2luZ29AaWdhbGlhLmNvbT4KKwogICAgICAgICBNaW5vciByZWZhY3RvciB0byBQYXJzZXI6
OnBhcnNlVHJ5U3RhdGVtZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDUwNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmgKaW5kZXggYjY5ZWYwMjZlYTk3ZTA2Y2NhMzcxYzI1Mzk5NmE2MWIyODc4N2Mz
MC4uNjY4NTRlNmQ1NDEyMTU0MWIwNTlkOGFhZmQ2MzU4NzdhZGIyNzU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaApAQCAtMTgxLDcgKzE4MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBFeGVj
U3RhdGU7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7Ci0gICAgY2xhc3MgU2NvcGVOb2RlOworICAg
IGNsYXNzIENvZGVOb2RlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAogICAgIHN0cnVjdCBT
Y3JpcHRTYW1wbGVSZWNvcmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0ZDBiZTQzNGI4ZTBiMmMy
ZjU0OTZmNDU5YTJmYTAwMDc2MmEyMGNkLi43ZDRlN2RiNTkxYTcyY2NhYTc2NjMxMDRiNjRlNWNk
NGUzZDkwMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIEpTT2JqZWN0
KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIAogICAgIG1fY29kZUJsb2NrLT5z
ZXRUaGlzUmVnaXN0ZXIobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7CiAKLSAgICBtX3Njb3BlTm9k
ZS0+ZW1pdEJ5dGVjb2RlKCp0aGlzKTsKKyAgICBtX2NvZGVOb2RlLT5lbWl0Qnl0ZWNvZGUoKnRo
aXMpOwogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9uQ291bnQobV9jb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBTY29w
ZUNoYWluTm9kZSogcwogICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFp
bi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hT
b3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3Bl
Q2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJv
bFRhYmxlKHN5bWJvbFRhYmxlKQotICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCisgICAg
LCBtX2NvZGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQog
ICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAg
ICAsIG1fZmluYWxseURlcHRoKDApCkBAIC0yNTgsNyArMjU4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgU2Nv
cGVDaGFpbk4KICAgICAsIG1fc2hvdWxkRW1pdFJpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNl
SW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpKQogICAgICwgbV9zY29wZUNoYWlu
KCpzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBzY29wZUNoYWluKQogICAgICwgbV9zeW1ib2xUYWJs
ZShzeW1ib2xUYWJsZSkKLSAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uQm9keSkKKyAgICAsIG1f
Y29kZU5vZGUoZnVuY3Rpb25Cb2R5KQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAg
ICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIoMCkKICAgICAsIG1fZmluYWxseURlcHRoKDApCkBAIC00
MTksNyArNDE5LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YWxO
b2RlKiBldmFsTm9kZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2gKICAgICAsIG1fc2hvdWxkRW1p
dFJpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmpl
Y3QuZ2V0KCkpKQogICAgICwgbV9zY29wZUNoYWluKCpzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBz
Y29wZUNoYWluKQogICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKLSAgICAsIG1fc2Nv
cGVOb2RlKGV2YWxOb2RlKQorICAgICwgbV9jb2RlTm9kZShldmFsTm9kZSkKICAgICAsIG1fY29k
ZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0Fy
Z3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2ZpbmFsbHlEZXB0aCgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDdjZDI1NGE2ZDk5NzE2ODVlM2I0OWMxZTFhZDMxZmE3ZjRkZDU0YmMuLmJlY2ZmM2IwZjAwY2Vh
NGZhN2E5NzE1NGI4NDljMjhiNDA4YzIzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUyNiw3ICs1MjYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFNjb3BlQ2hhaW5Ob2RlPiBtX3Nj
b3BlQ2hhaW47CiAgICAgICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOwogCi0gICAgICAg
IFNjb3BlTm9kZSogbV9zY29wZU5vZGU7CisgICAgICAgIENvZGVOb2RlKiBtX2NvZGVOb2RlOwog
ICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogCiAgICAgICAgIC8vIFNvbWUgb2YgdGhl
c2Ugb2JqZWN0cyBrZWVwIHBvaW50ZXJzIHRvIG9uZSBhbm90aGVyLiBUaGV5IGFyZSBhcnJhbmdl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApp
bmRleCA2YzA2OTQ5MGQxOGI4MWYyYzNmYjNkYWJkMTEzMDNkYmExZWRmNjI0Li4wYjAyOWIyZmZh
ODk3MmVmNTljMjRhODkzMDY1NTVmM2UwYjE0MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtODY0LDYgKzg2NCwxNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3N0YXRlbWVudHMoc3RhdGVtZW50cykKICAgICB7CiAg
ICAgfQorICAgIAorICAgIGlubGluZSBTY29wZU5vZGU6OlNjb3BlTm9kZShpbnQgbGluZU51bWJl
cikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgeworICAgIH0KKwor
ICAgIGlubGluZSBTY29wZU5vZGU6OlNjb3BlTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMpCisgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsaW5lTnVtYmVyKQorICAgICAgICAsIG1fZGF0YShhZG9wdFB0cihuZXcgU2NvcGVO
b2RlRGF0YShjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMp
KSkKKyAgICB7CisgICAgfQogCiAgICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQogICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKaW5kZXggOGFkNDc0ZTU0MTUzODllN2UwNTgxMWVlZGFmZjA3YzY4NjU5ODcxMC4uZjky
MGViOTBlYzliMmIyZTc2OWMyZTMwYWNmYTkwOGI4MDE4ZDBmYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTc1LDExICs3NSw5IEBAIFN0YXRlbWVudE5vZGUqIFNv
dXJjZUVsZW1lbnRzOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLVNjb3BlTm9kZURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVNjb3BlTm9kZURhdGE6OlNjb3BlTm9kZURhdGEoUGFyc2VyQXJlbmEmIGFyZW5hLCBTb3Vy
Y2VFbGVtZW50cyogc3RhdGVtZW50cywgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBpbnQgbnVtQ29u
c3RhbnRzKQotICAgIDogbV9udW1Db25zdGFudHMobnVtQ29uc3RhbnRzKQotICAgICwgbV9zdGF0
ZW1lbnRzKHN0YXRlbWVudHMpCitTY29wZU5vZGVEYXRhOjpTY29wZU5vZGVEYXRhKFNvdXJjZUVs
ZW1lbnRzKiBzdGF0ZW1lbnRzLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMpCisgICAgOiBtX3N0YXRl
bWVudHMoc3RhdGVtZW50cykKIHsKLSAgICBtX2FyZW5hLnN3YXAoYXJlbmEpOwogICAgIGlmICh2
YXJTdGFjaykKICAgICAgICAgbV92YXJTdGFjay5zd2FwKCp2YXJTdGFjayk7CiAgICAgaWYgKGZ1
bmNTdGFjaykKQEAgLTg3LDMzICs4NSwzMSBAQCBTY29wZU5vZGVEYXRhOjpTY29wZU5vZGVEYXRh
KFBhcnNlckFyZW5hJiBhcmVuYSwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMsIFZhcgogICAg
IG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcmlhYmxlcyk7CiB9CiAKLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb2RlTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRl
eHQpCi0gICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCitDb2RlTm9kZTo6Q29kZU5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENv
bnRleHQpCisgICAgOiBTY29wZU5vZGUobGluZU51bWJlcikKICAgICAsIFBhcnNlckFyZW5hUmVm
Q291bnRlZChnbG9iYWxEYXRhKQogICAgICwgbV9mZWF0dXJlcyhpblN0cmljdENvbnRleHQgPyBT
dHJpY3RNb2RlRmVhdHVyZSA6IE5vRmVhdHVyZXMpCisgICAgLCBtX251bUNvbnN0YW50cygwKQog
eworICAgIG1fYXJlbmEuc3dhcCgqZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEpOwogfQogCi1TY29w
ZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVy
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFyaWFibGVzLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCi0gICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCitDb2RlTm9kZTo6Q29kZU5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywg
RnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxl
cywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVO
b2RlKGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcykKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxEYXRhKQotICAgICwg
bV9kYXRhKGFkb3B0UHRyKG5ldyBTY29wZU5vZGVEYXRhKCpnbG9iYWxEYXRhLT5wYXJzZXJBcmVu
YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBudW1D
b25zdGFudHMpKSkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCisgICAgLCBtX251bUNvbnN0
YW50cyhudW1Db25zdGFudHMpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiB7Ci19Ci0KLVN0YXRl
bWVudE5vZGUqIFNjb3BlTm9kZTo6c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9kYXRhLT5tX3N0YXRlbWVudHMgPyBtX2RhdGEtPm1fc3RhdGVtZW50cy0+c2luZ2xlU3Rh
dGVtZW50KCkgOiAwOworICAgIG1fYXJlbmEuc3dhcCgqZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBT
Y29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3Rh
Y2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMp
CisgICAgOiBDb2RlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKIHsKIH0KIApAQCAtMTIxLDkgKzExNyw5IEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5v
ZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGlu
ZU51CiB7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKLSAgICBB
U1NFUlQobm9kZS0+ZGF0YSgpLT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKLSAgICBub2RlLT5k
YXRhKCktPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwotICAgIEFTU0VSVCghbm9kZS0+ZGF0YSgpLT5t
X2FyZW5hLmNvbnRhaW5zKG5vZGUuZ2V0KCkpKTsKKyAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5s
YXN0KCkgPT0gbm9kZSk7CisgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CisgICAgQVNT
RVJUKCFub2RlLT5tX2FyZW5hLmNvbnRhaW5zKG5vZGUuZ2V0KCkpKTsKIAogICAgIHJldHVybiBu
b2RlLnJlbGVhc2UoKTsKIH0KQEAgLTEzMSw3ICsxMjcsNyBAQCBQYXNzUmVmUHRyPFByb2dyYW1O
b2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3Rh
Y2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQorICAgIDogQ29k
ZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7
CiB9CiAKQEAgLTEzOSw5ICsxMzUsOSBAQCBQYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsCiB7CiAgICAg
UmVmUHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1i
ZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291
cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAotICAgIEFTU0VSVChub2RlLT5kYXRhKCkt
Pm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwotICAgIG5vZGUtPmRhdGEoKS0+bV9hcmVuYS5yZW1v
dmVMYXN0KCk7Ci0gICAgQVNTRVJUKCFub2RlLT5kYXRhKCktPm1fYXJlbmEuY29udGFpbnMobm9k
ZS5nZXQoKSkpOworICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKKyAg
ICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fYXJlbmEu
Y29udGFpbnMobm9kZS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQpA
QCAtMTU1LDEyICsxNTEsMTIgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRl
cnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCiB9CiAKIGlubGluZSBGdW5jdGlvbkJv
ZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERh
dGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IENvZGVOb2RlKGdsb2JhbERh
dGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIAogaW5saW5lIEZ1bmN0aW9u
Qm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQg
bGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVy
LCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJp
YWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCisgICAgOiBDb2RlTm9kZShnbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywg
Y2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKQEAgLTE4
Niw5ICsxODIsOSBAQCBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5v
ZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsCiB7CiAgICAgUmVmUHRyPEZ1bmN0
aW9uQm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCi0gICAgQVNTRVJUKG5vZGUt
PmRhdGEoKS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7Ci0gICAgbm9kZS0+ZGF0YSgpLT5tX2Fy
ZW5hLnJlbW92ZUxhc3QoKTsKLSAgICBBU1NFUlQoIW5vZGUtPmRhdGEoKS0+bV9hcmVuYS5jb250
YWlucyhub2RlLmdldCgpKSk7CisgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5v
ZGUpOworICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOworICAgIEFTU0VSVCghbm9kZS0+
bV9hcmVuYS5jb250YWlucyhub2RlLmdldCgpKSk7CiAKICAgICByZXR1cm4gbm9kZS5yZWxlYXNl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMjNmMmNkZTljOTU0
ZWU2NjUxNjY3NjdhMDlkOWQxOTQ5Mzc4ZmM1Yi4uMjFiNTgyMzZmZWFhZGQxNDJjYzA3ZmUxZmUx
MjFlNWEzZDE3Nzc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNDUs
NyArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGU7CiAgICAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKLSAg
ICBjbGFzcyBTY29wZU5vZGU7CisgICAgY2xhc3MgQ29kZU5vZGU7CiAKICAgICB0eXBlZGVmIHVu
c2lnbmVkIENvZGVGZWF0dXJlczsKIApAQCAtMTM3OSwyOSArMTM3OSw0NyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3Rh
Y2s7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVu
Y3Rpb25TdGFjazsKIAotICAgICAgICBTY29wZU5vZGVEYXRhKFBhcnNlckFyZW5hJiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgaW50
IG51bUNvbnN0YW50cyk7CisgICAgICAgIFNjb3BlTm9kZURhdGEoU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jik7CiAKLSAgICAgICAgUGFy
c2VyQXJlbmEgbV9hcmVuYTsKICAgICAgICAgVmFyU3RhY2sgbV92YXJTdGFjazsKICAgICAgICAg
RnVuY3Rpb25TdGFjayBtX2Z1bmN0aW9uU3RhY2s7Ci0gICAgICAgIGludCBtX251bUNvbnN0YW50
czsKICAgICAgICAgU291cmNlRWxlbWVudHMqIG1fc3RhdGVtZW50czsKICAgICAgICAgSWRlbnRp
ZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOwogICAgIH07CiAKLSAgICBjbGFzcyBTY29wZU5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFBhcnNlckFyZW5hUmVmQ291bnRlZCB7
CisgICAgY2xhc3MgU2NvcGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7
CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rp
b25TdGFjazsKIAotICAgICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGlu
U3RyaWN0Q29udGV4dCk7Ci0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNv
bnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwotCi0g
ICAgICAgIHVzaW5nIFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3OworICAgICAg
ICBTY29wZU5vZGUoaW50KTsKKyAgICAgICAgU2NvcGVOb2RlKGludCwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jik7CiAKICAgICAgICAg
U2NvcGVOb2RlRGF0YSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogICAg
ICAgICB2b2lkIGRlc3Ryb3lEYXRhKCkgeyBtX2RhdGEuY2xlYXIoKTsgfQogCisgICAgICAgIGJv
b2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fZGF0YS0+bV9jYXB0
dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+bV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7
IH0KKyAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1
cm4gbV9kYXRhLT5tX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7IH0K
KworICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IEFTU0VSVChtX2RhdGEpOyByZXR1cm4g
bV9kYXRhLT5tX3ZhclN0YWNrOyB9CisgICAgICAgIEZ1bmN0aW9uU3RhY2smIGZ1bmN0aW9uU3Rh
Y2soKSB7IEFTU0VSVChtX2RhdGEpOyByZXR1cm4gbV9kYXRhLT5tX2Z1bmN0aW9uU3RhY2s7IH0K
KworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVy
biBkYXRhKCktPm1fc3RhdGVtZW50cyA/IGRhdGEoKS0+bV9zdGF0ZW1lbnRzLT5zaW5nbGVTdGF0
ZW1lbnQoKSA6IDA7IH0KKworICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBPd25QdHI8U2NvcGVOb2RlRGF0YT4gbV9kYXRhOworICAgIH07CisKKyAgICBj
bGFzcyBDb2RlTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYVJlZkNv
dW50ZWQgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ29kZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50
LCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIENvZGVOb2RlKEpTR2xvYmFsRGF0YSos
IGludCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5j
dGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CisKKyAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFSZWZDb3VudGVkOjpvcGVyYXRvciBuZXc7
CisKICAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2U7IH0KICAgICAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNl
SUQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7IH0KQEAgLTE0
MTQsMzcgKzE0MzIsMjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAg
ICAgICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cygpIHsgbV9mZWF0dXJlcyB8PSBBcmd1bWVudHNG
ZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1
cmVzICYgVGhpc0ZlYXR1cmU7IH0KLSAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb25Gb3JNb3Jl
VGhhblZhcmlhYmxlcygpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YSk7IHJldHVybiBtX2ZlYXR1cmVz
ICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpOyB9Ci0gICAgICAg
IGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhKTsgcmV0dXJuICho
YXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdp
dGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KLSAgICAgICAgYm9vbCBoYXNDYXB0dXJlZFZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9kYXRhLT5tX2NhcHR1cmVkVmFyaWFibGVzLnNp
emUoKTsgfQotICAgICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLT5tX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQotICAgICAgICBib29s
IGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7IHJldHVybiBtX2RhdGEtPm1fY2Fw
dHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1wbCgpKTsgfQotCi0gICAgICAgIFZhclN0
YWNrJiB2YXJTdGFjaygpIHsgQVNTRVJUKG1fZGF0YSk7IHJldHVybiBtX2RhdGEtPm1fdmFyU3Rh
Y2s7IH0KLSAgICAgICAgRnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjaygpIHsgQVNTRVJUKG1f
ZGF0YSk7IHJldHVybiBtX2RhdGEtPm1fZnVuY3Rpb25TdGFjazsgfQorICAgICAgICBib29sIG5l
ZWRzQWN0aXZhdGlvbkZvck1vcmVUaGFuVmFyaWFibGVzKCkgY29uc3QgeyBBU1NFUlQoZGF0YSgp
KTsgcmV0dXJuIG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNo
RmVhdHVyZSk7IH0KKyAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IEFTU0VS
VChkYXRhKCkpOyByZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVz
ICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogCiAgICAg
ICAgIGludCBuZWVkZWRDb25zdGFudHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
bV9kYXRhKTsKICAgICAgICAgICAgIC8vIFdlIG1heSBuZWVkIDIgbW9yZSBjb25zdGFudHMgdGhh
biB0aGUgY291bnQgZ2l2ZW4gYnkgdGhlIHBhcnNlciwKICAgICAgICAgICAgIC8vIGJlY2F1c2Ug
b2YgdGhlIHZhcmlvdXMgdXNlcyBvZiBqc1VuZGVmaW5lZCgpIGFuZCBqc051bGwoKS4KLSAgICAg
ICAgICAgIHJldHVybiBtX2RhdGEtPm1fbnVtQ29uc3RhbnRzICsgMjsKKyAgICAgICAgICAgIHJl
dHVybiBtX251bUNvbnN0YW50cyArIDI7CiAgICAgICAgIH0KIAotICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKLQotICAgICAgICB2b2lkIGVtaXRTdGF0ZW1l
bnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7
Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQorICAgICAgICBQYXJzZXJBcmVuYSBt
X2FyZW5hOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRyPFNjb3BlTm9kZURhdGE+IG1f
ZGF0YTsKICAgICAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CisgICAgICAgIHVuc2lnbmVk
IG1fbnVtQ29uc3RhbnRzOwogICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgIH07CiAK
LSAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgeworICAgIGNsYXNzIFBy
b2dyYW1Ob2RlIDogcHVibGljIENvZGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVt
ZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBT
b3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKQEAgLTE0NTcsNyAr
MTQ2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsK
IAotICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CisgICAgY2xhc3MgRXZh
bE5vZGUgOiBwdWJsaWMgQ29kZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RXZhbE5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwg
VmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwpAQCAtMTQ3OSw3ICsxNDg3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJO
b2RlKik7CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKKyAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIENvZGVOb2RlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0g
dHJ1ZTsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERh
dGEqLCBpbnQsIGJvb2wgaXNTdHJpY3RNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IGVmMTc2ZjAxNGM1ZmRjYzg3NGM0MzA1ZTdiZTA4MDU0ZjM0ZDgyMjguLmEy
Yzk3MTlkMGQ1ZGFiNzcyYTVhZjFmZGYxNTFlNWZlZjU1Nzc4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCwgaW50LCBJZGVudGlmaWVyU2V0Jik7CiAKICAgICAvLyBV
c2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KLSAgICBib29sIGlzRnVu
Y3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNG
dW5jdGlvbkJvZHlOb2RlKENvZGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
RnVuY3Rpb25Cb2R5Tm9kZShGdW5jdGlvbkJvZHlOb2RlKikgeyByZXR1cm4gdHJ1ZTsgfQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122957</attachid>
            <date>2012-01-18 10:28:20 -0800</date>
            <delta_ts>2012-02-28 08:45:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74509-20120118192818.patch</filename>
            <type>text/plain</type>
            <size>20813</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NGU2NmU3YWJjNDVjNWVlZjQwMDIzNWQxMGRlNzRjYjg5YmMyNmM0Li4wYzFiNWVkNjU2YzIzYTUy
YjBiNThmNDMyOWNiNzNhZGExZGVhZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxMS0xMi0xNCAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgSW50ZXJwb3NlIENvZGVOb2RlIGJldHdlZW4gU2NvcGVOb2RlIGFuZCBQcm9ncmFt
Tm9kZSBldCBhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ1MDkKKworICAgICAgICBIYXJtb255IC8gRVM2IGludHJvZHVjZXMgYSBuZXcgd2F5IHRv
IGJpbmQgdmFyaWFibGVzLCBpbiBibG9jaworICAgICAgICBzY29wZXMuICBUaGUgcGF0Y2ggdG8g
YmUgYXR0YWNoZWQgc2VwYXJhdGVzIHRoZSBjb25jZXJuIG9mCisgICAgICAgIHZhcmlhYmxlIGJp
bmRpbmcgd2l0aCB0aGUgb3RoZXIgY29uY2VybnMgb2YgZnVuY3Rpb25zLCBwcm9ncmFtCisgICAg
ICAgIGNvZGUsIGFuZCBldmFsIGNvZGUgKG5hbWVseSwgaG9sZGluZyBhIGNvZGVibG9jaykuICBJ
dCBkb2VzIHNvIGJ5CisgICAgICAgIGludHJvZHVjaW5nIGEgbmV3IGNsYXNzLCBDb2RlTm9kZSwg
YmV0d2VlbiBTY29wZU5vZGUgYW5kCisgICAgICAgIFByb2dyYW1Ob2RlLgorCisgICAgICAgIEEg
ZnV0dXJlIHBhdGNoIHdpbGwgYWRkIEJsb2NrU2NvcGVOb2RlIHdob3NlIHN1cGVyY2xhc3MgaXMK
KyAgICAgICAgU2NvcGVOb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmg6IERlY2xhcmUgQ29kZU5vZGUs
IG5vdCBTY29wZU5vZGUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6IG1fY29kZU5vZGUsIG5vdCBtX3Njb3BlTm9kZS4KKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IpOiBDaGFuZ2UgdXNlcyBhbmQKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgbV9jb2Rl
Tm9kZS4KKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlND
OjpTY29wZU5vZGU6OlNjb3BlTm9kZSk6IERlY2xhcmUgaW5saW5lIGNvbnN0cnVjdG9ycyBmb3IK
KyAgICAgICAgU2NvcGVOb2RlLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OlNjb3BlTm9kZURhdGE6OlNjb3BlTm9kZURhdGEpOiBUaGlzIGhlbHBlciBzdHJ1Y3Qg
bm8gbG9uZ2VyCisgICAgICAgIHJlY29yZHMgdGhlIG51bWJlciBvZiBjb25zdGFudHMgaW4gdGhl
IHNjb3BlLCBhcyB0aGF0IGlzIGEgY29uY2VybgorICAgICAgICBvZiBjb2RlYmxvY2tzLiAgSXQg
YWxzbyBkb2Vzbid0IHByZXBhcmUgYSBuZXcgYXJlbmEsIGFzIHRoYXQgaXMgYQorICAgICAgICBj
b25jZXJuIG9mIENvZGVOb2RlLgorICAgICAgICAoSlNDOjpDb2RlTm9kZTo6Q29kZU5vZGUpOiBC
YXNpY2FsbHksIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGlzIGZyb20KKyAgICAgICAgU2NvcGVOb2Rl
LCBhbmQgYWxzbyByZWNvcmQgdGhlIG51bWJlciBvZiBjb25zdGFudHMgYW5kIGRvIHRoZQorICAg
ICAgICBhcmVuYSBzd2FwIGhlcmUuCisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpFdmFsTm9kZTo6RXZhbE5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6IEFkYXB0IHRvIGRlc2NlbmQgZnJv
bSBDb2RlTm9kZSwKKyAgICAgICAgYW5kIGFkYXB0IHRoZSBhc3NlcnRpb25zIHRvIGxvb2sgZm9y
IHRoZSBhcmVuYSBpbiB0aGUgQ29kZU5vZGUuCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgIChKU0M6OlNjb3BlTm9kZTo6aGFzQ2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAo
SlNDOjpTY29wZU5vZGU6OmNhcHR1cmVkVmFyaWFibGVDb3VudCk6CisgICAgICAgIChKU0M6OlNj
b3BlTm9kZTo6Y2FwdHVyZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnZhclN0YWNrKToK
KyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpmdW5jdGlvblN0YWNrKToKKyAgICAgICAgKEpTQzo6
U2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpDb2RlTm9kZTo6bmVl
ZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpDb2RlTm9k
ZTo6bmVlZHNBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZU5vZGU6Om5lZWRlZENvbnN0
YW50cyk6ICBEbyB0aGUgbWFudWFsIHJlZmFjdG9yaW5ncyB0bworICAgICAgICBzcGxpdCB3aGF0
IHdhcyB0aGUgU2NvcGVOb2RlIGZ1bmN0aW9uYWxpdHkgaW50byB0d28gY2xhc3NlcywKKyAgICAg
ICAgU2NvcGVOb2RlIGFuZCBDb2RlTm9kZS4gIENvZGVOb2RlIGlzIHRoZSBvbmUgdGhhdCBrZWVw
cyB0aGUKKyAgICAgICAgcGFyc2VyLWFyZW5hIHJlZmNvdW50aW5nLgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuaCAoSlNDOjpQYXJzZXI6OmlzRnVuY3Rpb25Cb2R5Tm9kZSk6IFRha2UgYQorICAg
ICAgICBDb2RlTm9kZSwgbm90IGEgU2NvcGVOb2RlLgorCiAyMDEyLTAxLTEzICBBbmR5IFdpbmdv
ICA8d2luZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBpZGVudGlmaWVyIHJlc29s
dXRpb24gaW4gQnl0ZWNvZGVHZW5lcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TYW1wbGluZ1Rvb2wuaAppbmRleCAzMmE0NGFkNjk3ODY0MjQ0OGM0YmVkNTU0YWNlOGI2
ZWFkYTRlZTkzLi40ZmIxOTI3MzQxZDcxMjlhM2E0OTQ3YWNmZTg5N2NmMDliMDVhNWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCkBAIC0xODEs
NyArMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNs
YXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKLSAgICBjbGFzcyBTY29wZU5v
ZGU7CisgICAgY2xhc3MgQ29kZU5vZGU7CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogCiAgICAg
c3RydWN0IFNjcmlwdFNhbXBsZVJlY29yZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGMyMjc5N2M2
ZTFmNzEwOTMzMDViYzM2NzZiMjAyZjc1MDNjMDdjZTcuLmI4YWUwNDJiODVjOTNiNDNiN2UyOWQ2
ODllZjg0Y2QwOTg1YjdmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAg
SlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgCiAgICAgbV9jb2Rl
QmxvY2stPnNldFRoaXNSZWdpc3RlcihtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsKIAotICAgIG1f
c2NvcGVOb2RlLT5lbWl0Qnl0ZWNvZGUoKnRoaXMpOworICAgIG1fY29kZU5vZGUtPmVtaXRCeXRl
Y29kZSgqdGhpcyk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSogcHJvZ3JhbU5v
ZGUsIFNjb3BlQ2hhaW5Ob2RlKiBzCiAgICAgLCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhz
Y29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBv
cnRzUmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKSkKICAgICAs
IG1fc2NvcGVDaGFpbigqc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSwgc2NvcGVDaGFpbikKICAgICAs
IG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCi0gICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9k
ZSkKKyAgICAsIG1fY29kZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayhjb2Rl
QmxvY2spCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKQogICAgICwgbV9maW5hbGx5RGVwdGgoMCkKQEAgLTI3Miw3ICsyNzIsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25C
b2R5LCBTY29wZUNoYWluTgogICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Nj
b3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5
bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQotICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Cb2R5KQor
ICAgICwgbV9jb2RlTm9kZShmdW5jdGlvbkJvZHkpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxv
Y2spCiAgICAgLCBtX2FjdGl2YXRpb25SZWdpc3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgo
MCkKQEAgLTQzMyw3ICs0MzMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoRXZhbE5vZGUqIGV2YWxOb2RlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaAogICAgICwgbV9z
aG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmds
b2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2Jh
bERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQotICAg
ICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCisgICAgLCBtX2NvZGVOb2RlKGV2YWxOb2RlKQogICAg
ICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1l
Ojp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fZmluYWxseURlcHRoKDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggNjU3Y2ZkYjVkODEyODMxZDFlNWI3MzA4YzBlMmU0MGE1N2EyNzExNy4uNmRhZjI3
NzE1OTU4YTlmMzg1OWYwZjFkZGFjZDFmYzg1OTdlNmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjAw
LDcgKzYwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJvbmc8U2NvcGVDaGFpbk5v
ZGU+IG1fc2NvcGVDaGFpbjsKICAgICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAK
LSAgICAgICAgU2NvcGVOb2RlKiBtX3Njb3BlTm9kZTsKKyAgICAgICAgQ29kZU5vZGUqIG1fY29k
ZU5vZGU7CiAgICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAKICAgICAgICAgLy8gU29t
ZSBvZiB0aGVzZSBvYmplY3RzIGtlZXAgcG9pbnRlcnMgdG8gb25lIGFub3RoZXIuIFRoZXkgYXJl
IGFycmFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCmluZGV4IDZjMDY5NDkwZDE4YjgxZjJjM2ZiM2RhYmQxMTMwM2RiYTFlZGY2MjQuLjBi
MDI5YjJmZmE4OTcyZWY1OWMyNGE4OTMwNjU1NWYzZTBiMTQxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC04NjQsNiArODY0LDE3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAsIG1fc3RhdGVtZW50cyhzdGF0ZW1lbnRzKQog
ICAgIHsKICAgICB9CisgICAgCisgICAgaW5saW5lIFNjb3BlTm9kZTo6U2NvcGVOb2RlKGludCBs
aW5lTnVtYmVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICB7Cisg
ICAgfQorCisgICAgaW5saW5lIFNjb3BlTm9kZTo6U2NvcGVOb2RlKGludCBsaW5lTnVtYmVyLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcykKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgICAgICwgbV9kYXRhKGFkb3B0UHRyKG5l
dyBTY29wZU5vZGVEYXRhKGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcykpKQorICAgIHsKKyAgICB9CiAKICAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCiAg
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcAppbmRleCA4YWQ0NzRlNTQxNTM4OWU3ZTA1ODExZWVkYWZmMDdjNjg2NTk4
NzEwLi5mOTIwZWI5MGVjOWIyYjJlNzY5YzJlMzBhY2ZhOTA4YjgwMThkMGZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtNzUsMTEgKzc1LDkgQEAgU3RhdGVtZW50
Tm9kZSogU291cmNlRWxlbWVudHM6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2NvcGVOb2RlRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotU2NvcGVOb2RlRGF0YTo6U2NvcGVOb2RlRGF0YShQYXJzZXJBcmVuYSYgYXJl
bmEsIFNvdXJjZUVsZW1lbnRzKiBzdGF0ZW1lbnRzLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGlu
dCBudW1Db25zdGFudHMpCi0gICAgOiBtX251bUNvbnN0YW50cyhudW1Db25zdGFudHMpCi0gICAg
LCBtX3N0YXRlbWVudHMoc3RhdGVtZW50cykKK1Njb3BlTm9kZURhdGE6OlNjb3BlTm9kZURhdGEo
U291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMsIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcykKKyAgICA6
IG1fc3RhdGVtZW50cyhzdGF0ZW1lbnRzKQogewotICAgIG1fYXJlbmEuc3dhcChhcmVuYSk7CiAg
ICAgaWYgKHZhclN0YWNrKQogICAgICAgICBtX3ZhclN0YWNrLnN3YXAoKnZhclN0YWNrKTsKICAg
ICBpZiAoZnVuY1N0YWNrKQpAQCAtODcsMzMgKzg1LDMxIEBAIFNjb3BlTm9kZURhdGE6OlNjb3Bl
Tm9kZURhdGEoUGFyc2VyQXJlbmEmIGFyZW5hLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cywg
VmFyCiAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFyaWFibGVzKTsKIH0K
IAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNjb3BlTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENv
ZGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TY29wZU5vZGU6OlNjb3Bl
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGluU3Ry
aWN0Q29udGV4dCkKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKK0NvZGVOb2RlOjpD
b2RlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9kZShsaW5lTnVtYmVyKQogICAgICwgUGFyc2Vy
QXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGluU3RyaWN0Q29u
dGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogTm9GZWF0dXJlcykKKyAgICAsIG1fbnVtQ29uc3Rh
bnRzKDApCiB7CisgICAgbV9hcmVuYS5zd2FwKCpnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYSk7CiB9
CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKK0NvZGVOb2RlOjpD
b2RlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZh
clN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVk
VmFyaWFibGVzLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAg
OiBTY29wZU5vZGUobGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNh
cHR1cmVkVmFyaWFibGVzKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEp
Ci0gICAgLCBtX2RhdGEoYWRvcHRQdHIobmV3IFNjb3BlTm9kZURhdGEoKmdsb2JhbERhdGEtPnBh
cnNlckFyZW5hLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJs
ZXMsIG51bUNvbnN0YW50cykpKQogICAgICwgbV9mZWF0dXJlcyhmZWF0dXJlcykKKyAgICAsIG1f
bnVtQ29uc3RhbnRzKG51bUNvbnN0YW50cykKICAgICAsIG1fc291cmNlKHNvdXJjZSkKIHsKLX0K
LQotU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2RhdGEtPm1fc3RhdGVtZW50cyA/IG1fZGF0YS0+bV9zdGF0ZW1lbnRzLT5z
aW5nbGVTdGF0ZW1lbnQoKSA6IDA7CisgICAgbV9hcmVuYS5zd2FwKCpnbG9iYWxEYXRhLT5wYXJz
ZXJBcmVuYSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFt
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgUHJvZ3JhbU5vZGU6
OlByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykK
LSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKKyAgICA6IENvZGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwg
Y2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJl
cywgbnVtQ29uc3RhbnRzKQogewogfQogCkBAIC0xMjEsOSArMTE3LDkgQEAgUGFzc1JlZlB0cjxQ
cm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCBsaW5lTnUKIHsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3Jh
bU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3Rh
Y2ssICBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsK
IAotICAgIEFTU0VSVChub2RlLT5kYXRhKCktPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwotICAg
IG5vZGUtPmRhdGEoKS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7Ci0gICAgQVNTRVJUKCFub2RlLT5k
YXRhKCktPm1fYXJlbmEuY29udGFpbnMobm9kZS5nZXQoKSkpOworICAgIEFTU0VSVChub2RlLT5t
X2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKKyAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsK
KyAgICBBU1NFUlQoIW5vZGUtPm1fYXJlbmEuY29udGFpbnMobm9kZS5nZXQoKSkpOwogCiAgICAg
cmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQpAQCAtMTMxLDcgKzEyNyw3IEBAIFBhc3NSZWZQdHI8
UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50
cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNr
LCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29w
ZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCisg
ICAgOiBDb2RlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0
YW50cykKIHsKIH0KIApAQCAtMTM5LDkgKzEzNSw5IEBAIFBhc3NSZWZQdHI8RXZhbE5vZGU+IEV2
YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwK
IHsKICAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwg
bGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFi
bGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCi0gICAgQVNTRVJUKG5vZGUt
PmRhdGEoKS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7Ci0gICAgbm9kZS0+ZGF0YSgpLT5tX2Fy
ZW5hLnJlbW92ZUxhc3QoKTsKLSAgICBBU1NFUlQoIW5vZGUtPmRhdGEoKS0+bV9hcmVuYS5jb250
YWlucyhub2RlLmdldCgpKSk7CisgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5v
ZGUpOworICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOworICAgIEFTU0VSVCghbm9kZS0+
bV9hcmVuYS5jb250YWlucyhub2RlLmdldCgpKSk7CiAKICAgICByZXR1cm4gbm9kZS5yZWxlYXNl
KCk7CiB9CkBAIC0xNTUsMTIgKzE1MSwxMiBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9u
UGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKIH0KIAogaW5saW5lIEZ1
bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCi0gICAgOiBTY29wZU5vZGUo
Z2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5TdHJpY3RDb250ZXh0KQorICAgIDogQ29kZU5vZGUo
Z2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5TdHJpY3RDb250ZXh0KQogewogfQogCiBpbmxpbmUg
RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxp
bmVOdW1iZXIsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0
dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKKyAgICA6IENvZGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVu
Y1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0K
IApAQCAtMTg2LDkgKzE4Miw5IEBAIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gRnVuY3Rp
b25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwKIHsKICAgICBSZWZQ
dHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERh
dGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcywgc291cmNlQ29kZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKLSAgICBBU1NF
UlQobm9kZS0+ZGF0YSgpLT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKLSAgICBub2RlLT5kYXRh
KCktPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwotICAgIEFTU0VSVCghbm9kZS0+ZGF0YSgpLT5tX2Fy
ZW5hLmNvbnRhaW5zKG5vZGUuZ2V0KCkpKTsKKyAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0
KCkgPT0gbm9kZSk7CisgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CisgICAgQVNTRVJU
KCFub2RlLT5tX2FyZW5hLmNvbnRhaW5zKG5vZGUuZ2V0KCkpKTsKIAogICAgIHJldHVybiBub2Rl
LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA1MDk4
ZGM3NmM3YjI4NDljOTZlN2Y4NzQ2ZGZkOTE2NThhNjgwOWQ5Li5mNTk0MzM3NGFkNWM4ZjQ2YzBm
ZjQ4MDE1N2E1MWU5YTE3OGUzN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFJlYWRNb2RpZnlS
ZXNvbHZlTm9kZTsKICAgICBjbGFzcyBSZWdpc3RlcklEOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5O
b2RlOwotICAgIGNsYXNzIFNjb3BlTm9kZTsKKyAgICBjbGFzcyBDb2RlTm9kZTsKIAogICAgIHR5
cGVkZWYgdW5zaWduZWQgQ29kZUZlYXR1cmVzOwogCkBAIC0xMzc5LDI5ICsxMzc5LDQ3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFj
ayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25T
dGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIFNjb3BlTm9kZURhdGEoUGFyc2VyQXJlbmEm
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJT
ZXQmLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlRGF0YShTb3VyY2VFbGVt
ZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmKTsKIAotICAg
ICAgICBQYXJzZXJBcmVuYSBtX2FyZW5hOwogICAgICAgICBWYXJTdGFjayBtX3ZhclN0YWNrOwog
ICAgICAgICBGdW5jdGlvblN0YWNrIG1fZnVuY3Rpb25TdGFjazsKLSAgICAgICAgaW50IG1fbnVt
Q29uc3RhbnRzOwogICAgICAgICBTb3VyY2VFbGVtZW50cyogbV9zdGF0ZW1lbnRzOwogICAgICAg
ICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgfTsKIAotICAgIGNsYXNz
IFNjb3BlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFSZWZD
b3VudGVkIHsKKyAgICBjbGFzcyBTY29wZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBW
YXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
ayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQs
IGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSos
IGludCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5j
dGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7Ci0KLSAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFSZWZDb3VudGVkOjpvcGVyYXRvciBuZXc7
CisgICAgICAgIFNjb3BlTm9kZShpbnQpOworICAgICAgICBTY29wZU5vZGUoaW50LCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmKTsKIAog
ICAgICAgICBTY29wZU5vZGVEYXRhKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAgICAgICAgIHZvaWQgZGVzdHJveURhdGEoKSB7IG1fZGF0YS5jbGVhcigpOyB9CiAKKyAg
ICAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9kYXRh
LT5tX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBzaXplX3QgY2FwdHVyZWRW
YXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5tX2NhcHR1cmVkVmFyaWFibGVz
LnNpemUoKTsgfQorICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50
KSB7IHJldHVybiBtX2RhdGEtPm1fY2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1w
bCgpKTsgfQorCisgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgQVNTRVJUKG1fZGF0YSk7
IHJldHVybiBtX2RhdGEtPm1fdmFyU3RhY2s7IH0KKyAgICAgICAgRnVuY3Rpb25TdGFjayYgZnVu
Y3Rpb25TdGFjaygpIHsgQVNTRVJUKG1fZGF0YSk7IHJldHVybiBtX2RhdGEtPm1fZnVuY3Rpb25T
dGFjazsgfQorCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGRhdGEoKS0+bV9zdGF0ZW1lbnRzID8gZGF0YSgpLT5tX3N0YXRlbWVudHMtPnNp
bmdsZVN0YXRlbWVudCgpIDogMDsgfQorCisgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIE93blB0cjxTY29wZU5vZGVEYXRhPiBtX2RhdGE7CisgICAgfTsK
KworICAgIGNsYXNzIENvZGVOb2RlIDogcHVibGljIFNjb3BlTm9kZSwgcHVibGljIFBhcnNlckFy
ZW5hUmVmQ291bnRlZCB7CisgICAgcHVibGljOgorICAgICAgICBDb2RlTm9kZShKU0dsb2JhbERh
dGEqLCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgQ29kZU5vZGUoSlNHbG9i
YWxEYXRhKiwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKworICAgICAgICB1c2luZyBQYXJzZXJBcmVuYVJlZkNvdW50ZWQ6Om9wZXJh
dG9yIG5ldzsKKwogICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZTsgfQogICAgICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQogICAgICAgICBpbnRwdHJf
dCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKTsg
fQpAQCAtMTQxNCwzNyArMTQzMiwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBp
c1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1
cmU7IH0KICAgICAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKCkgeyBtX2ZlYXR1cmVzIHw9IEFy
Z3VtZW50c0ZlYXR1cmU7IH0KICAgICAgICAgYm9vbCB1c2VzVGhpcygpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXMgJiBUaGlzRmVhdHVyZTsgfQotICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlv
bkZvck1vcmVUaGFuVmFyaWFibGVzKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhKTsgcmV0dXJuIG1f
ZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSk7IH0K
LSAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IEFTU0VSVChtX2RhdGEpOyBy
ZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0
dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQotICAgICAgICBib29sIGhhc0Nh
cHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2RhdGEtPm1fY2FwdHVyZWRWYXJp
YWJsZXMuc2l6ZSgpOyB9Ci0gICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEtPm1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9Ci0gICAg
ICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsgcmV0dXJuIG1fZGF0
YS0+bV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9Ci0KLSAgICAg
ICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyBBU1NFUlQobV9kYXRhKTsgcmV0dXJuIG1fZGF0YS0+
bV92YXJTdGFjazsgfQotICAgICAgICBGdW5jdGlvblN0YWNrJiBmdW5jdGlvblN0YWNrKCkgeyBB
U1NFUlQobV9kYXRhKTsgcmV0dXJuIG1fZGF0YS0+bV9mdW5jdGlvblN0YWNrOyB9CisgICAgICAg
IGJvb2wgbmVlZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSBjb25zdCB7IEFTU0VS
VChkYXRhKCkpOyByZXR1cm4gbV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJl
IHwgQ2F0Y2hGZWF0dXJlKTsgfQorICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0
IHsgQVNTRVJUKGRhdGEoKSk7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1f
ZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9
CiAKICAgICAgICAgaW50IG5lZWRlZENvbnN0YW50cygpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChtX2RhdGEpOwogICAgICAgICAgICAgLy8gV2UgbWF5IG5lZWQgMiBtb3JlIGNvbnN0
YW50cyB0aGFuIHRoZSBjb3VudCBnaXZlbiBieSB0aGUgcGFyc2VyLAogICAgICAgICAgICAgLy8g
YmVjYXVzZSBvZiB0aGUgdmFyaW91cyB1c2VzIG9mIGpzVW5kZWZpbmVkKCkgYW5kIGpzTnVsbCgp
LgotICAgICAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV9udW1Db25zdGFudHMgKyAyOworICAgICAg
ICAgICAgcmV0dXJuIG1fbnVtQ29uc3RhbnRzICsgMjsKICAgICAgICAgfQogCi0gICAgICAgIFN0
YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgZW1p
dFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3Rp
bmF0aW9uKTsKLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CisgICAgICAgIFBhcnNl
ckFyZW5hIG1fYXJlbmE7CiAKICAgICBwcml2YXRlOgotICAgICAgICBPd25QdHI8U2NvcGVOb2Rl
RGF0YT4gbV9kYXRhOwogICAgICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKKyAgICAgICAg
dW5zaWduZWQgbV9udW1Db25zdGFudHM7CiAgICAgICAgIFNvdXJjZUNvZGUgbV9zb3VyY2U7CiAg
ICAgfTsKIAotICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CisgICAg
Y2xhc3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgQ29kZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNv
dXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwpAQCAt
MTQ1Nyw3ICsxNDY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
ICAgICB9OwogCi0gICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKKyAgICBj
bGFzcyBFdmFsTm9kZSA6IHB1YmxpYyBDb2RlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9IGZhbHNlOwogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CkBAIC0xNDc5LDcg
KzE0ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKFBh
cmFtZXRlck5vZGUqKTsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1
YmxpYyBTY29wZU5vZGUgeworICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgQ29k
ZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlv
bk5vZGUgPSB0cnVlOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpT
R2xvYmFsRGF0YSosIGludCwgYm9vbCBpc1N0cmljdE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggZjNkOTZmZjNlYzllMmNlN2E3MTI3YmE4MmY0YzljNjI0ZmMw
NjRjOS4uZjY5ZDI1ZjQ2MzhiNzFlNjgzYTc0YjVhY2VlOTJjYjdlNzY1ZjRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC00ODcsNyArNDg3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQsIElkZW50aWZpZXJTZXQmKTsKIAog
ICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgotICAgIGJv
b2wgaXNGdW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoQ29kZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNGdW5jdGlvbkJvZHlOb2RlKEZ1bmN0aW9uQm9keU5vZGUqKSB7IHJldHVybiB0cnVl
OyB9CiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129266</attachid>
            <date>2012-02-28 08:45:10 -0800</date>
            <delta_ts>2012-03-07 10:53:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74509-20120228174508.patch</filename>
            <type>text/plain</type>
            <size>16717</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDY2ZjljZjE3NDcxMmQ5MDEwMzA1MjMzYmE2Yzg2MDI4YjBmNGU2Li40NTFkNDUwMmZhMWRiZTRi
MzRiZTAyNTI1ZmFkOGRhZDJkMGNmZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxMS0xMi0xNCAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgSW50ZXJwb3NlIENvZGVOb2RlIGJldHdlZW4gU2NvcGVOb2RlIGFuZCBQcm9ncmFt
Tm9kZSBldCBhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ1MDkKKworICAgICAgICBFUzYgaW50cm9kdWNlcyBhIG5ldyB3YXkgdG8gYmluZCB2YXJp
YWJsZXMsIGluIGJsb2NrIHNjb3Blcy4gIFRoZQorICAgICAgICBwYXRjaCB0byBiZSBhdHRhY2hl
ZCBzZXBhcmF0ZXMgdGhlIGNvbmNlcm4gb2YgdmFyaWFibGUgYmluZGluZworICAgICAgICB3aXRo
IHRoZSBvdGhlciBjb25jZXJucyBvZiBmdW5jdGlvbi9wcm9ncmFtL2V2YWwgY29kZSAobmFtZWx5
LAorICAgICAgICBob2xkaW5nIGEgY29kZWJsb2NrKS4gIEl0IGRvZXMgc28gYnkgaW50cm9kdWNp
bmcgYSBuZXcgY2xhc3MsCisgICAgICAgIENvZGVOb2RlLCBiZXR3ZWVuIFNjb3BlTm9kZSBhbmQg
UHJvZ3JhbU5vZGUuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhZGQgQmxvY2tTY29w
ZU5vZGUgd2hvc2Ugc3VwZXJjbGFzcyBpcworICAgICAgICBTY29wZU5vZGUuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGlu
Z1Rvb2wuaDogRGVjbGFyZSBDb2RlTm9kZSwgbm90IFNjb3BlTm9kZS4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDogbV9jb2RlTm9kZSwgbm90IG1fc2NvcGVOb2Rl
LgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6IENoYW5nZSB1c2VzIGFuZAorICAgICAg
ICBpbml0aWFsaXphdGlvbiBvZiBtX2NvZGVOb2RlLgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKTogRGVjbGFy
ZSBpbmxpbmUgY29uc3RydWN0b3JzIGZvcgorICAgICAgICBTY29wZU5vZGUuICBEb24ndCBzd2Fw
IG91dCB0aGUgYXJlbmEgLS0gdGhhdCBpcyBDb2RlTm9kZSdzIGpvYi4KKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpDb2RlTm9kZTo6Q29kZU5vZGUpOiBCYXNpY2Fs
bHksIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGlzIGZyb20KKyAgICAgICAgU2NvcGVOb2RlLCBhbmQg
YWxzbyByZWNvcmQgdGhlIG51bWJlciBvZiBjb25zdGFudHMgYW5kIGRvIHRoZQorICAgICAgICBh
cmVuYSBzd2FwIGhlcmUuCisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFs
Tm9kZTo6RXZhbE5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6IEFkYXB0IHRvIGRlc2NlbmQgZnJvbSBDb2Rl
Tm9kZSwKKyAgICAgICAgYW5kIGFkYXB0IHRoZSBhc3NlcnRpb25zIHRvIGxvb2sgZm9yIHRoZSBh
cmVuYSBpbiB0aGUgQ29kZU5vZGUuCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAg
IChKU0M6OlNjb3BlTm9kZSk6CisgICAgICAgIChKU0M6OkNvZGVOb2RlKTogRG8gdGhlIG1hbnVh
bCByZWZhY3RvcmluZ3MgdG8gc3BsaXQgd2hhdCB3YXMgdGhlCisgICAgICAgIFNjb3BlTm9kZSBm
dW5jdGlvbmFsaXR5IGludG8gdHdvIGNsYXNzZXMsIFNjb3BlTm9kZSBhbmQgQ29kZU5vZGUuCisg
ICAgICAgIENvZGVOb2RlIGlzIHRoZSBvbmUgdGhhdCBrZWVwcyB0aGUgcGFyc2VyLWFyZW5hIHJl
ZmNvdW50aW5nLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaCAoSlNDOjpQYXJzZXI6OmlzRnVu
Y3Rpb25Cb2R5Tm9kZSk6IFRha2UgYQorICAgICAgICBDb2RlTm9kZSwgbm90IGEgU2NvcGVOb2Rl
LgorCiAyMDEyLTAyLTIxICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZWZhY3RvciBjb2RlIGZlYXR1cmUgYW5hbHlzaXMgaW4gdGhlIHBhcnNlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCmluZGV4IDI4ZmQ1MjhkMDQx
N2I3ZmY2OThlZTQ5YjYzOTk1MzRlNDAxNzEyNmIuLjVhNzFhYjQxMTI0YjA5ZjcyNjlkNTRiMDhj
YjdjZTQ4MTYxMWRlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TYW1wbGluZ1Rvb2wuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEludGVycHJldGVy
OwotICAgIGNsYXNzIFNjb3BlTm9kZTsKKyAgICBjbGFzcyBDb2RlTm9kZTsKICAgICBzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CiAKICAgICBzdHJ1Y3QgU2NyaXB0U2FtcGxlUmVjb3JkIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNGE2ZjQ2NTNlYWI4OTJmYzZkYTBkYjkzY2I0OWNiMTU3MWE2YWRmYi4uMjU5
MTNkOWQwMDBiMjRjYTNjM2M2YjhlMjM2OWQxMDMwOTU0NDAzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTE3OSw3ICsxNzksNyBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKICAgICAKICAgICBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKG1fdGhpc1JlZ2lzdGVy
LmluZGV4KCkpOwogCi0gICAgbV9zY29wZU5vZGUtPmVtaXRCeXRlY29kZSgqdGhpcyk7CisgICAg
bV9jb2RlTm9kZS0+ZW1pdEJ5dGVjb2RlKCp0aGlzKTsKICAgICAKICAgICBtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkgPSBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+KG1faW5zdHJ1Y3Rp
b25zKTsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFNjb3BlQ2hhaW5Ob2RlKiBzCiAgICAg
LCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oc2NvcGVDaGFp
bi0+Z2xvYmFsT2JqZWN0LmdldCgpKSkKICAgICAsIG1fc2NvcGVDaGFpbigqc2NvcGVDaGFpbi0+
Z2xvYmFsRGF0YSwgc2NvcGVDaGFpbikKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUp
Ci0gICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZU5vZGUocHJvZ3Jh
bU5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX3RoaXNSZWdpc3Rl
cihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9maW5hbGx5RGVwdGgo
MCkKQEAgLTMwNCw3ICszMDQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBTY29wZUNoYWluTgogICAgICwgbV9z
aG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmds
b2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2Jh
bERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQotICAg
ICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Cb2R5KQorICAgICwgbV9jb2RlTm9kZShmdW5jdGlvbkJv
ZHkpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX2FjdGl2YXRpb25SZWdp
c3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgoMCkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRXZhbE5vZGUqIGV2YWxOb2RlLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaAogICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2Nv
cGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0
c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBt
X3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBt
X3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQotICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCisg
ICAgLCBtX2NvZGVOb2RlKGV2YWxOb2RlKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQog
ICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAg
ICAsIG1fZmluYWxseURlcHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYzQ0ODEyYzdlODViYzU0OTBm
M2M3YWFkNDJlMzJmZWEwMjQxNzg0MC4uNGI1NWE3YWZlNWM2ZTdmYmQ3YzVmYzAwZGJhMDljM2Iy
ZjAxYmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjU3LDcgKzY1Nyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJvbmc8U2NvcGVDaGFpbk5vZGU+IG1fc2NvcGVDaGFpbjsKICAgICAgICAg
U3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAKLSAgICAgICAgU2NvcGVOb2RlKiBtX3Njb3Bl
Tm9kZTsKKyAgICAgICAgQ29kZU5vZGUqIG1fY29kZU5vZGU7CiAgICAgICAgIENvZGVCbG9jayog
bV9jb2RlQmxvY2s7CiAKICAgICAgICAgLy8gU29tZSBvZiB0aGVzZSBvYmplY3RzIGtlZXAgcG9p
bnRlcnMgdG8gb25lIGFub3RoZXIuIFRoZXkgYXJlIGFycmFuZ2VkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGVlYTNmNTc1YzU5MzE5
MTFlZWIyMDgwY2E0YTBmY2Q0ZjdjYWY0N2IuLjFjOGY4ZDViMTYzYTA0NjIzZmI3ODYwOWRhYmIx
ZDM2NGEzOGZhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCkBAIC04NjQsNiArODY0LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKKyAgICBpbmxpbmUgU2NvcGVOb2RlOjpTY29wZU5vZGUoaW50IGxpbmVOdW1iZXIs
IFNjb3BlRmxhZ3Mgc2NvcGVGbGFncykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIpCisgICAgICAgICwgbV9zY29wZUZsYWdzKHNjb3BlRmxhZ3MpCisgICAgeworICAgIH0KKwor
ICAgIGlubGluZSBTY29wZU5vZGU6OlNjb3BlTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIFNjb3BlRmxhZ3Mgc2NvcGVG
bGFncykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgICAgICwgbV9z
Y29wZUZsYWdzKHNjb3BlRmxhZ3MpCisgICAgICAgICwgbV9zdGF0ZW1lbnRzKGNoaWxkcmVuKQor
ICAgIHsKKyAgICAgICAgaWYgKHZhclN0YWNrKQorICAgICAgICAgICAgbV92YXJTdGFjay5zd2Fw
KCp2YXJTdGFjayk7CisgICAgICAgIGlmIChmdW5jU3RhY2spCisgICAgICAgICAgICBtX2Z1bmN0
aW9uU3RhY2suc3dhcCgqZnVuY1N0YWNrKTsKKyAgICAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5z
d2FwKGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICB9CisKICAgICBpbmxpbmUgRm9ySW5Ob2RlOjpG
b3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1faWRl
bnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDlmZDdiODQyYWRkNWEwNTVlZTMxNjhiYmFj
N2EzYzM2ZTE4N2M4OWYuLjMyNDMxMTdhZTljM2EwYWUyZDk1MjgwNjRjMzhhNDIwZDM3ZjBkY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC03Myw0MSArNzMsMjkg
QEAgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIHNpemUgPT0gMSA/IG1fc3RhdGVtZW50c1swXSA6IDA7CiB9CiAKLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb2RlTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU2NvcGVGbGFncyBzY29wZUZs
YWdzKQotICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorQ29kZU5vZGU6OkNvZGVOb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNjb3BlRmxhZ3Mgc2Nv
cGVGbGFncykKKyAgICA6IFNjb3BlTm9kZShsaW5lTnVtYmVyLCBzY29wZUZsYWdzKQogICAgICwg
UGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCi0gICAgLCBtX3Njb3BlRmxhZ3Moc2Nv
cGVGbGFncykKICAgICAsIG1fbnVtQ29uc3RhbnRzKDApCiB7CisvLyAgICBtX2FyZW5hLnN3YXAo
Kmdsb2JhbERhdGEtPnBhcnNlckFyZW5hKTsKIH0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVu
Y3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywg
U2NvcGVGbGFncyBzY29wZUZsYWdzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyKQorQ29kZU5vZGU6OkNvZGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIFNjb3BlRmxhZ3Mgc2NvcGVG
bGFncywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShsaW5lTnVtYmVyLCBjaGls
ZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNjb3BlRmxhZ3Mp
CiAgICAgLCBQYXJzZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKLSAgICAsIG1fc2NvcGVG
bGFncyhzY29wZUZsYWdzKQotICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9udW1Db25z
dGFudHMobnVtQ29uc3RhbnRzKQotICAgICwgbV9zdGF0ZW1lbnRzKGNoaWxkcmVuKQorICAgICwg
bV9zb3VyY2Uoc291cmNlKQogewogICAgIG1fYXJlbmEuc3dhcCgqZ2xvYmFsRGF0YS0+cGFyc2Vy
QXJlbmEpOwotICAgIGlmICh2YXJTdGFjaykKLSAgICAgICAgbV92YXJTdGFjay5zd2FwKCp2YXJT
dGFjayk7Ci0gICAgaWYgKGZ1bmNTdGFjaykKLSAgICAgICAgbV9mdW5jdGlvblN0YWNrLnN3YXAo
KmZ1bmNTdGFjayk7Ci0gICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFyaWFi
bGVzKTsKLX0KLQotU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N0YXRlbWVudHMgPyBtX3N0YXRlbWVudHMtPnNpbmdsZVN0
YXRlbWVudCgpIDogMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBy
b2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBQcm9ncmFt
Tm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJl
ciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9u
U3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgU2NvcGVGbGFncyBzY29wZUZsYWdzLCBpbnQgbnVtQ29uc3Rh
bnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hp
bGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzY29wZUZsYWdz
LCBudW1Db25zdGFudHMpCisgICAgOiBDb2RlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBz
b3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywg
c2NvcGVGbGFncywgbnVtQ29uc3RhbnRzKQogewogfQogCkBAIC0xMjUsNyArMTEzLDcgQEAgUGFz
c1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnUKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF
dmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6
OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFNjb3BlRmxhZ3Mgc2NvcGVGbGFncywgaW50IG51bUNvbnN0YW50cykKLSAg
ICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc2NvcGVGbGFncywgbnVtQ29u
c3RhbnRzKQorICAgIDogQ29kZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNjb3BlRmxh
Z3MsIG51bUNvbnN0YW50cykKIHsKIH0KIApAQCAtMTQ5LDEyICsxMzcsMTIgQEAgRnVuY3Rpb25Q
YXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0
ZXIpCiB9CiAKIGlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNjb3BlRmxhZ3Mgc2NvcGVGbGFn
cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzY29wZUZsYWdzKQor
ICAgIDogQ29kZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc2NvcGVGbGFncykKIHsKIH0K
IAogaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBW
YXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFNjb3Bl
RmxhZ3Mgc2NvcGVGbGFncywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9i
YWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNjb3BlRmxhZ3MsIG51bUNvbnN0YW50cykKKyAgICA6
IENvZGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc2NvcGVGbGFncywgbnVtQ29u
c3RhbnRzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZTFj
YmQyNTZkODQyODVmYTczNTM2Y2Q1ZWU4Yzg2YmM3OWQyNDRiMS4uNWY4MDY5MmUxOTc3ZGRjNDIy
MWUyNTEwMjdmOGU0M2M2OWVlNTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGU7CiAgICAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBjbGFzcyBTY29wZUNoYWlu
Tm9kZTsKLSAgICBjbGFzcyBTY29wZU5vZGU7CisgICAgY2xhc3MgQ29kZU5vZGU7CiAKICAgICB0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IFNjb3BlRmxhZ3M7CiAKQEAgLTEzODEsMTkgKzEzODEsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhcmFtZXRlck5vZGUqIG1fbmV4dDsKICAgICB9
OwogCi0gICAgY2xhc3MgU2NvcGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQ
YXJzZXJBcmVuYVJlZkNvdW50ZWQgeworICAgIGNsYXNzIFNjb3BlTm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFj
a3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xv
YmFsRGF0YSosIGludCwgU2NvcGVGbGFncyk7Ci0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERh
dGEqLCBpbnQsIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBTY29wZUZsYWdzLCBpbnQgbnVtQ29uc3Rh
bnRzKTsKLQotICAgICAgICB1c2luZyBQYXJzZXJBcmVuYVJlZkNvdW50ZWQ6Om9wZXJhdG9yIG5l
dzsKKyAgICAgICAgU2NvcGVOb2RlKGludCwgU2NvcGVGbGFncyk7CisgICAgICAgIFNjb3BlTm9k
ZShpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRp
ZmllclNldCYsIFNjb3BlRmxhZ3MpOwogCiAgICAgICAgIHZvaWQgZGVzdHJveURhdGEoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CiAgICAgICAgICAgICBtX3ZhclN0
YWNrLmNsZWFyKCk7CiAgICAgICAgICAgICBtX2Z1bmN0aW9uU3RhY2suY2xlYXIoKTsKICAgICAg
ICAgICAgIG1fc3RhdGVtZW50cyA9IDA7CkBAIC0xNDE2LDEzICsxNDEzLDM4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbkZvck1vcmVUaGFuVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZUZsYWdzICYgKFVzZXNFdmFsRmxhZyB8IFVzZXNXaXRo
RmxhZyB8IFVzZXNDYXRjaEZsYWcpOyB9CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSB8fCBuZWVkc0FjdGl2YXRpb25G
b3JNb3JlVGhhblZhcmlhYmxlcygpOyB9CiAKKyAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkg
eyByZXR1cm4gbV92YXJTdGFjazsgfQorICAgICAgICBGdW5jdGlvblN0YWNrJiBmdW5jdGlvblN0
YWNrKCkgeyByZXR1cm4gbV9mdW5jdGlvblN0YWNrOyB9CisKKyAgICAgICAgU3RhdGVtZW50Tm9k
ZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZW1lbnRzID8gbV9zdGF0
ZW1lbnRzLT5zaW5nbGVTdGF0ZW1lbnQoKSA6IDA7IH0KKworICAgICAgICB2b2lkIGVtaXRTdGF0
ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlv
bik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTY29wZUZsYWdzIG1fc2NvcGVGbGFnczsKKyAg
ICAgICAgVmFyU3RhY2sgbV92YXJTdGFjazsKKyAgICAgICAgRnVuY3Rpb25TdGFjayBtX2Z1bmN0
aW9uU3RhY2s7CisgICAgICAgIFNvdXJjZUVsZW1lbnRzKiBtX3N0YXRlbWVudHM7CisgICAgICAg
IElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICB9OworCisgICAgY2xhc3Mg
Q29kZU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFSZWZDb3VudGVk
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIENvZGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgU2Nv
cGVGbGFncyk7CisgICAgICAgIENvZGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgU291
cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRl
bnRpZmllclNldCYsIFNjb3BlRmxhZ3MsIGludCBudW1Db25zdGFudHMpOworCisgICAgICAgIHVz
aW5nIFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3OworCisgICAgICAgIHZvaWQg
ZGVzdHJveURhdGEoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2FyZW5hLnJlc2V0KCk7Cisg
ICAgICAgICAgICBTY29wZU5vZGU6OmRlc3Ryb3lEYXRhKCk7CisgICAgICAgIH0KKwogICAgICAg
ICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQog
ICAgICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZS5wcm92aWRlcigpLT51cmwoKTsgfQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKTsgfQogCi0gICAgICAgIFZhclN0
YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3RhY2s7IH0KLSAgICAgICAgRnVuY3Rpb25T
dGFjayYgZnVuY3Rpb25TdGFjaygpIHsgcmV0dXJuIG1fZnVuY3Rpb25TdGFjazsgfQotCiAgICAg
ICAgIGludCBuZWVkZWRDb25zdGFudHMoKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBXZSBt
YXkgbmVlZCAyIG1vcmUgY29uc3RhbnRzIHRoYW4gdGhlIGNvdW50IGdpdmVuIGJ5IHRoZSBwYXJz
ZXIsCkBAIC0xNDMwLDI1ICsxNDUyLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIG1fbnVtQ29uc3RhbnRzICsgMjsKICAgICAgICAgfQogCi0gICAgICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgZW1pdFN0YXRl
bWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9u
KTsKLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNl
Q29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CiAgICAgICAgIFBhcnNlckFyZW5h
IG1fYXJlbmE7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTY29wZUZsYWdzIG1fc2NvcGVGbGFn
czsKLSAgICAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKLSAgICAgICAgVmFyU3RhY2sgbV92YXJT
dGFjazsKLSAgICAgICAgRnVuY3Rpb25TdGFjayBtX2Z1bmN0aW9uU3RhY2s7CiAgICAgICAgIGlu
dCBtX251bUNvbnN0YW50czsKLSAgICAgICAgU291cmNlRWxlbWVudHMqIG1fc3RhdGVtZW50czsK
LSAgICAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAgICAgICBTb3Vy
Y2VDb2RlIG1fc291cmNlOwogICAgIH07CiAKLSAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1Ymxp
YyBTY29wZU5vZGUgeworICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIENvZGVOb2RlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0g
ZmFsc2U7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoSlNH
bG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgU2NvcGVGbGFncywgaW50IG51
bUNvbnN0YW50cyk7CkBAIC0xNDYxLDcgKzE0NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwogICAgIH07CiAKLSAgICBjbGFzcyBFdmFsTm9kZSA6IHB1YmxpYyBT
Y29wZU5vZGUgeworICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIENvZGVOb2RlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRh
KiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50
aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgU2NvcGVGbGFncywgaW50IG51bUNvbnN0YW50
cyk7CkBAIC0xNDgzLDcgKzE0OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rp
b25QYXJhbWV0ZXJzKFBhcmFtZXRlck5vZGUqKTsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rp
b25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgeworICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5v
ZGUgOiBwdWJsaWMgQ29kZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVlOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU2NvcGVGbGFncyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA3NTEzZDFmMTFmZDQ4OTU4MjhhZjhjYWViZTgw
YWRhMTViNWY1N2Y5Li42NDE3ZDJiZjJiZDg3MDQ1OTA4ZTUzMDVhZDZiZDk2Y2YwNGI2OWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTQ2NSw3ICs0NjUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCwgSWRlbnRpZmllclNl
dCYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQu
Ci0gICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShDb2RlTm9kZSopIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoRnVuY3Rpb25Cb2R5Tm9kZSopIHsgcmV0
dXJuIHRydWU7IH0KIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130648</attachid>
            <date>2012-03-07 10:53:16 -0800</date>
            <delta_ts>2013-10-31 11:36:15 -0700</delta_ts>
            <desc>fix a loose ends from rebasing</desc>
            <filename>bug-74509-20120307195314.patch</filename>
            <type>text/plain</type>
            <size>16693</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjRmYmQyYjZmODU3OTVmNzVkYzhkNWM5MTBiMzg2N2Q2ZDE0OGU3Li43MDYxMTlkMDliODhhZTIz
ZjE4ZmIyNzE3YmUzZjI2MzQzNWY5MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxMS0wMy0wNyAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgSW50ZXJwb3NlIENvZGVOb2RlIGJldHdlZW4gU2NvcGVOb2RlIGFuZCBQcm9ncmFt
Tm9kZSBldCBhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ1MDkKKworICAgICAgICBFUzYgaW50cm9kdWNlcyBhIG5ldyB3YXkgdG8gYmluZCB2YXJp
YWJsZXMsIGluIGJsb2NrIHNjb3Blcy4gIFRoZQorICAgICAgICBwYXRjaCB0byBiZSBhdHRhY2hl
ZCBzZXBhcmF0ZXMgdGhlIGNvbmNlcm4gb2YgdmFyaWFibGUgYmluZGluZworICAgICAgICB3aXRo
IHRoZSBvdGhlciBjb25jZXJucyBvZiBmdW5jdGlvbi9wcm9ncmFtL2V2YWwgY29kZSAobmFtZWx5
LAorICAgICAgICBob2xkaW5nIGEgY29kZWJsb2NrKS4gIEl0IGRvZXMgc28gYnkgaW50cm9kdWNp
bmcgYSBuZXcgY2xhc3MsCisgICAgICAgIENvZGVOb2RlLCBiZXR3ZWVuIFNjb3BlTm9kZSBhbmQg
UHJvZ3JhbU5vZGUuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhZGQgQmxvY2tTY29w
ZU5vZGUgd2hvc2Ugc3VwZXJjbGFzcyBpcworICAgICAgICBTY29wZU5vZGUuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGlu
Z1Rvb2wuaDogRGVjbGFyZSBDb2RlTm9kZSwgbm90IFNjb3BlTm9kZS4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDogbV9jb2RlTm9kZSwgbm90IG1fc2NvcGVOb2Rl
LgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6IENoYW5nZSB1c2VzIGFuZAorICAgICAg
ICBpbml0aWFsaXphdGlvbiBvZiBtX2NvZGVOb2RlLgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKTogRGVjbGFy
ZSBpbmxpbmUgY29uc3RydWN0b3JzIGZvcgorICAgICAgICBTY29wZU5vZGUuICBEb24ndCBzd2Fw
IG91dCB0aGUgYXJlbmEgLS0gdGhhdCBpcyBDb2RlTm9kZSdzIGpvYi4KKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpDb2RlTm9kZTo6Q29kZU5vZGUpOiBCYXNpY2Fs
bHksIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGlzIGZyb20KKyAgICAgICAgU2NvcGVOb2RlLCBhbmQg
YWxzbyByZWNvcmQgdGhlIG51bWJlciBvZiBjb25zdGFudHMgYW5kIGRvIHRoZQorICAgICAgICBh
cmVuYSBzd2FwIGhlcmUuCisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFs
Tm9kZTo6RXZhbE5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6IEFkYXB0IHRvIGRlc2NlbmQgZnJvbSBDb2Rl
Tm9kZSwKKyAgICAgICAgYW5kIGFkYXB0IHRoZSBhc3NlcnRpb25zIHRvIGxvb2sgZm9yIHRoZSBh
cmVuYSBpbiB0aGUgQ29kZU5vZGUuCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAg
IChKU0M6OlNjb3BlTm9kZSk6CisgICAgICAgIChKU0M6OkNvZGVOb2RlKTogRG8gdGhlIG1hbnVh
bCByZWZhY3RvcmluZ3MgdG8gc3BsaXQgd2hhdCB3YXMgdGhlCisgICAgICAgIFNjb3BlTm9kZSBm
dW5jdGlvbmFsaXR5IGludG8gdHdvIGNsYXNzZXMsIFNjb3BlTm9kZSBhbmQgQ29kZU5vZGUuCisg
ICAgICAgIENvZGVOb2RlIGlzIHRoZSBvbmUgdGhhdCBrZWVwcyB0aGUgcGFyc2VyLWFyZW5hIHJl
ZmNvdW50aW5nLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaCAoSlNDOjpQYXJzZXI6OmlzRnVu
Y3Rpb25Cb2R5Tm9kZSk6IFRha2UgYQorICAgICAgICBDb2RlTm9kZSwgbm90IGEgU2NvcGVOb2Rl
LgorCiAyMDEyLTAzLTA3ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZWZhY3RvciBjb2RlIGZlYXR1cmUgYW5hbHlzaXMgaW4gdGhlIHBhcnNlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCmluZGV4IDI4ZmQ1MjhkMDQx
N2I3ZmY2OThlZTQ5YjYzOTk1MzRlNDAxNzEyNmIuLjVhNzFhYjQxMTI0YjA5ZjcyNjlkNTRiMDhj
YjdjZTQ4MTYxMWRlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TYW1wbGluZ1Rvb2wuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEludGVycHJldGVy
OwotICAgIGNsYXNzIFNjb3BlTm9kZTsKKyAgICBjbGFzcyBDb2RlTm9kZTsKICAgICBzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CiAKICAgICBzdHJ1Y3QgU2NyaXB0U2FtcGxlUmVjb3JkIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNGE2ZjQ2NTNlYWI4OTJmYzZkYTBkYjkzY2I0OWNiMTU3MWE2YWRmYi4uMjU5
MTNkOWQwMDBiMjRjYTNjM2M2YjhlMjM2OWQxMDMwOTU0NDAzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTE3OSw3ICsxNzksNyBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKICAgICAKICAgICBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKG1fdGhpc1JlZ2lzdGVy
LmluZGV4KCkpOwogCi0gICAgbV9zY29wZU5vZGUtPmVtaXRCeXRlY29kZSgqdGhpcyk7CisgICAg
bV9jb2RlTm9kZS0+ZW1pdEJ5dGVjb2RlKCp0aGlzKTsKICAgICAKICAgICBtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkgPSBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+KG1faW5zdHJ1Y3Rp
b25zKTsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFNjb3BlQ2hhaW5Ob2RlKiBzCiAgICAg
LCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oc2NvcGVDaGFp
bi0+Z2xvYmFsT2JqZWN0LmdldCgpKSkKICAgICAsIG1fc2NvcGVDaGFpbigqc2NvcGVDaGFpbi0+
Z2xvYmFsRGF0YSwgc2NvcGVDaGFpbikKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUp
Ci0gICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZU5vZGUocHJvZ3Jh
bU5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX3RoaXNSZWdpc3Rl
cihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9maW5hbGx5RGVwdGgo
MCkKQEAgLTMwNCw3ICszMDQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBTY29wZUNoYWluTgogICAgICwgbV9z
aG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmds
b2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2Jh
bERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQotICAg
ICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Cb2R5KQorICAgICwgbV9jb2RlTm9kZShmdW5jdGlvbkJv
ZHkpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX2FjdGl2YXRpb25SZWdp
c3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgoMCkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRXZhbE5vZGUqIGV2YWxOb2RlLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaAogICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2Nv
cGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0
c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBt
X3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBt
X3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQotICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCisg
ICAgLCBtX2NvZGVOb2RlKGV2YWxOb2RlKQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQog
ICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAg
ICAsIG1fZmluYWxseURlcHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTdmZTIzNmU1YmFmMGYwZmI3
ZTkyZTQ2OThjNTZlODRjY2VmODdjNS4uOWU5NmFhYzRkMTJjYmYwMjUyOTEzYjZmZWNlOGM4YjRi
YzhjNDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjU3LDcgKzY1Nyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJvbmc8U2NvcGVDaGFpbk5vZGU+IG1fc2NvcGVDaGFpbjsKICAgICAgICAg
U3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAKLSAgICAgICAgU2NvcGVOb2RlKiBtX3Njb3Bl
Tm9kZTsKKyAgICAgICAgQ29kZU5vZGUqIG1fY29kZU5vZGU7CiAgICAgICAgIENvZGVCbG9jayog
bV9jb2RlQmxvY2s7CiAKICAgICAgICAgLy8gU29tZSBvZiB0aGVzZSBvYmplY3RzIGtlZXAgcG9p
bnRlcnMgdG8gb25lIGFub3RoZXIuIFRoZXkgYXJlIGFycmFuZ2VkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGU0OTZkMjM0MmIzNDAx
ZmE0YWU3NGUyNDYzOTRlYjk3YzMzYmNhMWYuLmM0MzE4MzdlNTFiYzkxYTczY2I1NmY3MTExN2Y2
YzQ5NWY2MjU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCkBAIC04NjUsNiArODY1LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKKyAgICBpbmxpbmUgU2NvcGVOb2RlOjpTY29wZU5vZGUoaW50IGxpbmVOdW1iZXIs
IFNjb3BlRmxhZ3Mgc2NvcGVGbGFncykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIpCisgICAgICAgICwgbV9zY29wZUZsYWdzKHNjb3BlRmxhZ3MpCisgICAgeworICAgIH0KKwor
ICAgIGlubGluZSBTY29wZU5vZGU6OlNjb3BlTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIFNjb3BlRmxhZ3Mgc2NvcGVG
bGFncykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgICAgICwgbV9z
Y29wZUZsYWdzKHNjb3BlRmxhZ3MpCisgICAgICAgICwgbV9zdGF0ZW1lbnRzKGNoaWxkcmVuKQor
ICAgIHsKKyAgICAgICAgaWYgKHZhclN0YWNrKQorICAgICAgICAgICAgbV92YXJTdGFjay5zd2Fw
KCp2YXJTdGFjayk7CisgICAgICAgIGlmIChmdW5jU3RhY2spCisgICAgICAgICAgICBtX2Z1bmN0
aW9uU3RhY2suc3dhcCgqZnVuY1N0YWNrKTsKKyAgICAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5z
d2FwKGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICB9CisKICAgICBpbmxpbmUgRm9ySW5Ob2RlOjpG
b3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1faWRl
bnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDc1Yzg0OGJjZTdhNmNhY2U1MGVhM2U2ZmFk
N2QwMTAzZTZmODY0MjIuLjVlOTVhNmRhNzU1NWJiZTM0NTJiZWZlMGI1OGI0ZDkyOGQ0Y2UyOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC03Myw0MiArNzMsMjgg
QEAgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIHNpemUgPT0gMSA/IG1fc3RhdGVtZW50c1swXSA6IDA7CiB9CiAKLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb2RlTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU2NvcGVGbGFncyBzY29wZUZs
YWdzKQotICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorQ29kZU5vZGU6OkNvZGVOb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNjb3BlRmxhZ3Mgc2Nv
cGVGbGFncykKKyAgICA6IFNjb3BlTm9kZShsaW5lTnVtYmVyLCBzY29wZUZsYWdzKQogICAgICwg
UGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCi0gICAgLCBtX3Njb3BlRmxhZ3Moc2Nv
cGVGbGFncykKICAgICAsIG1fbnVtQ29uc3RhbnRzKDApCi0gICAgLCBtX3N0YXRlbWVudHMoMCkK
IHsKIH0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBp
bnQgbGluZU51bWJlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgU2NvcGVGbGFncyBzY29wZUZsYWdzLCBp
bnQgbnVtQ29uc3RhbnRzKQotICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorQ29kZU5v
ZGU6OkNvZGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFj
ayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMsIFNjb3BlRmxhZ3Mgc2NvcGVGbGFncywgaW50IG51bUNvbnN0YW50cykK
KyAgICA6IFNjb3BlTm9kZShsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFj
aywgY2FwdHVyZWRWYXJpYWJsZXMsIHNjb3BlRmxhZ3MpCiAgICAgLCBQYXJzZXJBcmVuYVJlZkNv
dW50ZWQoZ2xvYmFsRGF0YSkKLSAgICAsIG1fc2NvcGVGbGFncyhzY29wZUZsYWdzKQotICAgICwg
bV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9udW1Db25zdGFudHMobnVtQ29uc3RhbnRzKQotICAg
ICwgbV9zdGF0ZW1lbnRzKGNoaWxkcmVuKQorICAgICwgbV9zb3VyY2Uoc291cmNlKQogewogICAg
IG1fYXJlbmEuc3dhcCgqZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEpOwotICAgIGlmICh2YXJTdGFj
aykKLSAgICAgICAgbV92YXJTdGFjay5zd2FwKCp2YXJTdGFjayk7Ci0gICAgaWYgKGZ1bmNTdGFj
aykKLSAgICAgICAgbV9mdW5jdGlvblN0YWNrLnN3YXAoKmZ1bmNTdGFjayk7Ci0gICAgbV9jYXB0
dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFyaWFibGVzKTsKLX0KLQotU3RhdGVtZW50Tm9k
ZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0
YXRlbWVudHMgPyBtX3N0YXRlbWVudHMtPnNpbmdsZVN0YXRlbWVudCgpIDogMDsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU2Nv
cGVGbGFncyBzY29wZUZsYWdzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3Rh
Y2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzY29wZUZsYWdzLCBudW1Db25zdGFudHMpCisgICAgOiBD
b2RlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc2NvcGVGbGFncywgbnVtQ29uc3RhbnRz
KQogewogfQogCkBAIC0xMjYsNyArMTEyLDcgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJv
Z3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnUKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNjb3BlRmxhZ3Mg
c2NvcGVGbGFncywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0
dXJlZFZhcmlhYmxlcywgc2NvcGVGbGFncywgbnVtQ29uc3RhbnRzKQorICAgIDogQ29kZU5vZGUo
Z2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNjb3BlRmxhZ3MsIG51bUNvbnN0YW50cykKIHsKIH0K
IApAQCAtMTUwLDEyICsxMzYsMTIgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFt
ZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCiB9CiAKIGlubGluZSBGdW5jdGlv
bkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50
IGxpbmVOdW1iZXIsIFNjb3BlRmxhZ3Mgc2NvcGVGbGFncykKLSAgICA6IFNjb3BlTm9kZShnbG9i
YWxEYXRhLCBsaW5lTnVtYmVyLCBzY29wZUZsYWdzKQorICAgIDogQ29kZU5vZGUoZ2xvYmFsRGF0
YSwgbGluZU51bWJlciwgc2NvcGVGbGFncykKIHsKIH0KIAogaW5saW5lIEZ1bmN0aW9uQm9keU5v
ZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51
bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFNjb3BlRmxhZ3Mgc2NvcGVGbGFncywgaW50IG51
bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IHNjb3BlRmxhZ3MsIG51bUNvbnN0YW50cykKKyAgICA6IENvZGVOb2RlKGdsb2JhbERhdGEsIGxp
bmVOdW1iZXIsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0
dXJlZFZhcmlhYmxlcywgc2NvcGVGbGFncywgbnVtQ29uc3RhbnRzKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZGI4NTFiNmRkNTAxNTE3OGM4OGUyNTQyYWFi
MzI1ZjE0NWU2ZGZjOC4uNTIwMTdlNGY3MzdlNTE1M2FiNDdlNGMyZjRjNDQwNGVmZTUzZmY0MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU7CiAgICAgY2xhc3Mg
UmVnaXN0ZXJJRDsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKLSAgICBjbGFzcyBTY29wZU5v
ZGU7CisgICAgY2xhc3MgQ29kZU5vZGU7CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFNj
b3BlRmxhZ3M7CiAKQEAgLTEzOTAsMTkgKzEzOTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFBhcmFtZXRlck5vZGUqIG1fbmV4dDsKICAgICB9OwogCi0gICAgY2xhc3MgU2NvcGVOb2Rl
IDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYVJlZkNvdW50ZWQgewor
ICAgIGNsYXNzIFNjb3BlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwog
ICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9u
U3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgU2NvcGVGbGFn
cyk7Ci0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZp
ZXJTZXQmLCBTY29wZUZsYWdzLCBpbnQgbnVtQ29uc3RhbnRzKTsKLQotICAgICAgICB1c2luZyBQ
YXJzZXJBcmVuYVJlZkNvdW50ZWQ6Om9wZXJhdG9yIG5ldzsKKyAgICAgICAgU2NvcGVOb2RlKGlu
dCwgU2NvcGVGbGFncyk7CisgICAgICAgIFNjb3BlTm9kZShpbnQsIFNvdXJjZUVsZW1lbnRzKiwg
VmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIFNjb3BlRmxhZ3MpOwog
CiAgICAgICAgIHZvaWQgZGVzdHJveURhdGEoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2Fy
ZW5hLnJlc2V0KCk7CiAgICAgICAgICAgICBtX3ZhclN0YWNrLmNsZWFyKCk7CiAgICAgICAgICAg
ICBtX2Z1bmN0aW9uU3RhY2suY2xlYXIoKTsKICAgICAgICAgICAgIG1fc3RhdGVtZW50cyA9IDA7
CkBAIC0xNDI1LDEzICsxNDIyLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5l
ZWRzQWN0aXZhdGlvbkZvck1vcmVUaGFuVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZUZsYWdzICYgKFVzZXNFdmFsRmxhZyB8IFVzZXNXaXRoRmxhZyB8IFVzZXNDYXRjaEZsYWcpOyB9
CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSB8fCBuZWVkc0FjdGl2YXRpb25Gb3JNb3JlVGhhblZhcmlhYmxlcygpOyB9
CiAKKyAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQor
ICAgICAgICBGdW5jdGlvblN0YWNrJiBmdW5jdGlvblN0YWNrKCkgeyByZXR1cm4gbV9mdW5jdGlv
blN0YWNrOyB9CisKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZW1lbnRzID8gbV9zdGF0ZW1lbnRzLT5zaW5nbGVTdGF0ZW1lbnQo
KSA6IDA7IH0KKworICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBTY29wZUZsYWdzIG1fc2NvcGVGbGFnczsKKyAgICAgICAgVmFyU3RhY2sgbV92YXJTdGFj
azsKKyAgICAgICAgRnVuY3Rpb25TdGFjayBtX2Z1bmN0aW9uU3RhY2s7CisgICAgICAgIFNvdXJj
ZUVsZW1lbnRzKiBtX3N0YXRlbWVudHM7CisgICAgICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJl
ZFZhcmlhYmxlczsKKyAgICB9OworCisgICAgY2xhc3MgQ29kZU5vZGUgOiBwdWJsaWMgU2NvcGVO
b2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFSZWZDb3VudGVkIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IENvZGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgU2NvcGVGbGFncyk7CisgICAgICAgIENvZGVO
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRz
KiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIFNjb3BlRmxhZ3Ms
IGludCBudW1Db25zdGFudHMpOworCisgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hUmVmQ291bnRl
ZDo6b3BlcmF0b3IgbmV3OworCisgICAgICAgIHZvaWQgZGVzdHJveURhdGEoKQorICAgICAgICB7
CisgICAgICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CisgICAgICAgICAgICBTY29wZU5vZGU6OmRl
c3Ryb3lEYXRhKCk7CisgICAgICAgIH0KKwogICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogICAgICAgICBjb25zdCBVU3RyaW5nJiBz
b3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQog
ICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3Zp
ZGVyKCktPmFzSUQoKTsgfQogCi0gICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJu
IG1fdmFyU3RhY2s7IH0KLSAgICAgICAgRnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjaygpIHsg
cmV0dXJuIG1fZnVuY3Rpb25TdGFjazsgfQotCiAgICAgICAgIGludCBuZWVkZWRDb25zdGFudHMo
KQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBXZSBtYXkgbmVlZCAyIG1vcmUgY29uc3RhbnRz
IHRoYW4gdGhlIGNvdW50IGdpdmVuIGJ5IHRoZSBwYXJzZXIsCkBAIC0xNDM5LDI1ICsxNDYxLDE2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fbnVtQ29uc3RhbnRzICsg
MjsKICAgICAgICAgfQogCi0gICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgp
IGNvbnN0OwotCi0gICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKLQogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNl
ID0gc291cmNlOyB9CiAgICAgICAgIFBhcnNlckFyZW5hIG1fYXJlbmE7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBTY29wZUZsYWdzIG1fc2NvcGVGbGFnczsKLSAgICAgICAgU291cmNlQ29kZSBt
X3NvdXJjZTsKLSAgICAgICAgVmFyU3RhY2sgbV92YXJTdGFjazsKLSAgICAgICAgRnVuY3Rpb25T
dGFjayBtX2Z1bmN0aW9uU3RhY2s7CiAgICAgICAgIGludCBtX251bUNvbnN0YW50czsKLSAgICAg
ICAgU291cmNlRWxlbWVudHMqIG1fc3RhdGVtZW50czsKLSAgICAgICAgSWRlbnRpZmllclNldCBt
X2NhcHR1cmVkVmFyaWFibGVzOworICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgIH07
CiAKLSAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgeworICAgIGNsYXNz
IFByb2dyYW1Ob2RlIDogcHVibGljIENvZGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25z
dCBTb3VyY2VDb2RlJiwgU2NvcGVGbGFncywgaW50IG51bUNvbnN0YW50cyk7CkBAIC0xNDcwLDcg
KzE0ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgIH07
CiAKLSAgICBjbGFzcyBFdmFsTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgeworICAgIGNsYXNzIEV2
YWxOb2RlIDogcHVibGljIENvZGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBj
b25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgU2NvcGVGbGFncywgaW50IG51bUNvbnN0YW50cyk7CkBAIC0xNDkyLDcgKzE1MDUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKFBhcmFtZXRlck5v
ZGUqKTsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29w
ZU5vZGUgeworICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgQ29kZU5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0
cnVlOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0
YSosIGludCwgU2NvcGVGbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApp
bmRleCA3NTEzZDFmMTFmZDQ4OTU4MjhhZjhjYWViZTgwYWRhMTViNWY1N2Y5Li42NDE3ZDJiZjJi
ZDg3MDQ1OTA4ZTUzMDVhZDZiZDk2Y2YwNGI2OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKQEAgLTQ2NSw3ICs0NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQsIGludCwgSWRlbnRpZmllclNldCYpOwogCiAgICAgLy8gVXNlZCB0byBk
ZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCi0gICAgYm9vbCBpc0Z1bmN0aW9uQm9k
eU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRnVuY3Rpb25C
b2R5Tm9kZShDb2RlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0Z1bmN0aW9u
Qm9keU5vZGUoRnVuY3Rpb25Cb2R5Tm9kZSopIHsgcmV0dXJuIHRydWU7IH0KIAogCg==
</data>
<flag name="review"
          id="133721"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>