<?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>117906</bug_id>
          
          <creation_ts>2013-06-21 22:58:06 -0700</creation_ts>
          <short_desc>fourthTier: DFG shouldn&apos;t exit just because a String GetByVal went out-of-bounds</short_desc>
          <delta_ts>2013-06-22 21:57:53 -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>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>902747</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-21 22:58:06 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902748</commentid>
    <comment_count>1</comment_count>
      <attachid>205235</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-21 22:58:58 -0700</bug_when>
    <thetext>Created attachment 205235
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902750</commentid>
    <comment_count>2</comment_count>
      <attachid>205237</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-21 23:24:28 -0700</bug_when>
    <thetext>Created attachment 205237
the ptach

Benchmark report for JSRegress on dethklok (MacBookPro9,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/fourthTier/secondary/OpenSource/WebKitBuild/Release/jsc (r151875)
&quot;FixString&quot; at /Volumes/Data/pizlo/fourthTier/primary/OpenSource/WebKitBuild/Release/jsc (r151873)

Collected 30 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                TipOfTree                 FixString                                     

string-get-by-val-big-char                    8.6687+-0.3165            8.4542+-0.2872          might be 1.0254x faster
string-get-by-val-out-of-bounds-insane        7.2589+-0.3855     ^      5.9114+-0.2240        ^ definitely 1.2280x faster
string-get-by-val-out-of-bounds              54.9499+-0.7410     ^      2.5956+-0.0318        ^ definitely 21.1704x faster
string-get-by-val                             2.3552+-0.1035            2.3321+-0.0938        

&lt;arithmetic&gt;                                 18.3082+-0.2274     ^      4.8233+-0.0892        ^ definitely 3.7958x faster
&lt;geometric&gt; *                                 9.4639+-0.1531     ^      4.1602+-0.0602        ^ definitely 2.2749x faster
&lt;harmonic&gt;                                    5.7086+-0.1329     ^      3.6167+-0.0511        ^ definitely 1.5784x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902798</commentid>
    <comment_count>3</comment_count>
      <attachid>205237</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-06-22 10:16:33 -0700</bug_when>
    <thetext>Comment on attachment 205237
the ptach

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2060
&gt; +            m_jit.addLazily(

Just for my education, what does addLazily do/what is its purpose?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2100
&gt; +    

:-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902799</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-22 10:21:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 205237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=205237&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2060
&gt; &gt; +            m_jit.addLazily(
&gt; 
&gt; Just for my education, what does addLazily do/what is its purpose?

You can&apos;t add to a watchpoint set during DFG compilation anymore, since DFG compilation is concurrent.  So you just register your intent to be added.

Then when the main thread installs the code, it checks that the desired watchpoints are still valid; if they aren&apos;t then the compilation is discarded and if they are then the watchpoints are installed.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2100
&gt; &gt; +    
&gt; 
&gt; :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902800</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-06-22 10:23:03 -0700</bug_when>
    <thetext>&gt; 
&gt; You can&apos;t add to a watchpoint set during DFG compilation anymore, since DFG compilation is concurrent.  So you just register your intent to be added.
&gt; 
&gt; Then when the main thread installs the code, it checks that the desired watchpoints are still valid; if they aren&apos;t then the compilation is discarded and if they are then the watchpoints are installed.

Cool, that&apos;s what I thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902822</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-22 21:57:53 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/151885</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205235</attachid>
            <date>2013-06-21 22:58:58 -0700</date>
            <delta_ts>2013-06-21 23:24:28 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13580</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAkocmV2aXNpb24gMTUxODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg5LDcgKzg4OSwxOSBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpT
dHJpbmc6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLm1f
dm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1v
ZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2F0Y2hw
b2ludCB3YXMgc3RpbGwgdmFsaWQgd2UgY291bGQgdG90YWxseSBzZXQgdGhpcyB0byBiZQorICAg
ICAgICAgICAgICAgIC8vIFNwZWNTdHJpbmcgfCBTcGVjT3RoZXIuIEV4Y2VwdCB0aGF0IHdlJ2Qg
aGF2ZSB0byBiZSBjYXJlZnVsLiBJZiB3ZQorICAgICAgICAgICAgICAgIC8vIHRlc3RlZCB0aGUg
d2F0Y2hwb2ludCBzdGF0ZSBoZXJlIHRoZW4gaXQgY291bGQgY2hhbmdlIGJ5IHRoZSB0aW1lCisg
ICAgICAgICAgICAgICAgLy8gd2UgZ290IHRvIHRoZSBiYWNrZW5kLiBTbyB0byBkbyB0aGlzIHJp
Z2h0LCB3ZSdkIGhhdmUgdG8gZ2V0IHRoZQorICAgICAgICAgICAgICAgIC8vIGZpeHVwIHBoYXNl
IHRvIGNoZWNrIHRoZSB3YXRjaHBvaW50IHN0YXRlIGFuZCB0aGVuIGJha2UgaW50byB0aGUKKyAg
ICAgICAgICAgICAgICAvLyBHZXRCeVZhbCBvcGVyYXRpb24gdGhlIGZhY3QgdGhhdCB3ZSdyZSB1
c2luZyBhIHdhdGNocG9pbnQsIHVzaW5nCisgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIGxp
a2UgQXJyYXk6OlNhbmVDaGFpbiAoZXhjZXB0IG5vdCBxdWl0ZSwgYmVjYXVzZSB0aGF0CisgICAg
ICAgICAgICAgICAgLy8gaW1wbGllcyBhbiBpbi1ib3VuZHMgYWNjZXNzKS4gTm9uZSBvZiB0aGlz
IGZlZWxzIGxpa2UgaXQncyB3b3J0aCBpdCwKKyAgICAgICAgICAgICAgICAvLyBzbyB3ZSdyZSBn
b2luZyB3aXRoIFRPUCBmb3Igbm93LgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFr
ZVRvcCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6QXJndW1lbnRzOgogICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5tYWtlVG9wKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE1MTg3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nywx
MyArMzY3LDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5v
ZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7
Ci0gICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6RG91YmxlCi0gICAg
ICAgICAgICAgICAgJiYgYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxB
cnJheQotICAgICAgICAgICAgICAgICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5
OjpJbkJvdW5kcwotICAgICAgICAgICAgICAgICYmIGFycmF5TW9kZS5jb252ZXJzaW9uKCkgPT0g
QXJyYXk6OkFzSXMKLSAgICAgICAgICAgICAgICAmJiBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5jb2RlT3JpZ2luKS0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCi0gICAgICAgICAg
ICAgICAgJiYgIShub2RlLT5mbGFncygpICYgTm9kZVVzZWRBc090aGVyKSkKLSAgICAgICAgICAg
ICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlLndpdGhTcGVjdWxhdGlvbihBcnJheTo6
U2FuZUNoYWluKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICBpZiAoYXJyYXlN
b2RlLmFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheQorICAgICAgICAgICAgICAg
ICAgICAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMKKyAgICAg
ICAgICAgICAgICAgICAgJiYgYXJyYXlNb2RlLmNvbnZlcnNpb24oKSA9PSBBcnJheTo6QXNJcwor
ICAgICAgICAgICAgICAgICAgICAmJiBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2Rl
T3JpZ2luKS0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCisgICAgICAgICAgICAgICAgICAg
ICYmICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVVc2VkQXNPdGhlcikpCisgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUud2l0aFNwZWN1bGF0aW9uKEFycmF5OjpT
YW5lQ2hhaW4pKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKKyAgICAgICAgICAgICAgICBpZiAoKG5vZGUt
PnByZWRpY3Rpb24oKSAmIH5TcGVjU3RyaW5nKQorICAgICAgICAgICAgICAgICAgICB8fCBtX2dy
YXBoLmhhc0V4aXRTaXRlKG5vZGUtPmNvZGVPcmlnaW4sIE91dE9mQm91bmRzKSkKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZS53aXRoU3BlY3VsYXRpb24o
QXJyYXk6Ok91dE9mQm91bmRzKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVk
aWN0aW9uczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAxNTE4NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gKCpKCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gKCpKX0RGR09wZXJhdGlvbl9FSkEpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBK
U0FycmF5Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09w
ZXJhdGlvbl9FSkkpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FSkop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FSnNzWikoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VKUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3Bl
cmF0aW9uX0VQKShFeGVjU3RhdGUqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lk
Kik7CkBAIC0xMzIsNiArMTMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVy
YXRpb25WYQogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5VmFsQ2VsbChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlWYWxBcnJheUludChFeGVjU3RhdGUqLCBKU0FycmF5KiwgaW50
MzJfdCkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbFN0cmluZ0ludChFeGVjU3RhdGUqLCBKU1N0cmluZyosIGludDMyX3QpIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDE1MTg3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQyLDEzICsyMDQyLDM4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3QKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBw
cm9wZXJ0eS5ncHIoKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgc2NyYXRjaFJlZyA9
IHNjcmF0Y2guZ3ByKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0VGFnOworICAgIEdQUlJlZyByZXN1bHRUYWdSZWcgPSBJbnZhbGlkR1BSUmVnOworICAg
IGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlYWxSZXN1bHRUYWcodGhpcyk7CisgICAgICAgIHJlc3VsdFRhZy5hZG9wdChyZWFs
UmVzdWx0VGFnKTsKKyAgICAgICAgcmVzdWx0VGFnUmVnID0gcmVzdWx0VGFnLmdwcigpOworICAg
IH0KKyNlbmRpZgorCisgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkg
eworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5zdHJp
bmdQcm90b3R5cGVDaGFpbklzU2FuZSgpKSB7CisgICAgICAgICAgICBtX2ppdC5hZGRMYXppbHko
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCksCisgICAgICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKCktPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgbV9qaXQuYWRkTGF6aWx5KAorICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLAorICAgICAgICAgICAgICAgIGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldCgpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEFTU0VSVChBcnJheU1vZGUoQXJy
YXk6OlN0cmluZykuYWxyZWFkeUNoZWNrZWQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpOwogCiAgICAgLy8gdW5zaWduZWQgY29tcGFyaXNvbiBz
byB3ZSBjYW4gZmlsdGVyIG91dCBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBpbmRpY2VzIHRoYXQgYXJl
IHRvbyBsYXJnZQotICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIDAsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0
T2ZMZW5ndGgoKSkpKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgIEdQ
UlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCBwcm9wZXJ0eVJlZywKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKKyAgICBpZiAobm9kZS0+YXJy
YXlNb2RlKCkuaXNJbkJvdW5kcygpKQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91
bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBvdXRPZkJvdW5kcyk7CiAKICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVl
KCkpLCBzY3JhdGNoUmVnKTsKIApAQCAtMjA3MiwxMiArMjA5Nyw1MSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAgICAgR1BSUmVnIHNtYWxsU3RyaW5nc1JlZyA9
IHNtYWxsU3RyaW5ncy5ncHIoKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdz
KCkpLCBzbWFsbFN0cmluZ3NSZWcpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzbWFsbFN0cmluZ3NSZWcsIHNjcmF0Y2hSZWcsIE1hY3JvQXNzZW1ibGVyOjpT
Y2FsZVB0ciwgMCksIHNjcmF0Y2hSZWcpOwotCisgICAgCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIGJpZ0NoYXJhY3RlciwgdGhp
cywgb3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5nLCBzY3JhdGNoUmVnLCBzY3JhdGNoUmVn
KSk7CiAKLSAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY3VycmVudE5vZGUpOworICAgIGlm
IChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwg
cmVzdWx0VGFnUmVnKTsKKyNlbmRpZgorCisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAg
IGlmIChnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkpIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAg
ICAgICAgICAgc2xvd1BhdGhNb3ZlKAorICAgICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywg
dGhpcywgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksCisgICAg
ICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcpKTsKKyNlbHNlCisgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICBzbG93UGF0aE1vdmUoCisgICAgICAgICAg
ICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0VGFnUmVnLAorICAgICAgICAgICAg
ICAgICAgICBUcnVzdGVkSW1tMzIoMCksIHNjcmF0Y2hSZWcpKTsKKyNlbmRpZgorICAgICAgICB9
IGVsc2UgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAg
IG91dE9mQm91bmRzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCwKKyAgICAgICAg
ICAgICAgICAgICAgc2NyYXRjaFJlZywgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyNlbHNlCisg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwoCisgICAgICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeVZhbFN0cmluZ0ludCwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0VGFnUmVnLCBzY3Jh
dGNoUmVnLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAg
ICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAganNWYWx1ZVJlc3VsdChzY3JhdGNoUmVn
LCBtX2N1cnJlbnROb2RlKTsKKyNlbHNlCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFn
UmVnLCBzY3JhdGNoUmVnLCBtX2N1cnJlbnROb2RlKTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAg
ICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY3VycmVudE5vZGUpOwogfQogCiBHZW5lcmF0
ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9JbnQz
MihOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTUxODczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3
ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3QKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90eXBlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjpzX2lu
Zm8gPSB7IkFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjphcnJheVByb3Rv
dHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5UHJvdG90eXBlKX07Citjb25zdCBD
bGFzc0luZm8gQXJyYXlQcm90b3R5cGU6OnNfaW5mbyA9IHsiQXJyYXlQcm90b3R5cGUiLCAmSlNB
cnJheTo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OmFycmF5UHJvdG90eXBlVGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoQXJyYXlQcm90b3R5cGUpfTsKIAogLyogU291cmNlIGZvciBBcnJheVByb3Rv
dHlwZS5sdXQuaAogQGJlZ2luIGFycmF5UHJvdG90eXBlVGFibGUgMTYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDE1MTg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDEyICs0MzcsMjQgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6aGF2ZUFCYWRUaW1lKFZNJiB2bQogICAgIH0KIH0KIAorYm9vbCBKU0dsb2JhbE9iamVj
dDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKCkKK3sKKyAgICByZXR1cm4gIWhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKG1fb2JqZWN0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpCisg
ICAgICAgICYmIG1fb2JqZWN0UHJvdG90eXBlLT5wcm90b3R5cGUoKS5pc051bGwoKTsKK30KKwog
Ym9vbCBKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCiB7CiAgICAg
cmV0dXJuICFoYXNJbmRleGVkUHJvcGVydGllcyhtX2FycmF5UHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpCiAgICAgICAgICYmIG1fYXJyYXlQcm90b3R5cGUtPnByb3RvdHlw
ZSgpID09IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpCi0gICAgICAgICYmICFoYXNJbmRleGVkUHJv
cGVydGllcyhtX29iamVjdFByb3RvdHlwZS0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKQot
ICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+cHJvdG90eXBlKCkuaXNOdWxsKCk7CisgICAg
ICAgICYmIG9iamVjdFByb3RvdHlwZUlzU2FuZSgpCit9CisKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6
OnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkKK3sKKyAgICByZXR1cm4gIWhhc0luZGV4ZWRQ
cm9wZXJ0aWVzKG1fc3RyaW5nUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
CisgICAgICAgICYmIG1fc3RyaW5nUHJvdG90eXBlLT5wcm90b3R5cGUoKSA9PSBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKQorICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVJc1NhbmUoKTsKIH0KIAog
dm9pZCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCShyZXZpc2lvbiAxNTE4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsNyArMzQxLDkgQEAgcHVibGlj
OgogICAgICAgICAKICAgICB2b2lkIGhhdmVBQmFkVGltZShWTSYpOwogICAgICAgICAKKyAgICBi
b29sIG9iamVjdFByb3RvdHlwZUlzU2FuZSgpOwogICAgIGJvb2wgYXJyYXlQcm90b3R5cGVDaGFp
bklzU2FuZSgpOworICAgIGJvb2wgc3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsKIAogICAg
IHZvaWQgc2V0UHJvZmlsZUdyb3VwKHVuc2lnbmVkIHZhbHVlKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWVkZWQoKTsgbV9yYXJlRGF0YS0+cHJvZmlsZUdyb3VwID0gdmFsdWU7IH0KICAgICB1bnNpZ25l
ZCBwcm9maWxlR3JvdXAoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNTE4NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamUKIAogQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoT2JqZWN0UHJvdG90eXBlKTsK
IAotY29uc3QgQ2xhc3NJbmZvIE9iamVjdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmpl
Y3RQcm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2luZm8g
PSB7ICJPYmplY3RQcm90b3R5cGUiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdFByb3RvdHlwZSkgfTsKIAogT2JqZWN0UHJvdG90eXBl
OjpPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0dWN0dXJlKQog
ICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT52bSgpLCBzdHVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMTUxODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUcmltTGVmdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1SaWdodChFeGVjU3Rh
dGUqKTsKIAotY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvID0geyAiU3Ry
aW5nIiwgJlN0cmluZ09iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0
cmluZ1Byb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlN0cmluZ1Byb3RvdHlwZSIsICZTdHJpbmdPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShTdHJpbmdQcm90b3R5cGUpIH07CiAKIC8vIEVDTUEgMTUuNS40CiBT
dHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205237</attachid>
            <date>2013-06-21 23:24:28 -0700</date>
            <delta_ts>2013-06-22 10:16:32 -0700</delta_ts>
            <desc>the ptach</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23286</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxODc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogREZHIHNob3VsZG4ndCBleGl0IGp1c3QgYmVjYXVzZSBhIFN0cmluZyBHZXRC
eVZhbCB3ZW50IG91dC1vZi1ib3VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBkb2VzIHRoZSBvYnZpb3VzIHRoaW5nLCBidXQg
YWxzbyBtYWtlcyBzdXJlIHRoYXQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcworICAgICAgICBkb24n
dCBmYWxsIG9mZiBpbnRvIGEgQyBjYWxsLCBidXQgdHJ5IHRvIGRvIHRoZSBmYXN0IHRoaW5nIGlm
IHRoZSBwcm90b3R5cGUKKyAgICAgICAgY2hhaW4gaXMgc2FuZS4gV2Ugb3VnaHQgdG8gcHJvYmFi
bHkgZG8gdGhpcyBmb3Igb3RoZXIgYXJyYXkgYWNjZXNzZXMgaW4gdGhlCisgICAgICAgIGZ1dHVy
ZSwgYXMgd2VsbCwgc2luY2UgaXQncyBzbyBkYXJuIGVhc3kuCisKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhl
Y3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKToKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5l
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2Jh
bE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0MpOgorCiAyMDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgZm91cnRoVGllcjogREZHIHNob3VsZCBDU0UgTWFrZVJvcGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24g
MTUxODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODg5LDcgKzg4OSwxOSBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VUb3Ao
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpTdHJpbmc6Ci0gICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLm1fdm0uc3RyaW5nU3Ry
dWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9m
Qm91bmRzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2F0Y2hwb2ludCB3YXMgc3Rp
bGwgdmFsaWQgd2UgY291bGQgdG90YWxseSBzZXQgdGhpcyB0byBiZQorICAgICAgICAgICAgICAg
IC8vIFNwZWNTdHJpbmcgfCBTcGVjT3RoZXIuIEV4Y2VwdCB0aGF0IHdlJ2QgaGF2ZSB0byBiZSBj
YXJlZnVsLiBJZiB3ZQorICAgICAgICAgICAgICAgIC8vIHRlc3RlZCB0aGUgd2F0Y2hwb2ludCBz
dGF0ZSBoZXJlIHRoZW4gaXQgY291bGQgY2hhbmdlIGJ5IHRoZSB0aW1lCisgICAgICAgICAgICAg
ICAgLy8gd2UgZ290IHRvIHRoZSBiYWNrZW5kLiBTbyB0byBkbyB0aGlzIHJpZ2h0LCB3ZSdkIGhh
dmUgdG8gZ2V0IHRoZQorICAgICAgICAgICAgICAgIC8vIGZpeHVwIHBoYXNlIHRvIGNoZWNrIHRo
ZSB3YXRjaHBvaW50IHN0YXRlIGFuZCB0aGVuIGJha2UgaW50byB0aGUKKyAgICAgICAgICAgICAg
ICAvLyBHZXRCeVZhbCBvcGVyYXRpb24gdGhlIGZhY3QgdGhhdCB3ZSdyZSB1c2luZyBhIHdhdGNo
cG9pbnQsIHVzaW5nCisgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIGxpa2UgQXJyYXk6OlNh
bmVDaGFpbiAoZXhjZXB0IG5vdCBxdWl0ZSwgYmVjYXVzZSB0aGF0CisgICAgICAgICAgICAgICAg
Ly8gaW1wbGllcyBhbiBpbi1ib3VuZHMgYWNjZXNzKS4gTm9uZSBvZiB0aGlzIGZlZWxzIGxpa2Ug
aXQncyB3b3J0aCBpdCwKKyAgICAgICAgICAgICAgICAvLyBzbyB3ZSdyZSBnb2luZyB3aXRoIFRP
UCBmb3Igbm93LgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFw
aCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBBcnJheTo6QXJndW1lbnRzOgogICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5tYWtlVG9wKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE1MTg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NywxMyArMzY3LDI1IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgp
LCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2RlKCk7Ci0gICAgICAgICAg
ICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6RG91YmxlCi0gICAgICAgICAgICAgICAg
JiYgYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheQotICAgICAg
ICAgICAgICAgICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFycmF5OjpJbkJvdW5kcwot
ICAgICAgICAgICAgICAgICYmIGFycmF5TW9kZS5jb252ZXJzaW9uKCkgPT0gQXJyYXk6OkFzSXMK
LSAgICAgICAgICAgICAgICAmJiBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3Jp
Z2luKS0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCi0gICAgICAgICAgICAgICAgJiYgIShu
b2RlLT5mbGFncygpICYgTm9kZVVzZWRBc090aGVyKSkKLSAgICAgICAgICAgICAgICBub2RlLT5z
ZXRBcnJheU1vZGUoYXJyYXlNb2RlLndpdGhTcGVjdWxhdGlvbihBcnJheTo6U2FuZUNoYWluKSk7
CisgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmFycmF5Q2xh
c3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheQorICAgICAgICAgICAgICAgICAgICAmJiBhcnJh
eU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMKKyAgICAgICAgICAgICAgICAg
ICAgJiYgYXJyYXlNb2RlLmNvbnZlcnNpb24oKSA9PSBBcnJheTo6QXNJcworICAgICAgICAgICAg
ICAgICAgICAmJiBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKS0+YXJy
YXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCisgICAgICAgICAgICAgICAgICAgICYmICEobm9kZS0+
ZmxhZ3MoKSAmIE5vZGVVc2VkQXNPdGhlcikpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNl
dEFycmF5TW9kZShhcnJheU1vZGUud2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4pKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgQXJyYXk6OlN0cmluZzoKKyAgICAgICAgICAgICAgICBpZiAoKG5vZGUtPnByZWRpY3Rpb24o
KSAmIH5TcGVjU3RyaW5nKQorICAgICAgICAgICAgICAgICAgICB8fCBtX2dyYXBoLmhhc0V4aXRT
aXRlKG5vZGUtPmNvZGVPcmlnaW4sIE91dE9mQm91bmRzKSkKKyAgICAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0QXJyYXlNb2RlKGFycmF5TW9kZS53aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9m
Qm91bmRzKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUo
KSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTUxODc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcxLDcgKzQ3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
YmFzZSkuZ2V0KGV4ZWMsIGlkZW50KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWxBcnJheUludChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGJh
c2UsIGludDMyX3QgaW5kZXgpCitBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFs
Q2VsbEludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgaW50MzJfdCBpbmRleCkKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKQEAgLTQ4NSw2ICs0ODUsMTYgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShi
YXNlKS5nZXQoZXhlYywgaW5kZXgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYmFz
ZSwgaW50MzJfdCBpbmRleCkKK3sKKyAgICByZXR1cm4gZ2V0QnlWYWxDZWxsSW50KGV4ZWMsIGJh
c2UsIGluZGV4KTsKK30KKworRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeVZhbFN0cmluZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBiYXNlLCBpbnQzMl90
IGluZGV4KQoreworICAgIHJldHVybiBnZXRCeVZhbENlbGxJbnQoZXhlYywgYmFzZSwgaW5kZXgp
OworfQorCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTUxODc0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAg
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSgogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUpBKShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgSlNBcnJheSopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
U3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9E
RkdPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRp
b25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FSlApKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gKCpKX0RGR09wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRVBQKShFeGVjU3Rh
dGUqLCB2b2lkKiwgdm9pZCopOwpAQCAtMTMyLDYgKzEzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uVmEKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlWYWwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQoRXhlY1N0YXRl
KiwgSlNBcnJheSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQoRXhlY1N0YXRlKiwgSlNTdHJpbmcq
LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
SWRCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxNTE4NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0MiwxMyArMjA0Miwz
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAgICAgR1BSUmVn
IHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBz
dG9yYWdlLmdwcigpOwogCisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BS
UmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFRhZzsKKyAgICBHUFJSZWcgcmVzdWx0VGFnUmVnID0gSW52
YWxpZEdQUlJlZzsKKyAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKSB7
CisgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsUmVzdWx0VGFnKHRoaXMpOworICAgICAgICByZXN1
bHRUYWcuYWRvcHQocmVhbFJlc3VsdFRhZyk7CisgICAgICAgIHJlc3VsdFRhZ1JlZyA9IHJlc3Vs
dFRhZy5ncHIoKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5p
c091dE9mQm91bmRzKCkpIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgaWYgKGds
b2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkgeworICAgICAgICAgICAg
bV9qaXQuYWRkTGF6aWx5KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgp
LAorICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCktPnN0cnVj
dHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAgIG1faml0LmFk
ZExhemlseSgKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnQoKSwKKyAgICAg
ICAgICAgICAgICBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+
dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBBU1NF
UlQoQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcpLmFscmVhZHlDaGVja2VkKG1faml0LmdyYXBoKCks
IG5vZGUsIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpKTsKIAogICAgIC8vIHVuc2ln
bmVkIGNvbXBhcmlzb24gc28gd2UgY2FuIGZpbHRlciBvdXQgbmVnYXRpdmUgaW5kaWNlcyBhbmQg
aW5kaWNlcyB0aGF0IGFyZSB0b28gbGFyZ2UKLSAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7Ci0KLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKLSAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgSklU
Q29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSk7Cisg
ICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgb3V0T2ZCb3VuZHMpOwogCiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaFJlZyk7CiAKQEAgLTIwNzIsMTIgKzIwOTcsNTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogICAgIEdQUlJlZyBz
bWFsbFN0cmluZ3NSZWcgPSBzbWFsbFN0cmluZ3MuZ3ByKCk7CiAgICAgbV9qaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3Muc2luZ2xl
Q2hhcmFjdGVyU3RyaW5ncygpKSwgc21hbGxTdHJpbmdzUmVnKTsKICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJpbmdzUmVnLCBzY3JhdGNoUmVnLCBN
YWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNoUmVnKTsKLQorICAgIAogICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBi
aWdDaGFyYWN0ZXIsIHRoaXMsIG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZywgc2NyYXRj
aFJlZywgc2NyYXRjaFJlZykpOwogCi0gICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2N1cnJl
bnROb2RlKTsKKyAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKSB7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZyksIHJlc3VsdFRhZ1JlZyk7CisjZW5kaWYKKworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVP
cmlnaW4pOworICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGVDaGFpbklz
U2FuZSgpKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKAorICAgICAgICAgICAgICAgIHNsb3dQYXRoTW92ZSgKKyAgICAgICAgICAgICAgICAg
ICAgb3V0T2ZCb3VuZHMsIHRoaXMsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpLAorICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUmVnKSk7CisjZWxzZQorICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgc2xvd1BhdGhN
b3ZlKAorICAgICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywKKyAgICAgICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlc3VsdFRhZ1Jl
ZywKKyAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKDApLCBzY3JhdGNoUmVnKSk7Cisj
ZW5kaWYKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAg
ICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxTdHJp
bmdJbnQsCisgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcsIGJhc2VSZWcsIHByb3BlcnR5
UmVnKSk7CisjZWxzZQorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywg
dGhpcywgb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQsCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdFRhZ1JlZywgc2NyYXRjaFJlZywgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyNlbmRpZgor
ICAgICAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGpzVmFsdWVS
ZXN1bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CisjZWxzZQorICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFRhZ1JlZywgc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CisjZW5kaWYK
KyAgICB9IGVsc2UKKyAgICAgICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2N1cnJlbnROb2Rl
KTsKIH0KIAogR2VuZXJhdGVkT3BlcmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJh
dGVkVHlwZUZvclRvSW50MzIoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1MTg3NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE1NSw2ICsxMTU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpzc1ogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgewor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCB2b2lkKiBwb2lu
dGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsK
QEAgLTEzNzUsNiArMTM4MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZH
T3BlcmF0aW9uX0VKc3NaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3Vs
dFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfREZHT3BlcmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBv
aW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE1MTg3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNOdW1lcmljQ29t
cGFyZUZ1bmN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3Rv
dHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBBcnJh
eVByb3RvdHlwZTo6c19pbmZvID0geyJBcnJheSIsICZKU0FycmF5OjpzX2luZm8sIDAsIEV4ZWNT
dGF0ZTo6YXJyYXlQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheVByb3Rv
dHlwZSl9OworY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjpzX2luZm8gPSB7IkFycmF5
UHJvdG90eXBlIiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjphcnJheVByb3RvdHlw
ZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5UHJvdG90eXBlKX07CiAKIC8qIFNvdXJj
ZSBmb3IgQXJyYXlQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBhcnJheVByb3RvdHlwZVRhYmxlIDE2
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxNTE4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNywxMiArNDM3LDI0IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmhhdmVBQmFkVGltZShWTSYgdm0KICAgICB9CiB9CiAKK2Jv
b2wgSlNHbG9iYWxPYmplY3Q6Om9iamVjdFByb3RvdHlwZUlzU2FuZSgpCit7CisgICAgcmV0dXJu
ICFoYXNJbmRleGVkUHJvcGVydGllcyhtX29iamVjdFByb3RvdHlwZS0+c3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKQorICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+cHJvdG90eXBlKCku
aXNOdWxsKCk7Cit9CisKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG90eXBlQ2hhaW5J
c1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9hcnJheVByb3Rv
dHlwZS0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKQogICAgICAgICAmJiBtX2FycmF5UHJv
dG90eXBlLT5wcm90b3R5cGUoKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQotICAgICAgICAm
JiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9vYmplY3RQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkKLSAgICAgICAgJiYgbV9vYmplY3RQcm90b3R5cGUtPnByb3RvdHlwZSgp
LmlzTnVsbCgpOworICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVJc1NhbmUoKTsKK30KKworYm9v
bCBKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQoreworICAgIHJl
dHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9zdHJpbmdQcm90b3R5cGUtPnN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkKKyAgICAgICAgJiYgbV9zdHJpbmdQcm90b3R5cGUtPnByb3RvdHlw
ZSgpID09IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpCisgICAgICAgICYmIG9iamVjdFByb3RvdHlw
ZUlzU2FuZSgpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVUaHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1MTg3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw3
ICszNDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHZvaWQgaGF2ZUFCYWRUaW1lKFZNJik7
CiAgICAgICAgIAorICAgIGJvb2wgb2JqZWN0UHJvdG90eXBlSXNTYW5lKCk7CiAgICAgYm9vbCBh
cnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCk7CisgICAgYm9vbCBzdHJpbmdQcm90b3R5cGVDaGFp
bklzU2FuZSgpOwogCiAgICAgdm9pZCBzZXRQcm9maWxlR3JvdXAodW5zaWduZWQgdmFsdWUpIHsg
Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCgpOyBtX3JhcmVEYXRhLT5wcm9maWxlR3JvdXAgPSB2YWx1
ZTsgfQogICAgIHVuc2lnbmVkIHByb2ZpbGVHcm91cCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDE1MTg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZQogCiBBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihP
YmplY3RQcm90b3R5cGUpOwogCi1jb25zdCBDbGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKE9iamVjdFByb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBPYmplY3RQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdFByb3RvdHlwZSIsICZKU05vbkZpbmFsT2JqZWN0
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqZWN0UHJvdG90eXBlKSB9Owog
CiBPYmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3R1Y3R1cmUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPnZtKCksIHN0dWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNTE4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmkKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1MZWZ0KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VHJpbVJpZ2h0KEV4ZWNTdGF0ZSopOwogCi1jb25zdCBDbGFzc0luZm8gU3RyaW5nUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJTdHJpbmciLCAmU3RyaW5nT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoU3RyaW5nUHJvdG90eXBlKSB9OworY29uc3QgQ2xhc3NJbmZvIFN0cmlu
Z1Byb3RvdHlwZTo6c19pbmZvID0geyAiU3RyaW5nUHJvdG90eXBlIiwgJlN0cmluZ09iamVjdDo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmluZ1Byb3RvdHlwZSkgfTsKIAog
Ly8gRUNNQSAxNS41LjQKIFN0cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE4NzYp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMy0wNi0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IGZvdXJ0aFRpZXI6IERGRyBzaG91bGRuJ3QgZXhpdCBqdXN0IGJlY2F1c2UgYSBTdHJpbmcgR2V0
QnlWYWwgd2VudCBvdXQtb2YtYm91bmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTc5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBvdXQtb2YtYm91bmRzIGJlbmNobWFyayB0aGF0
IGlzbid0IGluc2FuZSBzcGVlZHMgdXAgYnkgMjJ4IGluIHRoaXMKKyAgICAgICAgcGF0Y2guCisK
KyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1nZXQtYnktdmFs
LW91dC1vZi1ib3VuZHMtaW5zYW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAg
ICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2Yt
Ym91bmRzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdy
ZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5k
cy1pbnNhbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mv
c3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMuaHRt
bDogQWRkZWQuCisKIDIwMTMtMDYtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBmb3VydGhUaWVyOiBERkcgc2hvdWxkIENTRSBNYWtlUm9wZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
dHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2Yt
Ym91bmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1Jl
Z3Jlc3Mvc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMtaW5zYW5lLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5n
LWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1v
Zi1ib3VuZHMtaW5zYW5lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
IEBACitKU1JlZ3Jlc3Mvc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91
bmRzLWluc2FuZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzLWluc2FuZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1v
Zi1ib3VuZHMtaW5zYW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLWdldC1ieS12YWwtb3V0
LW9mLWJvdW5kcy1pbnNhbmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9y
ZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWdldC1ieS12
YWwtb3V0LW9mLWJvdW5kcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdyZXNzL3N0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9zdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctZ2V0LWJ5LXZhbC1vdXQt
b2YtYm91bmRzLWluc2FuZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNh
bmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gZm9vKHN0cmlu
ZykgeworICAgIHZhciByZXN1bHQgPSBbIiIsICIiXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwMDsgKytpKQorICAgICAgICByZXN1bHRbaSAmIDFdID0gc3RyaW5nW2kgJiAxXTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitPYmplY3QucHJvdG90eXBlWzFdID0gNDI7CisKK3ZhciBy
ZXN1bHQgPSBmb28oIngiKTsKK2lmIChyZXN1bHRbMF0gIT0gIngiKQorICAgIHRocm93ICJCYWQg
cmVzdWx0WzBdOiAiICsgcmVzdWx0WzBdOworaWYgKHJlc3VsdFsxXSAhPSA0MikKKyAgICB0aHJv
dyAiQmFkIHJlc3VsdFsxXTogIiArIHJlc3VsdFsxXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3N0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1nZXQtYnktdmFsLW91
dC1vZi1ib3VuZHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24g
Zm9vKHN0cmluZykgeworICAgIHZhciByZXN1bHQgPSBbIiIsICIiXTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgcmVzdWx0W2kgJiAxXSA9IHN0cmluZ1tp
ICYgMV07CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbygieCIpOwor
aWYgKHJlc3VsdFswXSAhPSAieCIpCisgICAgdGhyb3cgIkJhZCByZXN1bHRbMF06ICIgKyByZXN1
bHRbMF07CitpZiAodHlwZW9mIHJlc3VsdFsxXSAhPSAidW5kZWZpbmVkIikKKyAgICB0aHJvdyAi
QmFkIHJlc3VsdFsxXTogIiArIHJlc3VsdFsxXTsK
</data>
<flag name="review"
          id="226729"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>