<?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>122306</bug_id>
          
          <creation_ts>2013-10-03 17:15:46 -0700</creation_ts>
          <short_desc>Add callOperation to Baseline JIT</short_desc>
          <delta_ts>2013-10-04 11:19:24 -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>
          
          <blocked>122287</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936035</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-03 17:15:46 -0700</bug_when>
    <thetext>Add callOperation framework to baseline JIT similar to what exists in DFG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936036</commentid>
    <comment_count>1</comment_count>
      <attachid>213313</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-03 17:23:19 -0700</bug_when>
    <thetext>Created attachment 213313
Patch

Converted cti_op_new_regexp() use to callOperation(operationNewRegexp()) as an example use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936039</commentid>
    <comment_count>2</comment_count>
      <attachid>213313</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-03 17:28:49 -0700</bug_when>
    <thetext>Comment on attachment 213313
Patch

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

&gt; Source/JavaScriptCore/jit/JITOperations.h:176
&gt; +void JIT_OPERATION operationStackCheck(ExecState*, void*) WTF_INTERNAL;

This line is not pertinent to this patch, is it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936051</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-03 17:43:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 213313 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213313&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITOperations.h:176
&gt; &gt; +void JIT_OPERATION operationStackCheck(ExecState*, void*) WTF_INTERNAL;
&gt; 
&gt; This line is not pertinent to this patch, is it?

I&apos;ll remove that.  It was part of something else I was trying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936071</commentid>
    <comment_count>4</comment_count>
      <attachid>213313</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-03 19:22:36 -0700</bug_when>
    <thetext>Comment on attachment 213313
Patch

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

&gt; Source/JavaScriptCore/jit/JITInlines.h:220
&gt; +ALWAYS_INLINE MacroAssembler::Call JIT::appendCallWithExceptionCheckSetResult(const FunctionPtr&amp; function, int dst)
&gt; +{
&gt; +    MacroAssembler::Call call = appendCallWithExceptionCheck(function);
&gt; +    emitStoreCell(dst, returnValueRegister);
&gt; +    return call;
&gt; +}

This doesn&apos;t look right. The return value from a stub is not guaranteed to be a cell. This will break when we start migrating more functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936094</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-03 21:09:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 213313 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213313&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITInlines.h:220
&gt; &gt; +ALWAYS_INLINE MacroAssembler::Call JIT::appendCallWithExceptionCheckSetResult(const FunctionPtr&amp; function, int dst)
&gt; &gt; +{
&gt; &gt; +    MacroAssembler::Call call = appendCallWithExceptionCheck(function);
&gt; &gt; +    emitStoreCell(dst, returnValueRegister);
&gt; &gt; +    return call;
&gt; &gt; +}
&gt; 
&gt; This doesn&apos;t look right. The return value from a stub is not guaranteed to be a cell. This will break when we start migrating more functions.

I&apos;ll make this version&apos;s name Cell specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936109</commentid>
    <comment_count>6</comment_count>
      <attachid>213334</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-03 21:57:55 -0700</bug_when>
    <thetext>Created attachment 213334
Patch with Updates from reviews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936119</commentid>
    <comment_count>7</comment_count>
      <attachid>213334</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-04 00:02:41 -0700</bug_when>
    <thetext>Comment on attachment 213334
Patch with Updates from reviews

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

&gt; Source/JavaScriptCore/jit/JITInlines.h:232
&gt; +ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(J_JITOperation_E operation, int dst)
&gt; +{
&gt; +    setupArgumentsExecState();
&gt; +    return appendCallWithExceptionCheckSetCellResult(operation, dst);
&gt; +}
&gt; +
&gt; +ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(J_JITOperation_EP operation, int dst, void* pointer)
&gt; +{
&gt; +    setupArgumentsWithExecState(TrustedImmPtr(pointer));
&gt; +    return appendCallWithExceptionCheckSetCellResult(operation, dst);
&gt; +}

I don&apos;t think you understood my meaning. The function types here are J_JITOperation_E and J_JITOperation_EP:

typedef EncodedJSValue JIT_OPERATION (*J_JITOperation_E)(ExecState*);
typedef EncodedJSValue JIT_OPERATION (*J_JITOperation_EP)(ExecState*, void*);

