<?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>91597</bug_id>
          
          <creation_ts>2012-07-18 00:34:33 -0700</creation_ts>
          <short_desc>DFG should emit inline code for property storage (re)allocation</short_desc>
          <delta_ts>2012-07-18 17:31:00 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672084</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 00:34:33 -0700</bug_when>
    <thetext>Work in progress patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672096</commentid>
    <comment_count>1</comment_count>
      <attachid>152957</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 00:58:01 -0700</bug_when>
    <thetext>Created attachment 152957
work in progress

I don&apos;t know if it even compiles.  And I haven&apos;t written the 32-bit code yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672471</commentid>
    <comment_count>2</comment_count>
      <attachid>152957</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-07-18 10:07:33 -0700</bug_when>
    <thetext>Comment on attachment 152957
work in progress

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

&gt; Source/JavaScriptCore/dfg/DFGCSEPhase.cpp:592
&gt; +                // If we can&apos;t prove that this changes the storage of our object,
&gt; +                // then we must conservatively assume that it might change it. Of

I think this comment is missing a &quot;not&quot; somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672476</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 10:14:57 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 152957 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152957&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGCSEPhase.cpp:592
&gt; &gt; +                // If we can&apos;t prove that this changes the storage of our object,
&gt; &gt; +                // then we must conservatively assume that it might change it. Of
&gt; 
&gt; I think this comment is missing a &quot;not&quot; somewhere.

I think it&apos;s correct. If child1 isn&apos;t matched then we must prevent CSE of GetPropertyStorage from working in case our child1 and their child1 was the same object but we didn&apos;t know it at compile time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672534</commentid>
    <comment_count>4</comment_count>
      <attachid>152957</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-07-18 10:58:01 -0700</bug_when>
    <thetext>Comment on attachment 152957
work in progress

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGCSEPhase.cpp:592
&gt;&gt;&gt; +                // then we must conservatively assume that it might change it. Of
&gt;&gt; 
&gt;&gt; I think this comment is missing a &quot;not&quot; somewhere.
&gt; 
&gt; I think it&apos;s correct. If child1 isn&apos;t matched then we must prevent CSE of GetPropertyStorage from working in case our child1 and their child1 was the same object but we didn&apos;t know it at compile time.

How about this:

// If we can cheaply prove this is a change to our object&apos;s storage, we can optimize and use its result.
if (node.child1() == child1)
    return index;

// Otherwise, this still *might* change our object&apos;s storage, and we don&apos;t know what it changes to.
return NoNode;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672649</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 12:53:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 152957 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152957&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGCSEPhase.cpp:592
&gt; &gt;&gt;&gt; +                // then we must conservatively assume that it might change it. Of
&gt; &gt;&gt; 
&gt; &gt;&gt; I think this comment is missing a &quot;not&quot; somewhere.
&gt; &gt; 
&gt; &gt; I think it&apos;s correct. If child1 isn&apos;t matched then we must prevent CSE of GetPropertyStorage from working in case our child1 and their child1 was the same object but we didn&apos;t know it at compile time.
&gt; 
&gt; How about this:
&gt; 
&gt; // If we can cheaply prove this is a change to our object&apos;s storage, we can optimize and use its result.
&gt; if (node.child1() == child1)
&gt;     return index;
&gt; 
&gt; // Otherwise, this still *might* change our object&apos;s storage, and we don&apos;t know what it changes to.
&gt; return NoNode;

That&apos;s slightly better though the second comment is likely clearer (and more inline with aliasing terminology) as: &quot;Otherwise, we currently can&apos;t prove that this doesn&apos;t change our object&apos;s storage, so we conservatively assume that it may change the storage pointer of any object, including ours.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672827</commentid>
    <comment_count>6</comment_count>
      <attachid>153099</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 15:17:34 -0700</bug_when>
    <thetext>Created attachment 153099
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672833</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 15:21:56 -0700</bug_when>
    <thetext>Attachment 153099 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:107:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:108:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672834</commentid>
    <comment_count>8</comment_count>
      <attachid>153101</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 15:22:01 -0700</bug_when>
    <thetext>Created attachment 153101
the patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672837</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 15:24:36 -0700</bug_when>
    <thetext>Attachment 153101 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:107:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:108:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673020</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-18 17:31:00 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/123052</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152957</attachid>
            <date>2012-07-18 00:58:01 -0700</date>
            <delta_ts>2012-07-18 15:17:34 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>inlinealloc_patch_1.diff</filename>
            <type>text/plain</type>
            <size>15155</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyOTI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEyLTA3LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBlbWl0IGlubGluZSBjb2RlIGZvciBwcm9wZXJ0eSBzdG9yYWdlIChyZSlhbGxv
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdv
cmsgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDU0VQaGFzZTo6cHV0U3RydWN0dXJlU3RvcmVFbGltaW5hdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmdldFByb3BlcnR5U3RvcmFnZUxvYWRFbGltaW5hdGlv
bik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAg
ICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICog
ZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9u
U3R1Yik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorCiAyMDEy
LTA3LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIDMy
LWJpdCBQdXRCeUlkIHRyYW5zaXRpb24gc3R1YiBwYXNzZXMgdGhlIHBheWxvYWQvdGFnIGFyZ3Vt
ZW50cyB0byBhIERGRyBvcGVyYXRpb24gaW4gdGhlIHdyb25nIG9yZGVyCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEy
MjkyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MzcsNiArMTQzNyw4IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0UHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
OgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihTcGVjQ2VsbCk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5j
bGVhcigpOyAvLyBUaGUgcmVzdWx0IGlzIG5vdCBhIEpTIHZhbHVlLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEy
MjkyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjcxLDcgKzIyNzEsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VB
Y2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFoYXNFeGl0U2l0ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVz
LmlzU2ltcGxlVHJhbnNpdGlvbigpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRT
dGF0dXMub2xkU3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gcHV0QnlJZFN0YXR1
cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQogICAgICAgICAgICAgICAgICAg
ICAgICAmJiBzdHJ1Y3R1cmVDaGFpbklzU3RpbGxWYWxpZCgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpcmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMu
b2xkU3RydWN0dXJlKCksCkBAIC0yMjkzLDIwICsyMjkyLDM4IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBBU1NFUlQocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1
cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaCgKLSAgICAgICAgICAgICAgICAgICAgUHV0U3RydWN0dXJl
LAotICAgICAgICAgICAgICAgICAgICBPcEluZm8oCi0gICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmFkZFN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpKSkpLAotICAgICAgICAg
ICAgICAgICAgICBiYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBOb2Rl
SW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSogdHJhbnNpdGlvbkRhdGEg
PQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFkZFN0cnVjdHVyZVRyYW5zaXRpb25EYXRh
KAorICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpKSk7
CisKKyAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKQorICAgICAgICAgICAgICAgICAgICAhPSBwdXRCeUlkU3RhdHVzLm5l
d1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBncm93aW5nIHRoZSBwcm9wZXJ0eSBz
dG9yYWdlIHRoZW4gaXQgbXVzdCBiZSBiZWNhdXNlIHdlJ3JlCisgICAgICAgICAgICAgICAgICAg
IC8vIHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0
dXMub2xkU3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5mbyh0cmFuc2l0aW9uRGF0
YSksIGJhc2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbkRh
dGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIGFkZFRvR3JhcGgoR2V0UHJv
cGVydHlTdG9yYWdlLCBiYXNlKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0
QnlJZFN0YXR1cy5vZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
b3JhZ2UgPSBiYXNlOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwg
YmFzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbkRhdGEpLCBiYXNl
KTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAogICAgICAg
ICAgICAgICAgICAgICBQdXRCeU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1f
Z3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDEyMjkyMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjUs
NiArNDY1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAg
ICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAg
ICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgICAgICBjYXNlIFJl
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC01ODEsNiArNTgzLDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQx
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAg
ICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgICAgICAgICAgaWYg
KG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5k
ZXg7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgY2FuJ3QgcHJvdmUgdGhhdCB0aGlzIGNoYW5n
ZXMgdGhlIHN0b3JhZ2Ugb2Ygb3VyIG9iamVjdCwKKyAgICAgICAgICAgICAgICAvLyB0aGVuIHdl
IG11c3QgY29uc2VydmF0aXZlbHkgYXNzdW1lIHRoYXQgaXQgbWlnaHQgY2hhbmdlIGl0LiBPZgor
ICAgICAgICAgICAgICAgIC8vIGNvdXJzZSwgd2UgY291bGQgdXNlIENGQSB0byBwcm92ZSB0aGF0
IG91ciBjaGlsZDEgYW5kIHRoZWlyCisgICAgICAgICAgICAgICAgLy8gY2hpbGQxIGFyZSBub3Qg
YWxpYXNlZC4gQnV0IHRoYXQncyBib3RoIHNvbWV3aGF0IGNvbXBsaWNhdGVkCisgICAgICAgICAg
ICAgICAgLy8gYW5kIHByb2JhYmx5IG5vdCB0aGF0IHByb2ZpdGFibGUuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0
QnlPZmZzZXQ6CiAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEyMjkyMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMz
LDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFB1dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Q
dXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBt
YWNybyhBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVEb2Vz
Tm90RXhpdCkgXAorICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKICAgICBtYWNybyhHZXRQcm9wZXJ0eVN0b3Jh
Z2UsIE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8o
R2V0QnlPZmZzZXQsIE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDEyMjkyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDksNyArNDQ5LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0UHJv
cGVydHlTdG9yYWdlOiAKLSAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7
CisgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgY2FzZSBB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY090aGVy
KTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRj
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNo
LmNwcAkocmV2aXNpb24gMTIyOTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUwLDcgKzg1MCw3IEBAIHN0YXRpYyB2b2lk
IGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgICAgIHN0dWJKaXQuYWRkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UGF5
bG9hZEVuZCksIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgIHN0dWJKaXQuc3ViUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIxKTsKICAgICAgICAg
ICAgIC8vIFdlIGhhdmUgc2NyYXRjaEdQUjEgPSBuZXcgc3RvcmFnZSwgc2NyYXRjaEdQUjMgPSBv
bGQgc3RvcmFnZSwgc2NyYXRjaEdQUjIgPSBhdmFpbGFibGUKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IG9mZnNldCA9IDA7IG9mZnNldCA8IG9sZFNpemU7IG9mZnNldCArPSBzaXplb2YoSlNWYWx1
ZSkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IG9mZnNldCA9IDA7IG9mZnNldCA8IG9sZFNp
emU7IG9mZnNldCArPSBzaXplb2Yodm9pZCopKSB7CiAgICAgICAgICAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIzLCBvZmZzZXQpLCBzY3Jh
dGNoR1BSMik7CiAgICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihzY3JhdGNoR1BSMiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIG9mZnNldCkpOwogICAgICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTU3LDYgKzM1
NTcsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIAorICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNo
R1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVCghbm9kZS5zdHJ1
Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpKTsKKyAgICAgICAgQVNTRVJUKGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSA9PSBub2RlLnN0
cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KTsKKyAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgIENvcGllZEFsbG9jYXRvciogY29waWVkQWxsb2NhdG9y
ID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5zdG9yYWdlQWxsb2NhdG9yKCk7CisKKyAgICAg
ICAgbV9qaXQubG9hZFB0cigmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcsIHNj
cmF0Y2hHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJy
YW5jaFN1YlB0cihKSVRDb21waWxlcjo6U2lnbmVkLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KG5ld1NpemUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQ
UiwgJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWluaW5nKTsKKyAgICAgICAgbV9qaXQu
bmVnUHRyKHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5hZGRQdHIoSklUQ29tcGlsZXI6OkFi
c29sdXRlQWRkcmVzcygmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2FkRW5kKSwgc2Ny
YXRjaEdQUik7CisgICAgICAgIG1faml0LnN1YlB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KG5ld1NpemUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaEdQUikpOworICAgICAgICAKKyAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAgICAgCisgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFN0
b3JhZ2VPcGVyYW5kIG9sZFN0b3JhZ2UodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gy
KHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwor
ICAgICAgICBHUFJSZWcgb2xkU3RvcmFnZUdQUiA9IG9sZFN0b3JhZ2UuZ3ByKCk7CisgICAgICAg
IEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgICAgICBHUFJSZWcgc2Ny
YXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93UGF0aDsKKyAgICAgICAgCisgICAgICAgIHNpemVfdCBvbGRTaXplID0g
bm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICBzaXplX3QgbmV3U2l6ZSA9
IG9sZFNpemUgKiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7CisgICAgICAgIEFTU0VSVChvbGRTaXpl
ICogMiA9PSBub2RlLnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQ29waWVkQWxsb2NhdG9yKiBjb3BpZWRBbGxvY2F0
b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLnN0b3JhZ2VBbGxvY2F0b3IoKTsKKyAgICAg
ICAgCisgICAgICAgIG1faml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UGF5
bG9hZEVuZCwgc2NyYXRjaEdQUjEpOworICAgICAgICBtX2ppdC5sb2FkUHRyKCZjb3BpZWRBbGxv
Y2F0b3ItPm1fY3VycmVudFJlbWFpbmluZywgc2NyYXRjaEdQUjIpOworICAgICAgICBtX2ppdC5z
dWJQdHIoc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbV9qaXQuc3ViUHRyKEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tMzIob2xkU2l6ZSksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgbmVlZEZ1bGxSZWFsbG9jID0gbV9qaXQuYnJhbmNoUHRyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgc2NyYXRjaEdQUjEsIG9sZFN0b3JhZ2VHUFIpOworICAgICAgICAK
KyAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFN1YlB0cihKSVRDb21waWxlcjo6
U2lnbmVkLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUgLSBvbGRTaXplKSwgc2Ny
YXRjaEdQUjIpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjIsICZjb3BpZWRB
bGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmVSZWFsbG9jID0gbV9qaXQuanVtcCgpOworICAgICAgICAKKyAgICAgICAgbmVlZEZ1bGxS
ZWFsbG9jLmxpbmsoJm1faml0KTsKKyAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5j
aFN1YlB0cihKSVRDb21waWxlcjo6U2lnbmVkLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5l
d1NpemUpLCBzY3JhdGNoR1BSMikpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
MiwgJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWluaW5nKTsKKyAgICAgICAgbV9qaXQu
bmVnUHRyKHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgbV9qaXQuYWRkUHRyKEpJVENvbXBpbGVyOjpB
YnNvbHV0ZUFkZHJlc3MoJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UGF5bG9hZEVuZCksIHNj
cmF0Y2hHUFIyKTsKKyAgICAgICAgbV9qaXQuc3ViUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
MzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25SZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoR1BSMiwgb2xkU2l6ZSkpOwor
ICAgICAgICAvLyBXZSBoYXZlIHNjcmF0Y2hHUFIyID0gbmV3IHN0b3JhZ2UsIHNjcmF0Y2hHUFIx
ID0gc2NyYXRjaAorICAgICAgICBmb3IgKHNpemVfdCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBvbGRT
aXplOyBvZmZzZXQgKz0gc2l6ZW9mKHZvaWQqKSkgeworICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhvbGRTdG9yYWdlR1BSLCBvZmZzZXQpLCBzY3JhdGNoR1BS
MSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSMSwgSklUQ29tcGlsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUjIsIG9mZnNldCkpOworICAgICAgICB9CisgICAgICAgIG1faml0
LnN0b3JlUHRyKHNjcmF0Y2hHUFIyLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKKyAgICAgICAgCisgICAgICAgIGRv
bmVSZWFsbG9jLmxpbmsoJm1faml0KTsKKyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG1fY29t
cGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIEdl
dFByb3BlcnR5U3RvcmFnZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJh
c2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksOCArMjU5LDggQEAgdm9pZCBTdHJ1Y3R1
cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogaW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5l
U3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJy
ZW50Q2FwYWNpdHkpCi0gICAgICAgIHJldHVybiA0OwotICAgIHJldHVybiBjdXJyZW50Q2FwYWNp
dHkgKiAyOworICAgICAgICByZXR1cm4gaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5OworICAgIHJl
dHVybiBjdXJyZW50Q2FwYWNpdHkgKiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7CiB9CiAKIHZvaWQg
U3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEyMjkyMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2
ICs1MywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICBj
bGFzcyBKU1N0cmluZzsKIAorICAgIC8vIFRoZSBvdXQtb2YtbGluZSBwcm9wZXJ0eSBzdG9yYWdl
IGNhcGFjaXR5IHRvIHVzZSB3aGVuIGZpcnN0IGFsbG9jYXRpbmcgb3V0LW9mLWxpbmUKKyAgICAv
LyBzdG9yYWdlLiBOb3RlIHRoYXQgYWxsIG9iamVjdHMgc3RhcnQgb3V0IHdpdGhvdXQgaGF2aW5n
IGFueSBvdXQtb2YtbGluZSBzdG9yYWdlOworICAgIC8vIHRoaXMgY29tZXMgaW50byBwbGF5IG9u
bHkgb24gdGhlIGZpcnN0IHByb3BlcnR5IHN0b3JlIHRoYXQgZXhoYXVzdHMgaW5saW5lIHN0b3Jh
Z2UuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSA9
IDQ7CisKKyAgICAvLyBUaGUgZmFjdG9yIGJ5IHdoaWNoIHRvIGdyb3cgb3V0LW9mLWxpbmUgc3Rv
cmFnZSB3aGVuIGl0IGlzIGV4aGF1c3RlZCwgYWZ0ZXIgdGhlCisgICAgLy8gaW5pdGlhbCBhbGxv
Y2F0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdXRPZkxpbmVHcm93dGhGYWN0b3Ig
PSAyOworCiAgICAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGlj
OgogICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153099</attachid>
            <date>2012-07-18 15:17:34 -0700</date>
            <delta_ts>2012-07-18 15:22:01 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inlinealloc_patch_2.diff</filename>
            <type>text/plain</type>
            <size>28409</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIzMDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDEyLTA3LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBlbWl0IGlubGluZSBjb2RlIGZvciBwcm9wZXJ0eSBzdG9yYWdlIChyZSlhbGxv
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgYWRkcyB0d28gbmV3IG9wcyB0byB0aGUgREZHIElSOiBBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSBhbmQKKyAgICAgICAgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZS4gSXQgZW5hYmxlcyB0aGVz
ZSB0byBpbnRlcmFjdCBwcm9wZXJseSB3aXRoCisgICAgICAgIENTRSBzbyB0aGF0IGEgR2V0UHJv
cGVydHlTdG9yYWdlIG9uIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZQorICAgICAgICBvYnZp
b3VzbHkgZG9uZSBhIChSZSlBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSB3aWxsIHJlc3VsdCBpbiB0
aGUKKyAgICAgICAgR2V0UHJvcGVydHlTdG9yYWdlIGJlaW5nIGVsaW1pbmF0ZWQuIE90aGVyIHRo
YW4gdGhhdCwgdGhlIGNvZGUKKyAgICAgICAgZW1pdHRlZCBmb3IgdGhlc2Ugb3BzIGlzIGlkZW50
aWNhbCB0byB0aGUgY29kZSB3ZSB3ZXJlIGVtaXR0aW5nIGluCisgICAgICAgIHRoZSBjb3JyZXNw
b25kaW5nIFB1dEJ5SWQgc3R1Yi4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwdXRTdHJ1Y3R1cmVTdG9yZUVsaW1pbmF0aW9uKToK
KyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0UHJvcGVydHlTdG9yYWdlTG9hZEVsaW1p
bmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc1N0cnVjdHVyZVRyYW5zaXRpb25EYXRhKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoREZHKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKFNwZWN1
bGF0aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDKToKKwogMjAxMi0wNy0xNyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyAzMi1iaXQgUHV0QnlJZCB0cmFuc2l0
aW9uIHN0dWIgcGFzc2VzIHRoZSBwYXlsb2FkL3RhZyBhcmd1bWVudHMgdG8gYSBERkcgb3BlcmF0
aW9uIGluIHRoZSB3cm9uZyBvcmRlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDM3LDYgKzE0MzcsOCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEdldFByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
OgorICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KGZhbHNlKTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsgLy8gVGhlIHJlc3Vs
dCBpcyBub3QgYSBKUyB2YWx1ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI3MSw3ICsyMjcxLDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3Rv
cmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhpdFNpdGUKICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24o
KQotICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgp
LT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlQ2hh
aW5Jc1N0aWxsVmFsaWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLApAQCAt
MjI5MywyMCArMjI5MiwzOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRj
aHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoCi0gICAgICAgICAgICAgICAgICAgIFB1dFN0cnVjdHVyZSwKLSAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hZGRTdHJ1Y3R1cmVU
cmFuc2l0aW9uRGF0YSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVUcmFu
c2l0aW9uRGF0YSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1
cy5vbGRTdHJ1Y3R1cmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJ
ZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSkpKSwKLSAgICAgICAgICAgICAgICAgICAgYmFzZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFn
ZTsKLSAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZz
ZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBh
ZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlVHJhbnNpdGlvbkRhdGEqIHRyYW5zaXRpb25EYXRhID0KKyAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAgICAgICAgICAg
aWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkKKyAg
ICAgICAgICAgICAgICAgICAgIT0gcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgd2UncmUgZ3Jvd2luZyB0aGUgcHJvcGVydHkgc3RvcmFnZSB0aGVuIGl0IG11c3Qg
YmUgYmVjYXVzZSB3ZSdyZQorICAgICAgICAgICAgICAgICAgICAvLyBzdG9yaW5nIGludG8gdGhl
IG91dC1vZi1saW5lIHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghaXNJbmxp
bmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbkRhdGEpLCBiYXNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3Rv
cmFnZSA9IGFkZFRvR3JhcGgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZSwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlLCBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSkp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFN0
cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgYmFzZSk7CisgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICAgICAgUHV0QnlP
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vz
c0RhdGEuc2l6ZSgpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhh
c2UuY3BwCShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY1LDYgKzQ2NSw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdPYmplY3Q6
CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CisgICAgICAgICAgICBjYXNlIEFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBkZWZhdWx0OgpAQCAtNTgxLDYgKzU4MywxNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGlmIChub2RlLmNoaWxkMSgpID09IGNoaWxkMSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBj
YXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgICAgIC8vIElmIHdlIGNhbiBjaGVhcGx5IHBy
b3ZlIHRoaXMgaXMgYSBjaGFuZ2UgdG8gb3VyIG9iamVjdCdzIHN0b3JhZ2UsIHdlCisgICAgICAg
ICAgICAgICAgLy8gY2FuIG9wdGltaXplIGFuZCB1c2UgaXRzIHJlc3VsdC4KKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS5jaGlsZDEoKSA9PSBjaGlsZDEpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBpbmRleDsKKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGN1cnJlbnRseSBj
YW4ndCBwcm92ZSB0aGF0IHRoaXMgZG9lc24ndCBjaGFuZ2Ugb3VyIG9iamVjdCdzCisgICAgICAg
ICAgICAgICAgLy8gc3RvcmFnZSwgc28gd2UgY29uc2VydmF0aXZlbHkgYXNzdW1lIHRoYXQgaXQg
bWF5IGNoYW5nZSB0aGUgc3RvcmFnZQorICAgICAgICAgICAgICAgIC8vIHBvaW50ZXIgb2YgYW55
IG9iamVjdCwgaW5jbHVkaW5nIG91cnMuCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgICAg
ICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMyLDcgKzYzMiwxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAK
ICAgICBib29sIGhhc1N0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBvcCgpID09IFB1dFN0cnVjdHVyZSB8fCBvcCgpID09IFBoYW50b21QdXRTdHJ1Y3R1cmU7
CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKKyAg
ICAgICAgY2FzZSBQaGFudG9tUHV0U3RydWN0dXJlOgorICAgICAgICBjYXNlIEFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlOgorICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBTdHJ1Y3R1cmVUcmFuc2l0
aW9uRGF0YSYgc3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTIyOTIxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMz
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0
U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbVB1dFN0cnVj
dHVyZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVEb2VzTm90RXhpdCkgXAorICAgIG1hY3JvKEFs
bG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZURvZXNOb3RFeGl0
IHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKKyAgICBtYWNybyhSZWFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZURvZXNOb3RFeGl0IHwgTm9kZVJlc3VsdFN0b3Jh
Z2UpIFwKICAgICBtYWNybyhHZXRQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVSZXN1bHRTdG9yYWdlKSBc
CiAgICAgbWFjcm8oR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0QnlPZmZzZXQsIE5vZGVSZXN1bHRK
UykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb3BpZWRTcGFj
ZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZH
UmVwYXRjaC5oIgogI2luY2x1ZGUgIkRGR1RodW5rcy5oIgpAQCAtODk0LDcgKzg5NSw3IEBAIHN0
YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGUKICAgICByZXR1cm4gZ2xvYmFs
RGF0YS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3Ip
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogfQogCi1pbmxpbmUgdm9pZCogbGlua0ZvcihF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK2lubGlu
ZSBjaGFyKiBsaW5rRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZy
YW1lKCk7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKQEAgLTkwMyw3ICs5MDQsNyBAQCBpbmxpbmUgdm9pZCogbGlua0ZvcihFeGVjU3RhdGUqIGV4
ZWNDYWxsCiAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZXhlY0NhbGxlZS0+Y2FsbGVlQXNW
YWx1ZSgpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9u
KGNhbGxlZUFzVmFsdWUpOwogICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCi0gICAgICAg
IHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGhhbmRsZUhvc3RDYWxsKGV4
ZWNDYWxsZWUsIGNhbGxlZUFzVmFsdWUsIGtpbmQpKTsKIAogICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwogICAgIGV4ZWND
YWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKQEAgLTkxOCw3
ICs5MTksNyBAQCBpbmxpbmUgdm9pZCogbGlua0ZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsCiAgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVj
Q2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAg
ICAgICAgICAgIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihleGVjKTsKLSAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5nZXRDVElTdHViKHRocm93
RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZ2xvYmFs
RGF0YS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3Ip
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICAgICAgfQogICAgICAgICBjb2RlQmxv
Y2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKICAg
ICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKQEAgLTkzMSwyMCAr
OTMyLDIwIEBAIGlubGluZSB2b2lkKiBsaW5rRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGwKICAgICAg
ICAgY2FsbExpbmtJbmZvLnNldFNlZW4oKTsKICAgICBlbHNlCiAgICAgICAgIGRmZ0xpbmtGb3Io
ZXhlY0NhbGxlZSwgY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0ciwga2lu
ZCk7Ci0gICAgcmV0dXJuIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKIH0K
IAotdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChFeGVjU3RhdGUqIGV4ZWND
YWxsZWUpCitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSkKIHsKICAgICByZXR1cm4gbGlua0ZvcihleGVjQ2FsbGVlLCBDb2RlRm9yQ2Fs
bCk7CiB9CiAKLXZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnVjdChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUpCitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25z
dHJ1Y3QoRXhlY1N0YXRlKiBleGVjQ2FsbGVlKQogewogICAgIHJldHVybiBsaW5rRm9yKGV4ZWND
YWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCi1pbmxpbmUgdm9pZCogdmlydHVhbEZvcihF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK2lubGlu
ZSBjaGFyKiB2aXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxl
ckZyYW1lKCk7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKQEAgLTk1Myw3ICs5NTQsNyBAQCBpbmxpbmUgdm9pZCogdmlydHVhbEZvcihFeGVjU3Rh
dGUqIGV4ZWNDCiAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZXhlY0NhbGxlZS0+Y2FsbGVl
QXNWYWx1ZSgpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0
aW9uKGNhbGxlZUFzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FsbGVlQXNGdW5jdGlvbkNl
bGwpKQotICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNW
YWx1ZSwga2luZCk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihoYW5k
bGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBraW5kKSk7CiAgICAgCiAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rp
b25DZWxsKTsKICAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGZ1bmN0aW9uLT5zY29wZVVu
Y2hlY2tlZCgpKTsKQEAgLTk2MywxOCArOTY0LDE4IEBAIGlubGluZSB2b2lkKiB2aXJ0dWFsRm9y
KEV4ZWNTdGF0ZSogZXhlY0MKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGZ1bmN0aW9uLT5zY29wZSgpLCBraW5kKTsK
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uID0gZXJyb3I7Ci0gICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1
Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGdsb2JhbERhdGEtPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2Vu
ZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcihr
aW5kKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKLXZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
VmlydHVhbENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlKQorY2hhciogREZHX09QRVJBVElPTiBv
cGVyYXRpb25WaXJ0dWFsQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUpCiB7ICAgIAogICAgIHJl
dHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDYWxsKTsKIH0KIAotdm9pZCogREZH
X09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSkKK2NoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUpCiB7CiAgICAgcmV0dXJuIHZpcnR1YWxGb3IoZXhlY0NhbGxlZSwgQ29k
ZUZvckNvbnN0cnVjdCk7CiB9CkBAIC0xMjQxLDYgKzEyNDIsMjQgQEAgdm9pZCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdAogICAgIGJhc2UtPnB1dERpcmVjdE9mZnNldChnbG9i
YWxEYXRhLCBvZmZzZXQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCitjaGFyKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBh
Y2l0eShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIHZvaWQqIHJlc3VsdDsKKyAgICBpZiAoIWdsb2JhbERh
dGEuaGVhcC50cnlBbGxvY2F0ZVN0b3JhZ2UoaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5ICogc2l6
ZW9mKEpTVmFsdWUpLCAmcmVzdWx0KSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKK30KKworY2hhciogREZHX09QRVJBVElPTiBv
cGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBu
ZXdTaXplKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERh
dGEoKTsKKyAgICB2b2lkKiByZXN1bHQ7CisgICAgaWYgKCFnbG9iYWxEYXRhLmhlYXAudHJ5QWxs
b2NhdGVTdG9yYWdlKG5ld1NpemUsICZyZXN1bHQpKQorICAgICAgICBDUkFTSCgpOworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOworfQorCiBkb3VibGUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QgYSwgaW50MzJfdCBiKQogewogICAg
IHJldHVybiBmbW9kKGEsIGIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgJKHJldmlzaW9uIDEyMjkyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDggQEAgdHlw
ZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdAogdHlwZWRlZiB2b2lkIERGR19P
UEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSlBQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgq
Vl9ERkdPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVuY29kZWRK
U1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fVyko
V2F0Y2hwb2ludFNldCopOwotdHlwZWRlZiB2b2lkKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVy
YXRpb25fRSkoRXhlY1N0YXRlKik7Cit0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RG
R09wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKK3R5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAo
KlBfREZHT3BlcmF0aW9uX0VTKShFeGVjU3RhdGUqLCBzaXplX3QpOwogCiAvLyBUaGVzZSByb3V0
aW5lcyBhcmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Yg
b3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBKSVQuCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKQEAgLTE2MiwxMCArMTYz
LDEwIEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVHcmUKIHNpemVfdCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBz
aXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
IFdURl9JTlRFUk5BTDsKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci12b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
blZpcnR1YWxDYWxsKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKLXZvaWQqIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwotdm9pZCogREZH
X09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29uc3RydWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRF
Uk5BTDsKLXZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnVjdChFeGVjU3Rh
dGUqKSBXVEZfSU5URVJOQUw7CitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxD
YWxsKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKK2NoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uTGlua0NhbGwoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOworY2hhciogREZHX09QRVJBVElP
TiBvcGVyYXRpb25WaXJ0dWFsQ29uc3RydWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKK2No
YXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnVjdChFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogREZH
X09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbmxpbmVkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIElu
bGluZUNhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKQEAgLTE4MSw2ICsxODIsOCBAQCBkb3VibGUg
REZHX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzCiBzaXplX3QgREZHX09QRVJBVElPTiBv
cGVyYXRpb25Jc09iamVjdChFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IERG
R19PUEVSQVRJT04gb3BlcmF0aW9uSXNGdW5jdGlvbihFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmlu
aXNoUHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQs
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkFsbG9jYXRlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFeGVjU3RhdGUq
KSBXVEZfSU5URVJOQUw7CitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKEV4ZWNTdGF0ZSosIHNpemVfdCBuZXdTaXplKSBXVEZfSU5URVJOQUw7CiAK
IC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbG9va3VwIGFuIGV4Y2VwdGlvbiBoYW5kZXIsIGtl
eWVkIGJ5IGZhdWx0TG9jYXRpb24sIHdoaWNoIGlzCiAvLyB0aGUgcmV0dXJuIGxvY2F0aW9uIGZy
b20gb25lIG9mIHRoZSBjYWxscyBvdXQgdG8gb25lIG9mIHRoZSBoZWxwZXIgb3BlcmF0aW9ucyBh
Ym92ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMjI5MjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDcgKzQ0OSw5IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldFByb3BlcnR5U3RvcmFnZTogCi0gICAgICAg
IGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogeworICAgICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6
CisgICAgICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZTogewogICAgICAgICAgICAg
Y2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPdGhlcik7CiAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMjkyMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1MCw3ICs4NTAsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIo
CiAgICAgICAgICAgICBzdHViSml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRy
ZXNzKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFBheWxvYWRFbmQpLCBzY3JhdGNoR1BSMSk7
CiAgICAgICAgICAgICBzdHViSml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KG5ld1NpemUpLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHNjcmF0Y2hH
UFIxID0gbmV3IHN0b3JhZ2UsIHNjcmF0Y2hHUFIzID0gb2xkIHN0b3JhZ2UsIHNjcmF0Y2hHUFIy
ID0gYXZhaWxhYmxlCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBvZmZzZXQgPSAwOyBvZmZzZXQg
PCBvbGRTaXplOyBvZmZzZXQgKz0gc2l6ZW9mKEpTVmFsdWUpKSB7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBvbGRTaXplOyBvZmZzZXQgKz0gc2l6ZW9mKHZv
aWQqKSkgewogICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSMywgb2Zmc2V0KSwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAg
ICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHNjcmF0Y2hHUFIxLCBvZmZzZXQpKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2
aXNpb24gMTIyOTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0Miw2ICszNTQyLDE0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKKyAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgICAgICBj
b21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uobm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgIGNvbXBp
bGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAg
ICAgCiAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBiYXNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIyOTIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzU1Nyw2ICszNTU3LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlOgorICAgICAgICBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2Uobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIFJlYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgCiAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0
b3JhZ2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNo
aWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBiYXNlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAxMjI5MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEzNyw2ICszMTM3LDg1IEBAIGJvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBFeGVjKE4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUm
IG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgCisgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKKyAgICAgICAgCisgICAgQVNTRVJUKCFub2RlLnN0cnVjdHVyZVRyYW5zaXRpb25E
YXRhKCkucHJldmlvdXNTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIEFTU0VS
VChpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgPT0gbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0
YSgpLm5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgc2l6ZV90IG5ld1Np
emUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgQ29w
aWVkQWxsb2NhdG9yKiBjb3BpZWRBbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFw
LnN0b3JhZ2VBbGxvY2F0b3IoKTsKKworICAgIG1faml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRv
ci0+bV9jdXJyZW50UmVtYWluaW5nLCBzY3JhdGNoR1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aCA9IG1faml0LmJyYW5jaFN1YlB0cihKSVRDb21waWxlcjo6U2lnbmVkLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUpLCBzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5z
dG9yZVB0cihzY3JhdGNoR1BSLCAmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcp
OworICAgIG1faml0Lm5lZ1B0cihzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5hZGRQdHIoSklUQ29t
cGlsZXI6OkFic29sdXRlQWRkcmVzcygmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2Fk
RW5kKSwgc2NyYXRjaEdQUik7CisgICAgbV9qaXQuc3ViUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIpOworICAgICAgICAKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcigKKyAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25B
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHksIHNjcmF0Y2hHUFIpKTsK
KyAgICAgICAgCisgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7Cisg
ICAgICAgIAorICAgIHN0b3JhZ2VSZXN1bHQoc2NyYXRjaEdQUiwgbV9jb21waWxlSW5kZXgpOwor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShOb2RlJiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CisgICAgU3RvcmFnZU9wZXJhbmQgb2xkU3RvcmFnZSh0aGlzLCBub2RlLmNo
aWxkMigpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gyKHRoaXMpOworICAgICAgICAKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CisgICAgR1BSUmVnIG9sZFN0b3JhZ2VHUFIgPSBvbGRTdG9yYWdlLmdwcigpOworICAg
IEdQUlJlZyBzY3JhdGNoR1BSMSA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNo
R1BSMiA9IHNjcmF0Y2gyLmdwcigpOworICAgICAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd1BhdGg7CisgICAgICAgIAorICAgIHNpemVfdCBvbGRTaXplID0gbm9kZS5zdHJ1Y3R1
cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICogc2l6ZW9mKEpTVmFsdWUpOworICAgIHNpemVfdCBuZXdTaXplID0gb2xkU2l6ZSAqIG91dE9m
TGluZUdyb3d0aEZhY3RvcjsKKyAgICBBU1NFUlQobmV3U2l6ZSA9PSBub2RlLnN0cnVjdHVyZVRy
YW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9m
KEpTVmFsdWUpKTsKKyAgICBDb3BpZWRBbGxvY2F0b3IqIGNvcGllZEFsbG9jYXRvciA9ICZtX2pp
dC5nbG9iYWxEYXRhKCktPmhlYXAuc3RvcmFnZUFsbG9jYXRvcigpOworICAgICAgICAKKyAgICBt
X2ppdC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFBheWxvYWRFbmQsIHNjcmF0
Y2hHUFIxKTsKKyAgICBtX2ppdC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJl
bWFpbmluZywgc2NyYXRjaEdQUjIpOworICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BSMiwgc2Ny
YXRjaEdQUjEpOworICAgIG1faml0LnN1YlB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG9s
ZFNpemUpLCBzY3JhdGNoR1BSMSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZEZ1bGxSZWFs
bG9jID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc2NyYXRjaEdQUjEs
IG9sZFN0b3JhZ2VHUFIpOworICAgIAorICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hT
dWJQdHIoSklUQ29tcGlsZXI6OlNpZ25lZCwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihuZXdT
aXplIC0gb2xkU2l6ZSksIHNjcmF0Y2hHUFIyKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRj
aEdQUjIsICZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgbV9qaXQu
bW92ZShvbGRTdG9yYWdlR1BSLCBzY3JhdGNoR1BSMik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
ZG9uZVJlYWxsb2MgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIAorICAgIG5lZWRGdWxsUmVhbGxv
Yy5saW5rKCZtX2ppdCk7CisgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFN1YlB0cihK
SVRDb21waWxlcjo6U2lnbmVkLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUpLCBz
Y3JhdGNoR1BSMikpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIyLCAmY29waWVkQWxs
b2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcpOworICAgIG1faml0Lm5lZ1B0cihzY3JhdGNoR1BS
Mik7CisgICAgbV9qaXQuYWRkUHRyKEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MoJmNvcGll
ZEFsbG9jYXRvci0+bV9jdXJyZW50UGF5bG9hZEVuZCksIHNjcmF0Y2hHUFIyKTsKKyAgICBtX2pp
dC5zdWJQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwgc2NyYXRjaEdQUjIp
OworICAgICAgICAKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgc2xvd1BhdGhD
YWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgc2Ny
YXRjaEdQUjIsIG5ld1NpemUpKTsKKyAgICAvLyBXZSBoYXZlIHNjcmF0Y2hHUFIyID0gbmV3IHN0
b3JhZ2UsIHNjcmF0Y2hHUFIxID0gc2NyYXRjaAorICAgIGZvciAoc2l6ZV90IG9mZnNldCA9IDA7
IG9mZnNldCA8IG9sZFNpemU7IG9mZnNldCArPSBzaXplb2Yodm9pZCopKSB7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob2xkU3RvcmFnZUdQUiwgb2Zmc2V0KSwg
c2NyYXRjaEdQUjEpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSMSwgSklUQ29t
cGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUjIsIG9mZnNldCkpOworICAgIH0KKyAgICBtX2ppdC5z
dG9yZVB0cihzY3JhdGNoR1BSMiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CisgICAgICAgIAorICAgIGRvbmVSZWFs
bG9jLmxpbmsoJm1faml0KTsKKyAgICAgICAgCisgICAgc3RvcmFnZVJlc3VsdChzY3JhdGNoR1BS
MiwgbV9jb21waWxlSW5kZXgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkocmV2aXNpb24gMTIyOTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUxLDYgKzExNTEsMTYgQEAgcHVi
bGljOgogICAgIC8vIG1hY2hpbmUgcmVnaXN0ZXJzLCBhbmQgZGVsZWdhdGUgdGhlIGNhbGxpbmcg
Y29udmVudGlvbiBzcGVjaWZpYwogICAgIC8vIGRlY2lzaW9uIGFzIHRvIGhvdyB0byBmaWxsIHRo
ZSByZWdzaXRlcnMgdG8gc2V0dXBBcmd1bWVudHMqIG1ldGhvZHMuCiAjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0Ug
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNFeGVjU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0VTIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzaXplKSk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9F
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzRXhlY1N0YXRlKCk7CkBAIC0xNDEzLDYgKzE0MjMsMTYgQEAgcHVibGljOgogI2RlZmlu
ZSBFQUJJXzMyQklUX0RVTU1ZX0FSRwogI2VuZGlmCiAKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZH
T3BlcmF0aW9uX0VTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgc2l6ZV90IHNpemUpCisgICAg
eworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihzaXplKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihaX0RGR09wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
RlBSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CkBA
IC0yMDQ4LDYgKzIwNjgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjb21waWxlU3RyaWN0
RXEoTm9kZSYpOwogICAgIAorICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KE5vZGUmKTsKKyAgICB2b2lkIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUm
KTsKKyAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRDaGFyQ29kZUF0KE5vZGUmKTsKICAgICB2b2lk
IGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUmKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjI5MjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTksOCArMjU5LDggQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAo
SgogaW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJy
ZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCi0gICAgICAgIHJldHVy
biA0OwotICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOworICAgICAgICByZXR1cm4gaW5p
dGlhbE91dE9mTGluZUNhcGFjaXR5OworICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiBvdXRP
ZkxpbmVHcm93dGhGYWN0b3I7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2Fw
YWNpdHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHJldmlzaW9uIDEyMjkyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICBjbGFzcyBKU1N0cmluZzsKIAorICAgIC8vIFRo
ZSBvdXQtb2YtbGluZSBwcm9wZXJ0eSBzdG9yYWdlIGNhcGFjaXR5IHRvIHVzZSB3aGVuIGZpcnN0
IGFsbG9jYXRpbmcgb3V0LW9mLWxpbmUKKyAgICAvLyBzdG9yYWdlLiBOb3RlIHRoYXQgYWxsIG9i
amVjdHMgc3RhcnQgb3V0IHdpdGhvdXQgaGF2aW5nIGFueSBvdXQtb2YtbGluZSBzdG9yYWdlOwor
ICAgIC8vIHRoaXMgY29tZXMgaW50byBwbGF5IG9ubHkgb24gdGhlIGZpcnN0IHByb3BlcnR5IHN0
b3JlIHRoYXQgZXhoYXVzdHMgaW5saW5lIHN0b3JhZ2UuCisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSA9IDQ7CisKKyAgICAvLyBUaGUgZmFjdG9yIGJ5
IHdoaWNoIHRvIGdyb3cgb3V0LW9mLWxpbmUgc3RvcmFnZSB3aGVuIGl0IGlzIGV4aGF1c3RlZCwg
YWZ0ZXIgdGhlCisgICAgLy8gaW5pdGlhbCBhbGxvY2F0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBvdXRPZkxpbmVHcm93dGhGYWN0b3IgPSAyOworCiAgICAgY2xhc3MgU3RydWN0dXJl
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153101</attachid>
            <date>2012-07-18 15:22:01 -0700</date>
            <delta_ts>2012-07-18 15:26:30 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inlinealloc_patch_3.diff</filename>
            <type>text/plain</type>
            <size>27400</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIzMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDEyLTA3LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBlbWl0IGlubGluZSBjb2RlIGZvciBwcm9wZXJ0eSBzdG9yYWdlIChyZSlhbGxv
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgYWRkcyB0d28gbmV3IG9wcyB0byB0aGUgREZHIElSOiBBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSBhbmQKKyAgICAgICAgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZS4gSXQgZW5hYmxlcyB0aGVz
ZSB0byBpbnRlcmFjdCBwcm9wZXJseSB3aXRoCisgICAgICAgIENTRSBzbyB0aGF0IGEgR2V0UHJv
cGVydHlTdG9yYWdlIG9uIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZQorICAgICAgICBvYnZp
b3VzbHkgZG9uZSBhIChSZSlBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSB3aWxsIHJlc3VsdCBpbiB0
aGUKKyAgICAgICAgR2V0UHJvcGVydHlTdG9yYWdlIGJlaW5nIGVsaW1pbmF0ZWQuIE90aGVyIHRo
YW4gdGhhdCwgdGhlIGNvZGUKKyAgICAgICAgZW1pdHRlZCBmb3IgdGhlc2Ugb3BzIGlzIGlkZW50
aWNhbCB0byB0aGUgY29kZSB3ZSB3ZXJlIGVtaXR0aW5nIGluCisgICAgICAgIHRoZSBjb3JyZXNw
b25kaW5nIFB1dEJ5SWQgc3R1Yi4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwdXRTdHJ1Y3R1cmVTdG9yZUVsaW1pbmF0aW9uKToK
KyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0UHJvcGVydHlTdG9yYWdlTG9hZEVsaW1p
bmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc1N0cnVjdHVyZVRyYW5zaXRpb25EYXRhKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpuZXh0T3V0T2ZM
aW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAoSlNDKToKKwogMjAxMi0wNy0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIERGRyAzMi1iaXQgUHV0QnlJZCB0cmFuc2l0aW9uIHN0dWIgc3RvcmFnZSBy
ZWFsbG9jYXRpb24gY2FzZSBjb3BpZXMgdGhlIGZpcnN0IHBvaW50ZXIgb2YgZWFjaCBKU1ZhbHVl
IGluc3RlYWQgb2YgdGhlIHdob2xlIEpTVmFsdWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTIzMDI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQzNyw2ICsxNDM3LDggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2ln
bmVkIGluZAogICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6CisgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZToKKyAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFNwZWNDZWxsKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7IC8vIFRo
ZSByZXN1bHQgaXMgbm90IGEgSlMgdmFsdWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTIzMDI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNzEsNyArMjI3MSw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBw
ZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc0V4aXRT
aXRlCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVUcmFu
c2l0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVj
dHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUo
KSwKQEAgLTIyOTMsMjAgKzIyOTIsMzggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIEFTU0VSVChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT50cmFuc2l0
aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgICAgICBQdXRTdHJ1Y3R1cmUsCi0gICAgICAgICAg
ICAgICAgICAgIE9wSW5mbygKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYWRkU3Ry
dWN0dXJlVHJhbnNpdGlvbkRhdGEoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0
dXJlVHJhbnNpdGlvbkRhdGEoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dEJ5
SWRTdGF0dXMub2xkU3RydWN0dXJlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkpKSksCi0gICAgICAgICAgICAgICAgICAgIGJh
c2UpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0
eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0
dXMub2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNl
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKiB0cmFuc2l0aW9uRGF0YSA9CisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguYWRkU3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoCisgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkpKTsKKworICAgICAgICAg
ICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0
eSgpCisgICAgICAgICAgICAgICAgICAgICE9IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcgdGhlIHByb3BlcnR5IHN0b3JhZ2UgdGhlbiBp
dCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmluZyBp
bnRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlLgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IWlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgYmFzZSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5mbyh0cmFuc2l0aW9uRGF0YSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFzZSwgYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2Us
IGJhc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChwdXRCeUlkU3RhdHVzLm9m
ZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFuc2l0aW9uRGF0YSksIGJhc2UpOworICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAg
IFB1dEJ5T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0b3Jh
Z2VBY2Nlc3NEYXRhLnNpemUoKSksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTIzMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSw2ICs0NjUsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3
T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgICAgICAgICAgY2FzZSBB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgIGNhc2UgUmVhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZToKICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTU4MSw2ICs1ODMsMTcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBpZiAobm9kZS5jaGlsZDEoKSA9PSBjaGlsZDEpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgIGNhc2UgUmVh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBjYW4gY2hl
YXBseSBwcm92ZSB0aGlzIGlzIGEgY2hhbmdlIHRvIG91ciBvYmplY3QncyBzdG9yYWdlLCB3ZQor
ICAgICAgICAgICAgICAgIC8vIGNhbiBvcHRpbWl6ZSBhbmQgdXNlIGl0cyByZXN1bHQuCisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBjdXJy
ZW50bHkgY2FuJ3QgcHJvdmUgdGhhdCB0aGlzIGRvZXNuJ3QgY2hhbmdlIG91ciBvYmplY3Qncwor
ICAgICAgICAgICAgICAgIC8vIHN0b3JhZ2UsIHNvIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSB0
aGF0IGl0IG1heSBjaGFuZ2UgdGhlIHN0b3JhZ2UKKyAgICAgICAgICAgICAgICAvLyBwb2ludGVy
IG9mIGFueSBvYmplY3QsIGluY2x1ZGluZyBvdXJzLgorICAgICAgICAgICAgICAgIHJldHVybiBO
b05vZGU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0Ogog
ICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkocmV2aXNpb24gMTIzMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzMiw3ICs2MzIsMTUgQEAgc3RydWN0IE5v
ZGUgewogCiAgICAgYm9vbCBoYXNTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gb3AoKSA9PSBQdXRTdHJ1Y3R1cmUgfHwgb3AoKSA9PSBQaGFudG9tUHV0U3Ry
dWN0dXJlOworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1
cmU6CisgICAgICAgIGNhc2UgUGhhbnRvbVB1dFN0cnVjdHVyZToKKyAgICAgICAgY2FzZSBBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgU3RydWN0dXJl
VHJhbnNpdGlvbkRhdGEmIHN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEyMzAyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMz
LDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFB1dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Q
dXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBt
YWNybyhBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVEb2Vz
Tm90RXhpdCB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCisgICAgbWFjcm8oUmVhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVEb2VzTm90RXhpdCB8IE5vZGVSZXN1
bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0UHJvcGVydHlTdG9yYWdlLCBOb2RlUmVzdWx0U3Rv
cmFnZSkgXAogICAgIG1hY3JvKEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKEdldEJ5T2Zmc2V0LCBOb2Rl
UmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTIzMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29w
aWVkU3BhY2VJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1
ZGUgIkRGR1JlcGF0Y2guaCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKQEAgLTg5NCw3ICs4OTUs
NyBAQCBzdGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJu
IGdsb2JhbERhdGEtPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2Vu
ZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKIH0KIAotaW5saW5lIHZvaWQqIGxp
bmtGb3IoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CitpbmxpbmUgY2hhciogbGlua0ZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5j
YWxsZXJGcmFtZSgpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7CkBAIC05MDMsNyArOTA0LDcgQEAgaW5saW5lIHZvaWQqIGxpbmtGb3IoRXhlY1N0
YXRlKiBleGVjQ2FsbAogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNh
bGxlZUFzVmFsdWUoKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNG
dW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKICAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQot
ICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwg
a2luZCk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihoYW5kbGVIb3N0
Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBraW5kKSk7CiAKICAgICBKU0Z1bmN0aW9u
KiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKICAg
ICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CkBA
IC05MTgsNyArOTE5LDcgQEAgaW5saW5lIHZvaWQqIGxpbmtGb3IoRXhlY1N0YXRlKiBleGVjQ2Fs
bAogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVG
b3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKICAgICAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgICAgICBnbG9iYWxEYXRhLT5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1
Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGdsb2JhbERhdGEtPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2Vu
ZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Y29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2lu
ZCk7CiAgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCkBAIC05
MzEsMjAgKzkzMiwyMCBAQCBpbmxpbmUgdm9pZCogbGlua0ZvcihFeGVjU3RhdGUqIGV4ZWNDYWxs
CiAgICAgICAgIGNhbGxMaW5rSW5mby5zZXRTZWVuKCk7CiAgICAgZWxzZQogICAgICAgICBkZmdM
aW5rRm9yKGV4ZWNDYWxsZWUsIGNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQ
dHIsIGtpbmQpOwotICAgIHJldHVybiBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CiB9CiAKLXZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlKQorY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUpCiB7CiAgICAgcmV0dXJuIGxpbmtGb3IoZXhlY0NhbGxlZSwgQ29k
ZUZvckNhbGwpOwogfQogCi12b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1
Y3QoRXhlY1N0YXRlKiBleGVjQ2FsbGVlKQorY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25M
aW5rQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSkKIHsKICAgICByZXR1cm4gbGlua0Zv
cihleGVjQ2FsbGVlLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KIAotaW5saW5lIHZvaWQqIHZpcnR1
YWxGb3IoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CitpbmxpbmUgY2hhciogdmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVl
LT5jYWxsZXJGcmFtZSgpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CkBAIC05NTMsNyArOTU0LDcgQEAgaW5saW5lIHZvaWQqIHZpcnR1YWxGb3Io
RXhlY1N0YXRlKiBleGVjQwogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUt
PmNhbGxlZUFzVmFsdWUoKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0
SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhbGxlZUFzRnVu
Y3Rpb25DZWxsKSkKLSAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIGNh
bGxlZUFzVmFsdWUsIGtpbmQpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwga2luZCkpOwogICAg
IAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCk7CiAgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihmdW5jdGlvbi0+
c2NvcGVVbmNoZWNrZWQoKSk7CkBAIC05NjMsMTggKzk2NCwxOCBAQCBpbmxpbmUgdm9pZCogdmly
dHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDCiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBmdW5jdGlvbi0+c2NvcGUoKSwg
a2luZCk7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmV4Y2VwdGlvbiA9IGVycm9yOwotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihnbG9iYWxEYXRhLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICB9CiAg
ICAgfQotICAgIHJldHVybiBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hl
Y2tGb3Ioa2luZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9y
KGtpbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQogCi12b2lkKiBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblZpcnR1YWxDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSkKK2NoYXIqIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uVmlydHVhbENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlKQogeyAgICAK
ICAgICByZXR1cm4gdmlydHVhbEZvcihleGVjQ2FsbGVlLCBDb2RlRm9yQ2FsbCk7CiB9CiAKLXZv
aWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUpCitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zdHJ1Y3Qo
RXhlY1N0YXRlKiBleGVjQ2FsbGVlKQogewogICAgIHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxs
ZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQpAQCAtMTI0MSw2ICsxMjQyLDI0IEBAIHZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3QKICAgICBiYXNlLT5wdXREaXJlY3RPZmZz
ZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKIH0KIAorY2hh
ciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0
aWFsQ2FwYWNpdHkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICB2b2lkKiByZXN1bHQ7CisgICAgaWYgKCFn
bG9iYWxEYXRhLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0
eSAqIHNpemVvZihKU1ZhbHVlKSwgJnJlc3VsdCkpCisgICAgICAgIENSQVNIKCk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7Cit9CisKK2NoYXIqIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCBz
aXplX3QgbmV3U2l6ZSkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5n
bG9iYWxEYXRhKCk7CisgICAgdm9pZCogcmVzdWx0OworICAgIGlmICghZ2xvYmFsRGF0YS5oZWFw
LnRyeUFsbG9jYXRlU3RvcmFnZShuZXdTaXplLCAmcmVzdWx0KSkKKyAgICAgICAgQ1JBU0goKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKK30KKwogZG91Ymxl
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQzMl90IGEsIGludDMyX3QgYikK
IHsKICAgICByZXR1cm4gZm1vZChhLCBiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMjMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw4
IEBAIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXQKIHR5cGVkZWYgdm9p
ZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpQUCkoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJB
VElPTiAoKlZfREZHT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX1cpKFdhdGNocG9pbnRTZXQqKTsKLXR5cGVkZWYgdm9pZCogREZHX09QRVJBVElPTiAoKlBf
REZHT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwordHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9O
ICgqUF9ERkdPcGVyYXRpb25fRSkoRXhlY1N0YXRlKik7Cit0eXBlZGVmIGNoYXIqIERGR19PUEVS
QVRJT04gKCpQX0RGR09wZXJhdGlvbl9FUykoRXhlY1N0YXRlKiwgc2l6ZV90KTsKIAogLy8gVGhl
c2Ugcm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRp
b25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CkBAIC0xNjIs
MTAgKzE2MywxMCBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlCiBz
aXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVS
TkFMOwogc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXEoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotdm9pZCogREZHX09QRVJBVElPTiBv
cGVyYXRpb25WaXJ0dWFsQ2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7Ci12b2lkKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKLXZv
aWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVjU3RhdGUqKSBX
VEZfSU5URVJOQUw7Ci12b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3Qo
RXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOworY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25W
aXJ0dWFsQ2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CitjaGFyKiBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKK2NoYXIqIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVjU3RhdGUqKSBXVEZfSU5URVJO
QUw7CitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3QoRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFj
dGl2YXRpb24oRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cyhFeGVjU3Rh
dGUqLCBJbmxpbmVDYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CkBAIC0xODEsNiArMTgyLDggQEAg
ZG91YmxlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cwogc2l6ZV90IERGR19PUEVS
QVRJT04gb3BlcmF0aW9uSXNPYmplY3QoRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNp
emVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzRnVuY3Rpb24oRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFn
ZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5
T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworY2hhciogREZHX09QRVJBVElP
TiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoRXhl
Y1N0YXRlKikgV1RGX0lOVEVSTkFMOworY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBzaXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVS
TkFMOwogCiAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGxvb2t1cCBhbiBleGNlcHRpb24gaGFu
ZGVyLCBrZXllZCBieSBmYXVsdExvY2F0aW9uLCB3aGljaCBpcwogLy8gdGhlIHJldHVybiBsb2Nh
dGlvbiBmcm9tIG9uZSBvZiB0aGUgY2FsbHMgb3V0IHRvIG9uZSBvZiB0aGUgaGVscGVyIG9wZXJh
dGlvbnMgYWJvdmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTIzMDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0OSw3ICs0NDksOSBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6IAot
ICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKKyAgICAgICAgY2FzZSBH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgorICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlOgorICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT3RoZXIpOwogICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQyLDYg
KzM1NDIsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2U6CisgICAgICAgIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZToKKyAgICAgICAgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgICAgICAKICAgICBjYXNlIEdldFByb3BlcnR5U3RvcmFnZTogewogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAx
MjMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTU3LDYgKzM1NTcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IAorICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgIGNvbXBpbGVBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAg
IGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgY29tcGlsZVJlYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2Uobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKICAgICBj
YXNlIEdldFByb3BlcnR5U3RvcmFnZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIGJhc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEyMzAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTM3LDYgKzMx
MzcsODUgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cEV4ZWMoTgogICAgIHJl
dHVybiB0cnVlOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoTm9kZSYgbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgICAgICAKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAKKyAgICBBU1NFUlQoIW5vZGUuc3Ry
dWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5wcmV2aW91c1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSk7CisgICAgQVNTRVJUKGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSA9PSBub2RlLnN0cnVj
dHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsK
KyAgICBzaXplX3QgbmV3U2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihK
U1ZhbHVlKTsKKyAgICBDb3BpZWRBbGxvY2F0b3IqIGNvcGllZEFsbG9jYXRvciA9ICZtX2ppdC5n
bG9iYWxEYXRhKCktPmhlYXAuc3RvcmFnZUFsbG9jYXRvcigpOworCisgICAgbV9qaXQubG9hZFB0
cigmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcsIHNjcmF0Y2hHUFIpOworICAg
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoU3ViUHRyKEpJVENvbXBp
bGVyOjpTaWduZWQsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hH
UFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsICZjb3BpZWRBbGxvY2F0b3ItPm1f
Y3VycmVudFJlbWFpbmluZyk7CisgICAgbV9qaXQubmVnUHRyKHNjcmF0Y2hHUFIpOworICAgIG1f
aml0LmFkZFB0cihKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKCZjb3BpZWRBbGxvY2F0b3It
Pm1fY3VycmVudFBheWxvYWRFbmQpLCBzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5zdWJQdHIoSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwgc2NyYXRjaEdQUik7CisgICAgICAgIAor
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgs
IHRoaXMsIG9wZXJhdGlvbkFsbG9jYXRlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0
eSwgc2NyYXRjaEdQUikpOworICAgICAgICAKKyAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCkpKTsKKyAgICAgICAgCisgICAgc3RvcmFnZVJlc3VsdChzY3JhdGNoR1BSLCBt
X2NvbXBpbGVJbmRleCk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKE5vZGUmIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBTdG9yYWdlT3BlcmFuZCBvbGRTdG9y
YWdlKHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlz
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgICAgIAorICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgb2xkU3RvcmFnZUdQUiA9IG9sZFN0
b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIxID0gc2NyYXRjaDEuZ3ByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gc2NyYXRjaDIuZ3ByKCk7CisgICAgICAgIAorICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKKyAgICAgICAgCisgICAgc2l6ZV90IG9sZFNp
emUgPSBub2RlLnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkucHJldmlvdXNTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgc2l6ZV90IG5ld1NpemUg
PSBvbGRTaXplICogb3V0T2ZMaW5lR3Jvd3RoRmFjdG9yOworICAgIEFTU0VSVChuZXdTaXplID09
IG5vZGUuc3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpOworICAgIENvcGllZEFsbG9jYXRvciogY29waWVk
QWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5zdG9yYWdlQWxsb2NhdG9yKCk7
CisgICAgICAgIAorICAgIG1faml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50
UGF5bG9hZEVuZCwgc2NyYXRjaEdQUjEpOworICAgIG1faml0LmxvYWRQdHIoJmNvcGllZEFsbG9j
YXRvci0+bV9jdXJyZW50UmVtYWluaW5nLCBzY3JhdGNoR1BSMik7CisgICAgbV9qaXQuc3ViUHRy
KHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSk7CisgICAgbV9qaXQuc3ViUHRyKEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tMzIob2xkU2l6ZSksIHNjcmF0Y2hHUFIxKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBuZWVkRnVsbFJlYWxsb2MgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBzY3JhdGNoR1BSMSwgb2xkU3RvcmFnZUdQUik7CisgICAgCisgICAgc2xvd1BhdGguYXBw
ZW5kKG1faml0LmJyYW5jaFN1YlB0cihKSVRDb21waWxlcjo6U2lnbmVkLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbTMyKG5ld1NpemUgLSBvbGRTaXplKSwgc2NyYXRjaEdQUjIpKTsKKyAgICBtX2pp
dC5zdG9yZVB0cihzY3JhdGNoR1BSMiwgJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWlu
aW5nKTsKKyAgICBtX2ppdC5tb3ZlKG9sZFN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIyKTsKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBkb25lUmVhbGxvYyA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgCisg
ICAgbmVlZEZ1bGxSZWFsbG9jLmxpbmsoJm1faml0KTsKKyAgICBzbG93UGF0aC5hcHBlbmQobV9q
aXQuYnJhbmNoU3ViUHRyKEpJVENvbXBpbGVyOjpTaWduZWQsIEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIyKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRj
aEdQUjIsICZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgbV9qaXQu
bmVnUHRyKHNjcmF0Y2hHUFIyKTsKKyAgICBtX2ppdC5hZGRQdHIoSklUQ29tcGlsZXI6OkFic29s
dXRlQWRkcmVzcygmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2FkRW5kKSwgc2NyYXRj
aEdQUjIpOworICAgIG1faml0LnN1YlB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1Np
emUpLCBzY3JhdGNoR1BSMik7CisgICAgICAgIAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAor
ICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlLCBzY3JhdGNoR1BSMiwgbmV3U2l6ZSkpOworICAgIC8vIFdlIGhhdmUgc2Ny
YXRjaEdQUjIgPSBuZXcgc3RvcmFnZSwgc2NyYXRjaEdQUjEgPSBzY3JhdGNoCisgICAgZm9yIChz
aXplX3Qgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgb2xkU2l6ZTsgb2Zmc2V0ICs9IHNpemVvZih2b2lk
KikpIHsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhvbGRTdG9y
YWdlR1BSLCBvZmZzZXQpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKHNj
cmF0Y2hHUFIxLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSMiwgb2Zmc2V0KSk7Cisg
ICAgfQorICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIyLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKKyAgICAg
ICAgCisgICAgZG9uZVJlYWxsb2MubGluaygmbV9qaXQpOworICAgICAgICAKKyAgICBzdG9yYWdl
UmVzdWx0KHNjcmF0Y2hHUFIyLCBtX2NvbXBpbGVJbmRleCk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjMwMjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTExNTEs
NiArMTE1MSwxNiBAQCBwdWJsaWM6CiAgICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBkZWxl
Z2F0ZSB0aGUgY2FsbGluZyBjb252ZW50aW9uIHNwZWNpZmljCiAgICAgLy8gZGVjaXNpb24gYXMg
dG8gaG93IHRvIGZpbGwgdGhlIHJlZ3NpdGVycyB0byBzZXR1cEFyZ3VtZW50cyogbWV0aG9kcy4K
ICNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9ERkdPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRVMg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHNpemUpKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfREZHT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKQEAgLTE0MTMsNiArMTQyMywxNiBA
QCBwdWJsaWM6CiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCiAjZW5kaWYKIAorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNT
dGF0ZSgpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRVMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBz
aXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHNpemUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfREZHT3BlcmF0aW9uX0Qgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JF
eHRlcm5hbENhbGwoKTsKQEAgLTIwNDgsNiArMjA2OCw5IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIGNvbXBpbGVTdHJpY3RFcShOb2RlJik7CiAgICAgCisgICAgdm9pZCBjb21waWxlQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSYpOworICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoTm9kZSYpOworICAgIAogICAgIHZvaWQgY29tcGlsZUdldENoYXJDb2RlQXQo
Tm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSYpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9u
IDEyMzAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1OSw4ICsyNTksOCBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChKCiBpbmxpbmUgc2l6ZV90IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2Fw
YWNpdHkoc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSkKIHsKICAgICBpZiAoIWN1cnJlbnRDYXBhY2l0
eSkKLSAgICAgICAgcmV0dXJuIDQ7Ci0gICAgcmV0dXJuIGN1cnJlbnRDYXBhY2l0eSAqIDI7Cisg
ICAgICAgIHJldHVybiBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHk7CisgICAgcmV0dXJuIGN1cnJl
bnRDYXBhY2l0eSAqIG91dE9mTGluZUdyb3d0aEZhY3RvcjsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTIzMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIGNsYXNzIEpTU3Ry
aW5nOwogCisgICAgLy8gVGhlIG91dC1vZi1saW5lIHByb3BlcnR5IHN0b3JhZ2UgY2FwYWNpdHkg
dG8gdXNlIHdoZW4gZmlyc3QgYWxsb2NhdGluZyBvdXQtb2YtbGluZQorICAgIC8vIHN0b3JhZ2Uu
IE5vdGUgdGhhdCBhbGwgb2JqZWN0cyBzdGFydCBvdXQgd2l0aG91dCBoYXZpbmcgYW55IG91dC1v
Zi1saW5lIHN0b3JhZ2U7CisgICAgLy8gdGhpcyBjb21lcyBpbnRvIHBsYXkgb25seSBvbiB0aGUg
Zmlyc3QgcHJvcGVydHkgc3RvcmUgdGhhdCBleGhhdXN0cyBpbmxpbmUgc3RvcmFnZS4KKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5ID0gNDsKKworICAg
IC8vIFRoZSBmYWN0b3IgYnkgd2hpY2ggdG8gZ3JvdyBvdXQtb2YtbGluZSBzdG9yYWdlIHdoZW4g
aXQgaXMgZXhoYXVzdGVkLCBhZnRlciB0aGUKKyAgICAvLyBpbml0aWFsIGFsbG9jYXRpb24uCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG91dE9mTGluZUdyb3d0aEZhY3RvciA9IDI7CisKICAg
ICBjbGFzcyBTdHJ1Y3R1cmUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU7Cg==
</data>
<flag name="review"
          id="161972"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>