It&apos;s inappropriate for a utility function that calls a function returning EncodedJSValue to assume that the return value is a cell. That&apos;s the assembly equivalent of an invalid cast.

You should either change the return type of operationNewRegexp to be JSCell*, or you should change these call sites to store a full EncodedJSValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936231</commentid>
    <comment_count>8</comment_count>
      <attachid>213372</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-04 10:27:41 -0700</bug_when>
    <thetext>Created attachment 213372
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936252</commentid>
    <comment_count>9</comment_count>
      <attachid>213372</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-04 10:59:45 -0700</bug_when>
    <thetext>Comment on attachment 213372
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936262</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-04 11:19:24 -0700</bug_when>
    <thetext>Committed r156896: &lt;http://trac.webkit.org/changeset/156896&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213313</attachid>
            <date>2013-10-03 17:23:19 -0700</date>
            <delta_ts>2013-10-03 21:57:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>122306.patch</filename>
            <type>text/plain</type>
            <size>12597</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2ODY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDEzLTEwLTAzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBjYWxsT3BlcmF0aW9uIHRvIEJhc2VsaW5lIEpJVAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlZCBiYXNlbGluZSBKSVQgY29tcGF0
aWJsZSB2ZXJzaW9ucyBmb3IgYSBmZXcgZmxhdm9ycyBvZiBjYWxsT3BlcmF0aW9uKCkuCisgICAg
ICAgIE1pZ3JhdGVkIGN0aV9vcF9uZXdfcmVnZXhwKCkgYW5kIGl0cyBjYWxsZXIgdG8gY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAoKSkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6IE1vdmVkIG9wZXJhdGlvbk5ld1JlZ2V4cCgpIHRvIEpJVE9wZXJhdGlvbnMKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAg
ICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19yZWdleHApOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorCiAyMDEzLTEwLTAzICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgZ2Fy
ZGVuaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAxNTY4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDUsMTkgKzc0NSw2IEBAIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEEKICAgICByZXR1cm4gbmV3VHlwZWRBcnJh
eVdpdGhPbmVBcmd1bWVudDxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jl
Z2V4cChFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIHJlZ2V4cFB0cikKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
LSAgICBSZWdFeHAqIHJlZ2V4cCA9IHN0YXRpY19jYXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7Ci0g
ICAgaWYgKCFyZWdleHAtPmlzVmFsaWQoKSkgewotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBS
ZWdFeHAgY29uc3RydWN0b3IuIikpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJl
Z0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4
cFN0cnVjdHVyZSgpLCByZWdleHApKTsKLX0KLQogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZUFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAkocmV2aXNpb24gMTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAgY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQQogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgRW5j
b2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoT25lQXJndW1lbnQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9w
ZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1Njg1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw2ICs0MjEsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIENvZGVSZWYgcHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxs
KFZNKiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUGF0Y2hH
ZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwogCisgICAgICAg
IC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNo
ZWNrLgorICAgICAgICBDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9u
KQorICAgICAgICB7CisgICAgICAgICAgICBDYWxsIGZ1bmN0aW9uQ2FsbCA9IGNhbGwoKTsKKyAg
ICAgICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxSZWNvcmQoZnVuY3Rpb25DYWxsLCBtX2J5dGVj
b2RlT2Zmc2V0LCBmdW5jdGlvbi52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b25DYWxsOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNr
KEp1bXAganVtcFRvSGFuZGxlcikKICAgICAgICAgewogICAgICAgICAgICAgbV9leGNlcHRpb25D
aGVja3MuYXBwZW5kKGp1bXBUb0hhbmRsZXIpOwpAQCAtODUwLDYgKzg1OCwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2b2lkIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxs
KFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBpbnQgdmlydHVhbFJlZ2lzdGVySW5k
ZXgpOwogCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0
ciYsIGludCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRSwgaW50KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCwgaW50LCB2b2lkKik7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVAsIHZvaWQqKTsKKwog
ICAgICAgICBKdW1wIGNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSk7CiAKICAgICAgICAgdm9pZCByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2VGb3JUcmFt
cG9saW5lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2
aXNpb24gMTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsMzkgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6cmVzdG9yZUFyZ3VtZW50UgogICAgIC8vIEluIHRoZSB0cmFtcG9saW5lIG9uIHg4Ni02NCwg
dGhlIGZpcnN0IGFyZ3VtZW50IHJlZ2lzdGVyIGlzIG5vdCBvdmVyd3JpdHRlbi4KIH0KIAorQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQoreworICAgIHVwZGF0ZVRvcENh
bGxGcmFtZSgpOworICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1
bmN0aW9uKTsKKyAgICBleGNlcHRpb25DaGVjaygpOworICAgIHJldHVybiBjYWxsOworfQorCitB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIGludCBkc3Qp
Cit7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soZnVuY3Rpb24pOworICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZVJl
Z2lzdGVyKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKworQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24s
IGludCBkc3QpCit7CisgICAgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKKyAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIGRzdCk7Cit9
CisKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9pbnRlcikKK3sK
KyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7
CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCBkc3QpOworfQorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIHZvaWQqIHBvaW50ZXIp
Cit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRl
cikpOworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
Cit9CisgICAgCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3RydWN0dXJlKFJl
Z2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICByZXR1cm4gYnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE1Njg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTEsOSArMTIxMSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQoSW5zdHJ1Y3QKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfcmVnZXhwKTsKLSAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5yZWdleHAoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3
UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2NvZGVCbG9jay0+cmVn
ZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU2
ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIK
IAogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgog
I2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCkBAIC01ODcsNiArNTg4LDE5IEBAIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnMKICAgICByZXR1cm4gdmlydHVh
bEZvcihleGVjQ2FsbGVlLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCB2b2lkKiBy
ZWdleHBQdHIpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNf
Y2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOworICAgIGlmICghcmVnZXhwLT5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
IkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdleHApKTsKK30KKwogSklU
SGFuZGxlckVuY29kZWQgSklUX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTY4NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAxLDYgKzEwMSw3IEBAIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9w
ZXIKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRSkoRXhlY1N0
YXRlKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VPWkQp
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCwgZG91YmxlKTsKIHR5cGVkZWYgdm9pZCBK
SVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRU9aSikoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VQKShFeGVjU3RhdGUqLCB2b2lkKik7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIHR5
cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUNJY2YpKEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJ
T04gKCpWX0pJVE9wZXJhdGlvbl9FQ0NJY2YpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCos
IElubGluZUNhbGxGcmFtZSopOwpAQCAtMTcyLDYgKzE3Myw3IEBAIGlubGluZSBKSVRIYW5kbGVy
RW5jb2RlZCBkZmdIYW5kbGVyRW5jb2QKICNlbmRpZgogSklUSGFuZGxlckVuY29kZWQgSklUX09Q
RVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsK
IAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0YWNrQ2hlY2soRXhlY1N0YXRlKiwgdm9p
ZCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxk
TGlzdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwpA
QCAtMTk4LDYgKzIwMCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwo
RXgKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0
ZSopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENv
bnN0cnVjdChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkxpbmtDb25zdHJ1Y3QoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgdm9pZCop
IFdURl9JTlRFUk5BTDsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkocmV2aXNpb24gMTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzYsMjEgKzE5MzYsNiBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX25ld19mCiAgICAgcmV0dXJuIGZ1bmM7CiB9CiAK
LURFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X3JlZ2V4cCkKLXsKLSAgICBT
VFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAgUmVnRXhwKiByZWdFeHAgPSBzdGFj
a0ZyYW1lLmFyZ3NbMF0ucmVnRXhwKCk7Ci0gICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkgewot
ICAgICAgICBzdGFja0ZyYW1lLnZtLT50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZVN5
bnRheEVycm9yKGNhbGxGcmFtZSwgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNv
bnN0cnVjdG9yLiIpKTsKLSAgICAgICAgVk1fVEhST1dfRVhDRVBUSU9OKCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFJlZ0V4cE9iamVjdDo6Y3JlYXRlKCpzdGFja0ZyYW1lLnZtLCBzdGFja0ZyYW1l
LmNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVn
RXhwKTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2NhbGxf
ZXZhbCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxNTY4NTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3
ICszNTcsNiBAQCBKU09iamVjdCogSklUX1NUVUIgY3RpX29wX25ld19hcnJheV9idWZmCiBKU09i
amVjdCogSklUX1NUVUIgY3RpX29wX25ld19mdW5jKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOwogSlNPYmplY3QqIEpJVF9TVFVCIGN0aV9vcF9uZXdfZnVuY19leHAoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBKU09iamVjdCogSklUX1NUVUIgY3RpX29w
X25ld19vYmplY3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1KU09iamVj
dCogSklUX1NUVUIgY3RpX29wX25ld19yZWdleHAoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZf
SU5URVJOQUw7CiBKU09iamVjdCogSklUX1NUVUIgY3RpX29wX3B1c2hfYWN0aXZhdGlvbihTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1
c2hfbmFtZV9zY29wZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX1NUVUIgY3RpX29wX3B1c2hfd2l0aF9zY29wZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmgJKHJldmlzaW9uIDE1Njg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNs
dWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213334</attachid>
            <date>2013-10-03 21:57:55 -0700</date>
            <delta_ts>2013-10-04 10:27:41 -0700</delta_ts>
            <desc>Patch with Updates from reviews</desc>
            <filename>122306-2.patch</filename>
            <type>text/plain</type>
            <size>12068</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2ODY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDEzLTEwLTAzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBjYWxsT3BlcmF0aW9uIHRvIEJhc2VsaW5lIEpJVAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlZCBiYXNlbGluZSBKSVQgY29tcGF0
aWJsZSB2ZXJzaW9ucyBmb3IgYSBmZXcgZmxhdm9ycyBvZiBjYWxsT3BlcmF0aW9uKCkuCisgICAg
ICAgIE1pZ3JhdGVkIGN0aV9vcF9uZXdfcmVnZXhwKCkgYW5kIGl0cyBjYWxsZXIgdG8gY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAoKSkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6IE1vdmVkIG9wZXJhdGlvbk5ld1JlZ2V4cCgpIHRvIEpJVE9wZXJhdGlvbnMKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAg
ICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRDZWxsUmVzdWx0KToK
KyAgICAgICAgKEpTQzo6SklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKwogMjAxMy0xMC0wMyAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2Vk
IGdhcmRlbmluZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ1LDE5ICs3NDUsNiBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBCiAgICAgcmV0dXJuIG5ld1R5cGVk
QXJyYXlXaXRoT25lQXJndW1lbnQ8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCB2b2lkKiByZWdleHBQdHIpCi17Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7Ci0gICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIp
OwotICAgIGlmICghcmVnZXhwLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQg
dG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShSZWdFeHBPYmplY3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5y
ZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnZXhwKSk7Ci19Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgJKHJldmlzaW9uIDE1Njg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkEKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSos
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMy
X3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2
NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld1JlZ2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN0cmljdChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
UHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNTY4NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNiArNDIxLDE0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb2RlUmVmIHByaXZhdGVDb21waWxlQ1RJTmF0aXZl
Q2FsbChWTSosIE5hdGl2ZUZ1bmN0aW9uKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVBh
dGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKIAorICAg
ICAgICAvLyBBZGQgYSBjYWxsIG91dCBmcm9tIEpJVCBjb2RlLCB3aXRob3V0IGFuIGV4Y2VwdGlv
biBjaGVjay4KKyAgICAgICAgQ2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5j
dGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbCBmdW5jdGlvbkNhbGwgPSBjYWxsKCk7
CisgICAgICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgbV9i
eXRlY29kZU9mZnNldCwgZnVuY3Rpb24udmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uQ2FsbDsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCBleGNlcHRpb25D
aGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZXhjZXB0
aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKQEAgLTg1MCw2ICs4NTgsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBsaW5rU2xvd0Nhc2VJZk5vdEpT
Q2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgaW50IHZpcnR1YWxSZWdpc3Rl
ckluZGV4KTsKIAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyJik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRDZWxsUmVzdWx0KGNvbnN0IEZ1
bmN0aW9uUHRyJiwgaW50KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FLCBpbnQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQLCBpbnQsIHZvaWQqKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FUCwgdm9p
ZCopOworCiAgICAgICAgIEp1bXAgY2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCByZWcsIFN0cnVj
dHVyZSogc3RydWN0dXJlKTsKIAogICAgICAgICB2b2lkIHJlc3RvcmVBcmd1bWVudFJlZmVyZW5j
ZUZvclRyYW1wb2xpbmUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCShyZXZpc2lvbiAxNTY4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCwzOSBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjpyZXN0b3JlQXJndW1lbnRSCiAgICAgLy8gSW4gdGhlIHRyYW1wb2xpbmUgb24g
eDg2LTY0LCB0aGUgZmlyc3QgYXJndW1lbnQgcmVnaXN0ZXIgaXMgbm90IG92ZXJ3cml0dGVuLgog
fQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCit7CisgICAgdXBk
YXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVu
ZENhbGwoZnVuY3Rpb24pOworICAgIGV4Y2VwdGlvbkNoZWNrKCk7CisgICAgcmV0dXJuIGNhbGw7
Cit9CisKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0Q2VsbFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rp
b24sIGludCBkc3QpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworICAgIGVtaXRTdG9yZUNlbGwoZHN0LCBy
ZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKworQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RSBvcGVyYXRpb24sIGludCBkc3QpCit7CisgICAgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsK
KyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldENlbGxSZXN1bHQob3Bl
cmF0aW9uLCBkc3QpOworfQorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIGludCBkc3QsIHZv
aWQqIHBvaW50ZXIpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIocG9pbnRlcikpOworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0Q2VsbFJlc3VsdChvcGVyYXRpb24sIGRzdCk7Cit9CisKK0FMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VQIG9wZXJh
dGlvbiwgdm9pZCogcG9pbnRlcikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKK30KKyAgICAKIEFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJ
VDo6Y2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCByZWcsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewogICAgIHJldHVybiBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU2ODU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIxMSw5ICsxMjExLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChJbnN0
cnVjdAogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25l
d19yZWdleHApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPnJlZ2V4cChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOwotICAgIHN0
dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIG1fY29kZUJsb2NrLT5yZWdleHAoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAxNTY4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiSklUT3BlcmF0aW9ucy5oIgogCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBlcnMuaCIKQEAg
LTU4Nyw2ICs1ODgsMTkgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29u
cwogICAgIHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwog
fQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVj
U3RhdGUqIGV4ZWMsIHZvaWQqIHJlZ2V4cFB0cikKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBSZWdF
eHAqIHJlZ2V4cCA9IHN0YXRpY19jYXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7CisgICAgaWYgKCFy
ZWdleHAtPmlzVmFsaWQoKSkgeworICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29u
c3RydWN0b3IuIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUmVnRXhwT2JqZWN0Ojpj
cmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCks
IHJlZ2V4cCkpOworfQorCiBKSVRIYW5kbGVyRW5jb2RlZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4
Y2VwdGlvbkhhbmRsZXIoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDE1Njg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAgdHlwZWRlZiBzaXplX3QgSklU
X09QRVJBVElPTiAoKlNfSklUT3BlcgogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJ
VE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgq
Vl9KSVRPcGVyYXRpb25fRU9aRCkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90LCBkb3Vi
bGUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FT1pKKShF
eGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYg
dm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVApKEV4ZWNTdGF0ZSosIHZvaWQq
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUMpKEV4ZWNT
dGF0ZSosIEpTQ2VsbCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJh
dGlvbl9FQ0ljZikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSW5saW5lQ2FsbEZyYW1lKik7CiB0eXBl
ZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VDQ0ljZikoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgSlNDZWxsKiwgSW5saW5lQ2FsbEZyYW1lKik7CkBAIC0xOTgsNiArMTk5LDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChFeAogY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25MaW5rQ2xvc3VyZUNhbGwoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFM
OwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29uc3RydWN0KEV4ZWNTdGF0
ZSopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0
cnVjdChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwog
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lv
biAxNTY4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkzNiwyMSArMTkzNiw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpT
T2JqZWN0Kiwgb3BfbmV3X2YKICAgICByZXR1cm4gZnVuYzsKIH0KIAotREVGSU5FX1NUVUJfRlVO
Q1RJT04oSlNPYmplY3QqLCBvcF9uZXdfcmVnZXhwKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7Ci0KLSAgICBSZWdFeHAqIHJlZ0V4cCA9IHN0YWNrRnJhbWUuYXJnc1swXS5y
ZWdFeHAoKTsKLSAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIHN0YWNrRnJh
bWUudm0tPnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlU3ludGF4RXJyb3IoY2FsbEZy
YW1lLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOwot
ICAgICAgICBWTV9USFJPV19FWENFUFRJT04oKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gUmVnRXhw
T2JqZWN0OjpjcmVhdGUoKnN0YWNrRnJhbWUudm0sIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApOwotfQotCiBERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfY2FsbF9ldmFsKQogewogICAgIFNU
VUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE1Njg1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw2IEBAIEpTT2Jq
ZWN0KiBKSVRfU1RVQiBjdGlfb3BfbmV3X2FycmF5X2J1ZmYKIEpTT2JqZWN0KiBKSVRfU1RVQiBj
dGlfb3BfbmV3X2Z1bmMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBKU09i
amVjdCogSklUX1NUVUIgY3RpX29wX25ld19mdW5jX2V4cChTVFVCX0FSR1NfREVDTEFSQVRJT04p
IFdURl9JTlRFUk5BTDsKIEpTT2JqZWN0KiBKSVRfU1RVQiBjdGlfb3BfbmV3X29iamVjdChTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUpTT2JqZWN0KiBKSVRfU1RVQiBjdGlf
b3BfbmV3X3JlZ2V4cChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEpTT2Jq
ZWN0KiBKSVRfU1RVQiBjdGlfb3BfcHVzaF9hY3RpdmF0aW9uKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHVzaF9uYW1lX3Njb3BlKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfU1RVQiBjdGlfb3Bf
cHVzaF93aXRoX3Njb3BlKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24g
MTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50
aW9ucy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
KyNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgo=
</data>
<flag name="review"
          id="235678"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213372</attachid>
            <date>2013-10-04 10:27:41 -0700</date>
            <delta_ts>2013-10-04 10:59:45 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>122306-3.patch</filename>
            <type>text/plain</type>
            <size>14563</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDEzLTEwLTA0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBjYWxsT3BlcmF0aW9uIHRvIEJhc2VsaW5lIEpJVAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlZCBiYXNlbGluZSBKSVQgY29tcGF0
aWJsZSB2ZXJzaW9ucyBmb3IgYSBmZXcgZmxhdm9ycyBvZiBjYWxsT3BlcmF0aW9uKCkuCisgICAg
ICAgIE1pZ3JhdGVkIGN0aV9vcF9uZXdfcmVnZXhwKCkgYW5kIGl0cyBjYWxsZXIgdG8gY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAoKSkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6IE1vdmVkIG9wZXJhdGlvbk5ld1JlZ2V4cCgpIHRvIEpJVE9wZXJhdGlvbnMKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAg
ICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6SklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAqIGppdC9KSVRTdHVi
cy5oOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorCiAyMDEzLTEwLTAzICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE1NjgxMSk6
IFdlYkNvcmUgcmVidWlsZHMgZnJvbSBzY3JhdGNoIHdoZW4gZG9pbmcgYW4gaW5jcmVtZW50YWwg
YnVpbGQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ1LDE5ICs3NDUsNiBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBCiAgICAgcmV0dXJuIG5ld1R5cGVkQXJyYXlX
aXRoT25lQXJndW1lbnQ8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdl
eHAoRXhlY1N0YXRlKiBleGVjLCB2b2lkKiByZWdleHBQdHIpCi17Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0g
ICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwotICAg
IGlmICghcmVnZXhwLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVn
RXhwIGNvbnN0cnVjdG9yLiIpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSZWdF
eHBPYmplY3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBT
dHJ1Y3R1cmUoKSwgcmVnZXhwKSk7Ci19Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJ
KHJldmlzaW9uIDE1Njg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3RmxvYXQzMkEKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jl
Z2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2Vs
bFN0cmljdChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVy
dHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNTY4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNiArNDIxLDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBDb2RlUmVmIHByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChW
TSosIE5hdGl2ZUZ1bmN0aW9uKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVBhdGNoR2V0
QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKIAorICAgICAgICAv
LyBBZGQgYSBjYWxsIG91dCBmcm9tIEpJVCBjb2RlLCB3aXRob3V0IGFuIGV4Y2VwdGlvbiBjaGVj
ay4KKyAgICAgICAgQ2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikK
KyAgICAgICAgeworICAgICAgICAgICAgQ2FsbCBmdW5jdGlvbkNhbGwgPSBjYWxsKCk7CisgICAg
ICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgbV9ieXRlY29k
ZU9mZnNldCwgZnVuY3Rpb24udmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
Q2FsbDsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1w
VG9IYW5kbGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBl
bmQoanVtcFRvSGFuZGxlcik7CkBAIC04NTAsNiArODU4LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAgICAgICAgIHZvaWQgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCk7CiAKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhj
b25zdCBGdW5jdGlvblB0ciYpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYs
IGludCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRSwgaW50KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FUCwgaW50LCB2b2lkKik7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVAsIHZvaWQqKTsKKwogICAg
ICAgICBKdW1wIGNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CiAKICAgICAgICAgdm9pZCByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2VGb3JUcmFtcG9s
aW5lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNp
b24gMTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNDMgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6
cmVzdG9yZUFyZ3VtZW50UgogICAgIC8vIEluIHRoZSB0cmFtcG9saW5lIG9uIHg4Ni02NCwgdGhl
IGZpcnN0IGFyZ3VtZW50IHJlZ2lzdGVyIGlzIG5vdCBvdmVyd3JpdHRlbi4KIH0KIAorQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2soY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQoreworICAgIHVwZGF0ZVRvcENhbGxG
cmFtZSgpOworICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0
aW9uKTsKKyAgICBleGNlcHRpb25DaGVjaygpOworICAgIHJldHVybiBjYWxsOworfQorCitBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBpbnQg
ZHN0KQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyNlbHNlCisgICAgZW1p
dFN0b3JlKGRzdCwgcmV0dXJuVmFsdWUyUmVnaXN0ZXIsIHJldHVyblZhbHVlUmVnaXN0ZXIpOwor
I2VuZGlmCisgICAgcmV0dXJuIGNhbGw7Cit9CisKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBp
bnQgZHN0KQoreworICAgIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CisgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0
KTsKK30KKworQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVy
KQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50
ZXIpKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIHZv
aWQqIHBvaW50ZXIpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIocG9pbnRlcikpOworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7Cit9CisgICAgCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNr
U3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBy
ZXR1cm4gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE1Njg1NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTEs
OSArMTIxMSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQoSW5zdHJ1Y3QKIAog
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfcmVnZXhw
KTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5y
ZWdleHAoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsKLSAgICBzdHViQ2FsbC5j
YWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2Nv
ZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTU2ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpJVE9w
ZXJhdGlvbnMuaCIKIAogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkVy
cm9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCkBAIC01ODcsNiAr
NTg4LDE5IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnMKICAgICBy
ZXR1cm4gdmlydHVhbEZvcihleGVjQ2FsbGVlLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KIAorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBl
eGVjLCB2b2lkKiByZWdleHBQdHIpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgUmVnRXhwKiByZWdl
eHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOworICAgIGlmICghcmVnZXhwLT5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9y
LiIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdleHAp
KTsKK30KKwogSklUSGFuZGxlckVuY29kZWQgSklUX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25I
YW5kbGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAx
NTY4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gKCpTX0pJVE9wZXIKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRp
b25fRSkoRXhlY1N0YXRlKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3Bl
cmF0aW9uX0VPWkQpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCwgZG91YmxlKTsKIHR5
cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRU9aSikoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQKShFeGVjU3RhdGUqLCB2b2lkKik7CiB0eXBl
ZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBK
U0NlbGwqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUNJ
Y2YpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopOwogdHlwZWRlZiB2b2lk
IEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQ0NJY2YpKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCosIEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopOwpAQCAtMTk4LDYgKzE5OSw3IEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXgKIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3QoRXhl
Y1N0YXRlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIAogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTU2ODU3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MzYsMjEgKzE5MzYsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCos
IG9wX25ld19mCiAgICAgcmV0dXJuIGZ1bmM7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEpT
T2JqZWN0Kiwgb3BfbmV3X3JlZ2V4cCkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOwotCi0gICAgUmVnRXhwKiByZWdFeHAgPSBzdGFja0ZyYW1lLmFyZ3NbMF0ucmVnRXhwKCk7
Ci0gICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkgewotICAgICAgICBzdGFja0ZyYW1lLnZtLT50
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZVN5bnRheEVycm9yKGNhbGxGcmFtZSwgIklu
dmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKLSAgICAgICAg
Vk1fVEhST1dfRVhDRVBUSU9OKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFJlZ0V4cE9iamVjdDo6
Y3JlYXRlKCpzdGFja0ZyYW1lLnZtLCBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKTsKLX0KLQogREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2NhbGxfZXZhbCkKIHsKICAgICBTVFVCX0lOSVRf
U1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCShyZXZpc2lvbiAxNTY4NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNiBAQCBKU09iamVjdCogSklU
X1NUVUIgY3RpX29wX25ld19hcnJheV9idWZmCiBKU09iamVjdCogSklUX1NUVUIgY3RpX29wX25l
d19mdW5jKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogSlNPYmplY3QqIEpJ
VF9TVFVCIGN0aV9vcF9uZXdfZnVuY19leHAoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiBKU09iamVjdCogSklUX1NUVUIgY3RpX29wX25ld19vYmplY3QoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1KU09iamVjdCogSklUX1NUVUIgY3RpX29wX25ld19y
ZWdleHAoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBKU09iamVjdCogSklU
X1NUVUIgY3RpX29wX3B1c2hfYWN0aXZhdGlvbihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9J
TlRFUk5BTDsKIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1c2hfbmFtZV9zY29wZShTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1c2hfd2l0
aF9zY29wZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDE1Njg1NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIK
ICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVk
ZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKQEAgLTYxLDYgKzYyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIC8vIGhvd2V2ZXIgdGhlIGNvZGUgd2lsbCBzdGlsbCBmdW5jdGlv
biBjb3JyZWN0bHkuCiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OworICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZTJSZWdpc3RlciA9IFg4NlJlZ2lzdGVy
czo6ZWR4OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OwogI2lmICFPUyhXSU5ET1dTKQogICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OmVkaTsKQEAgLTg5LDYgKzkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAK
ICNlbGlmIENQVShYODYpCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZh
bHVlUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgcmV0dXJuVmFsdWUyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkeDsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OmVheDsKICAgICAgICAgLy8gT24geDg2IHdlIGFsd2F5cyB1c2UgZmFzdGNhbGwgY29u
dmVudGlvbnMgPSBidXQgb24KICAgICAgICAgLy8gT1MgWCBpZiBtaWdodCBtYWtlIG1vcmUgc2Vu
c2UgdG8ganVzdCB1c2UgcmVncGFybS4KQEAgLTEwOSw2ICsxMTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QzID0gWDg2UmVnaXN0
ZXJzOjp4bW0zOwogI2VsaWYgQ1BVKEFSTSkKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CisgICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlMlJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpy
MTsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIg
PSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJz
dEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMTsK
QEAgLTEzMSw2ICsxMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0
IEZQUmVnaXN0ZXJJRCBmcFJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpkMzsKICNlbGlmIENQVShNSVBT
KQogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0g
TUlQU1JlZ2lzdGVyczo6djA7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVy
blZhbHVlMlJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djE7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IE1J
UFNSZWdpc3RlcnM6OmEwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRB
cmd1bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTE7CkBAIC0xNjksNiArMTc0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFy
Z3VtZW50UmVnaXN0ZXIgPSByZWdUNTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpyMDsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWUyUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnIx
OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9
IFNINFJlZ2lzdGVyczo6cjA7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBm
cFJlZ1QwID0gU0g0UmVnaXN0ZXJzOjpkcjA7Cg==
</data>
<flag name="review"
          id="235720"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>