<?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>117102</bug_id>
          
          <creation_ts>2013-05-31 18:39:10 -0700</creation_ts>
          <short_desc>fourthTier: Arity fixup should be done while on same stack</short_desc>
          <delta_ts>2013-06-19 11:38:34 -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>
          <dependson>117719</dependson>
          <blocked>116888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>896043</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-05-31 18:39:10 -0700</bug_when>
    <thetext>We currently have a common slow path that checks for arity mismatch and then increases the stack frame for the needed missing parameters.  This is done while in a subroutine call on the C stack. We need to change this mechanism so that we can grow the stack while we are using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896044</commentid>
    <comment_count>1</comment_count>
      <attachid>203478</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-05-31 18:45:02 -0700</bug_when>
    <thetext>Created attachment 203478
Work in progress

Coded up new check and fixup stubs for X86 and X86_64 with the Baseline JIT using the new stubs.  Both platforms pass JSC tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900523</commentid>
    <comment_count>2</comment_count>
      <attachid>204706</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-14 05:53:43 -0700</bug_when>
    <thetext>Created attachment 204706
More work in progress

Working for all JITs for X86_64 and X86.  Need to change over the llint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900549</commentid>
    <comment_count>3</comment_count>
      <attachid>204706</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-14 07:19:33 -0700</bug_when>
    <thetext>Comment on attachment 204706
More work in progress

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

&gt; Source/JavaScriptCore/jit/JITStubsX86.h:114
&gt; +COMPILE_ASSERT(ASM_UNDEFINED_TAG == JSValue::UndefinedTag, JSValue_UndefinedTag_matches_ctiFixupArity);
&gt; +COMPILE_ASSERT(ASM_CALLFRAME_HEADER_SIZE == JSStack::CallFrameHeaderSize, JSStack_CallFrameHeaderSize_matches_ctiFixupArity);
&gt; +COMPILE_ASSERT(ASM_CALLFRAME_ARGUMENT_COUNT == JSStack::ArgumentCount, JSStack_ArgumentCount_matches_ctiFixupArity);

Why can&apos;t we just use these variables -- why do we need a #define?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:93
&gt; +    // Too few arguments, return the number missing arguments so the caller can

Should be &quot;number of missing&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900709</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-14 17:11:15 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 204706 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204706&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITStubsX86.h:114
&gt; &gt; +COMPILE_ASSERT(ASM_UNDEFINED_TAG == JSValue::UndefinedTag, JSValue_UndefinedTag_matches_ctiFixupArity);
&gt; &gt; +COMPILE_ASSERT(ASM_CALLFRAME_HEADER_SIZE == JSStack::CallFrameHeaderSize, JSStack_CallFrameHeaderSize_matches_ctiFixupArity);
&gt; &gt; +COMPILE_ASSERT(ASM_CALLFRAME_ARGUMENT_COUNT == JSStack::ArgumentCount, JSStack_ArgumentCount_matches_ctiFixupArity);
&gt; 
&gt; Why can&apos;t we just use these variables -- why do we need a #define?

I tried various constructs.  It appears that only the preprocessor runs before invoking the inline assembler and therefore the enums haven&apos;t been parsed.   Mark tried making these work with the inline assembler with his recent probe patch and couldn&apos;t get it to work either.

&gt; &gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:93
&gt; &gt; +    // Too few arguments, return the number missing arguments so the caller can
&gt; 
&gt; Should be &quot;number of missing&quot;.

Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900804</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-15 13:09:45 -0700</bug_when>
    <thetext>Can we use the MacroAssembler to generate this code instead? That will avoid the MACRO dependency / readability problem, and it will avoid having to write a copy of this code for each platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900805</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-15 13:11:42 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can we use the MacroAssembler to generate this code instead? That will avoid the MACRO dependency / readability problem, and it will avoid having to write a copy of this code for each platform.

Indeed.  I agree with Geoff.  This is how we usually do these things.  It also carries the benefit that the stubs could be inside our JIT pool, making all jumps to them be near jumps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900806</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-15 13:12:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Can we use the MacroAssembler to generate this code instead? That will avoid the MACRO dependency / readability problem, and it will avoid having to write a copy of this code for each platform.
&gt; 
&gt; Indeed.  I agree with Geoff.  This is how we usually do these things.  It also carries the benefit that the stubs could be inside our JIT pool, making all jumps to them be near jumps.

By the way, the best way to do this is to put it in jit/ThunkGenerators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900809</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-15 14:23:20 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Can we use the MacroAssembler to generate this code instead? That will avoid the MACRO dependency / readability problem, and it will avoid having to write a copy of this code for each platform.
&gt; &gt; 
&gt; &gt; Indeed.  I agree with Geoff.  This is how we usually do these things.  It also carries the benefit that the stubs could be inside our JIT pool, making all jumps to them be near jumps.
&gt; 
&gt; By the way, the best way to do this is to put it in jit/ThunkGenerators.

I&apos;ll code that up.

For the llint, I&apos;m going to replicate the code in the functionArityCheck macro and not make a call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901237</commentid>
    <comment_count>9</comment_count>
      <attachid>204875</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-17 18:42:35 -0700</bug_when>
    <thetext>Created attachment 204875
Work in progress using a thunk - lint work needed to finish patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901578</commentid>
    <comment_count>10</comment_count>
      <attachid>204950</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-18 16:25:49 -0700</bug_when>
    <thetext>Created attachment 204950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901588</commentid>
    <comment_count>11</comment_count>
      <attachid>204955</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-18 16:52:59 -0700</bug_when>
    <thetext>Created attachment 204955
Patch with minor fix - replaced literals with const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901876</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-06-19 11:38:34 -0700</bug_when>
    <thetext>Committed r151744: &lt;http://trac.webkit.org/changeset/151744&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203478</attachid>
            <date>2013-05-31 18:45:02 -0700</date>
            <delta_ts>2013-06-14 05:53:43 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>arity-fixup-inline-wip2.patch</filename>
            <type>text/plain</type>
            <size>11137</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkocmV2
aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3Rh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIENvZGVCbG9jayA9IC0xLAogICAgICAgICB9OwogCisjZGVmaW5lIEFTTV9DQUxM
RlJBTUVfSEVBREVSX1NJWkUgNgorI2RlZmluZSBBU01fQ0FMTEZSQU1FX0FSR1VNRU5UX0NPVU5U
IC02CisKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBkZWZhdWx0Q2FwYWNpdHkgPSA1MTIg
KiAxMDI0OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbW1pdFNpemUgPSAxNiAqIDEw
MjQ7CiAgICAgICAgIC8vIEFsbG93IDhrIG9mIGV4Y2VzcyByZWdpc3RlcnMgYmVmb3JlIHdlIHN0
YXJ0IHRyeWluZyB0byByZWFwIHRoZSBzdGFjawpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjgsNyArNzI4LDExIEBAIFBhc3NSZWZQdHI8SklUQ29k
ZT4gSklUOjpwcml2YXRlQ29tcGlsZSgKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBy
ZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKS5saW5rVG8o
YmVnaW5MYWJlbCwgdGhpcyk7CiAKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7Ci0gICAg
ICAgIEpJVFN0dWJDYWxsKHRoaXMsIG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBjdGlf
b3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKS5jYWxsKGNh
bGxGcmFtZVJlZ2lzdGVyKTsKKworICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBtX2NvZGVCbG9j
ay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrTmV3IDogY3Rp
X29wX2NhbGxfYXJpdHlDaGVja05ldykuY2FsbChyZWdUMCk7CisgICAgICAgIGJyYW5jaFRlc3Qz
MihaZXJvLCByZWdUMCkubGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOworICAgICAgICBtX2NhbGxz
LmFwcGVuZChDYWxsUmVjb3JkKGNhbGwoKSwgbV9ieXRlY29kZU9mZnNldCwgRnVuY3Rpb25QdHIo
Y3RpRml4dXBBcml0eSkudmFsdWUoKSkpOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAg
ICBtX2J5dGVjb2RlT2Zmc2V0ID0gKHVuc2lnbmVkKS0xOyAvLyBSZXNldCB0aGlzLCBpbiBvcmRl
ciB0byBndWFyZCBpdHMgdXNlIHdpdGggQVNTRVJUcy4KICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU5LDYg
KzEyNTksMTkgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdAogICAg
IHJldHVybiBuZXdDYWxsRnJhbWU7CiB9CiAKK0RFRklORV9TVFVCX0ZVTkNUSU9OKGludCwgb3Bf
Y2FsbF9hcml0eUNoZWNrTmV3KQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0Zy
YW1lKTsKKyAgICAKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOworICAgIAorICAgIGludCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25TbG93UGF0aHM6OmFy
aXR5Q2hlY2tGb3JOZXcoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnN0YWNrLCBDb2RlRm9yQ2FsbCk7
CisgICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApCisgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbkZyb21PcENhbGw8aW50PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FE
RFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkp
KTsKKyAgICAKKyAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OworfQorCiBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0X2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMTI3Miw2ICsxMjg1LDE5IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1l
OwogfQogCitERUZJTkVfU1RVQl9GVU5DVElPTihpbnQsIG9wX2NvbnN0cnVjdF9hcml0eUNoZWNr
TmV3KQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICAKKyAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIAorICAg
IGludCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3JOZXco
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnN0YWNrLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAo
bWlzc2luZ0FyZ0NvdW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9w
Q2FsbDxpbnQ+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOworICAgIAor
ICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7Cit9CisKIGlubGluZSB2b2lkKiBsYXp5TGlua0Zv
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewog
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbEZyYW1lLT5j
YWxsZWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lv
biAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxMCw2ICszMTAsOCBAQCBleHRlcm4gIkMiIHZvaWQgY3RpT3BUaHJvd05v
dENhdWdodCgpOwogZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBjdGlUcmFtcG9saW5lKHZvaWQq
IGNvZGUsIEpTU3RhY2sqLCBDYWxsRnJhbWUqLCB2b2lkKiAvKnVudXNlZDEqLywgdm9pZCogLyp1
bnVzZWQyKi8sIFZNKik7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBleHRlcm4gIkMiIHZvaWQgY3Rp
VHJhbXBvbGluZUVuZCgpOworZXh0ZXJuICJDIiB2b2lkIGN0aUZpeHVwQXJpdHkoaW50MzJfdCkg
V1RGX0lOVEVSTkFMOworCiAKIGlubGluZSBib29sIHJldHVybkFkZHJlc3NJc0luQ3RpVHJhbXBv
bGluZShSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CkBAIC00MzQsNiArNDM2LDgg
QEAgdm9pZCBKSVRfU1RVQiBjdGlfb3B0aW1pemUoU1RVQl9BUkdTX0RFQwogI2VuZGlmCiB2b2lk
KiBKSVRfU1RVQiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNr
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOworaW50IEpJVF9TVFVCIGN0aV9v
cF9jYWxsX2FyaXR5Q2hlY2tOZXcoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7
CitpbnQgSklUX1NUVUIgY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrTmV3KFNUVUJfQVJHU19E
RUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3RpX29wX2NhbGxfaml0
Q29tcGlsZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9T
VFVCIGN0aV9vcF9jb25zdHJ1Y3Rfaml0Q29tcGlsZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0aV9vcF9zd2l0Y2hfY2hhcihTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKQEAgLTQ0NSw2ICs0NDksNyBAQCB2b2lkKiBKSVRf
U1RVQiBjdGlfdm1fbGF6eUxpbmtDYWxsKFNUVUJfCiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fbGF6
eUxpbmtDbG9zdXJlQ2FsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZv
aWQqIEpJVF9TVFVCIGN0aV92bV9sYXp5TGlua0NvbnN0cnVjdChTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0aV92bV90aHJvdyhTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOworCiB9IC8vIGV4
dGVybiAiQyIKIAogI2VsaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzWDg2LmgJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsOCBAQAogI2RlZmluZSBKSVRTdHVic1g4Nl9oCiAKICNpbmNsdWRlICJKSVRTdHVic1g4NkNv
bW1vbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU1N0YWNrLmgiCiAK
ICNpZiAhQ1BVKFg4NikKICNlcnJvciAiSklUU3R1YnNYODYuaCBzaG91bGQgb25seSBiZSAjaW5j
bHVkZWQgaWYgQ1BVKFg4NikiCkBAIC05Nyw2ICs5OSw0NiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9w
VGhyb3dOb3RDYXVnaHQpICI6IiAiCiAgICAgInJldCIgIlxuIgogKTsKIAorQ09NUElMRV9BU1NF
UlQoQVNNX1VOREVGSU5FRF9UQUcgPT0gSlNWYWx1ZTo6VW5kZWZpbmVkVGFnLCBKU1ZhbHVlX1Vu
ZGVmaW5lZFRhZ19tYXRjaGVzX2N0aUZpeHVwQXJpdHkpOworQ09NUElMRV9BU1NFUlQoQVNNX0NB
TExGUkFNRV9IRUFERVJfU0laRSA9PSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBKU1N0
YWNrX0NhbGxGcmFtZUhlYWRlclNpemVfbWF0Y2hlc19jdGlGaXh1cEFyaXR5KTsKK0NPTVBJTEVf
QVNTRVJUKEFTTV9DQUxMRlJBTUVfQVJHVU1FTlRfQ09VTlQgPT0gSlNTdGFjazo6QXJndW1lbnRD
b3VudCwgSlNTdGFja19Bcmd1bWVudENvdW50X21hdGNoZXNfY3RpRml4dXBBcml0eSk7CisKK2Fz
bSAoCisvLyBUaGlzIHN0dWIgaGFuZGxlcyBhIHN0YWNrIHRoYXQgZ3Jvd3MgdXAgYW5kIHdvdWxk
IG5lZWQgdG8gYmUgY2hhbmdlZCBmb3IgYSBzdGFjaworLy8gdGhhdCBncm93cyBkb3duLgorIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpRml4dXBBcml0eSkgIlxuIgorSElERV9TWU1CT0woY3Rp
Rml4dXBBcml0eSkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlGaXh1cEFyaXR5KSAiOiIgIlxuIgor
ICAgICJwb3BsICVlc2kiICJcbiIKKyAgICAibGVhbCAtMHg4KCVlZGkpLCAlZWJ4IiAiXG4iCisg
ICAgIm1vdmwgOCoiIFNUUklOR0laRV9WQUxVRV9PRihBU01fQ0FMTEZSQU1FX0FSR1VNRU5UX0NP
VU5UKSAiKCVlZGkpLCAlZWN4IiAiXG4iCisgICAgImFkZGwgJCIgU1RSSU5HSVpFX1ZBTFVFX09G
KEFTTV9DQUxMRlJBTUVfSEVBREVSX1NJWkUpICIsICVlY3giICJcbiIKK1NZTUJPTF9TVFJJTkco
c2xvdENvcHlMb29wKSAiOiIgIlxuIgorICAgICJtb3ZsICglZWJ4KSwgJWVkeCIgIlxuIgorICAg
ICJtb3ZsICVlZHgsICglZWJ4LCAlZWF4LCA4KSIgIlxuIgorICAgICJtb3ZsIDQoJWVieCksICVl
ZHgiICJcbiIKKyAgICAibW92bCAlZWR4LCA0KCVlYngsICVlYXgsIDgpIiAiXG4iCisgICAgInN1
YmwgJDB4OCwgJWVieCIgIlxuIgorICAgICJzdWJsICQweDEsICVlY3giICJcbiIKKyAgICAiam56
ICIgTE9DQUxfUkVGRVJFTkNFKHNsb3RDb3B5TG9vcCkgIlxuIgorCisgICAgIm1vdmwgJWVheCwg
JWVjeCIgIlxuIgorU1lNQk9MX1NUUklORyh1bmRlZmluZWRGaWxsTG9vcCkgIjoiICJcbiIKKyAg
ICAieG9ybCAlZWR4LCAlZWR4IiAiXG4iCisgICAgIm1vdmwgJWVkeCwgKCVlYngsICVlYXgsIDgp
IiAiXG4iCisgICAgIm1vdmwgJCIgU1RSSU5HSVpFX1ZBTFVFX09GKEFTTV9VTkRFRklORURfVEFH
KSAiLCAlZWR4IiAiXG4iCisgICAgIm1vdmwgJWVkeCwgNCglZWJ4LCAlZWF4LCA4KSIgIlxuIgor
ICAgICJzdWJsICQweDgsICVlYngiICJcbiIKKyAgICAic3VibCAkMHgxLCAlZWN4IiAiXG4iCisg
ICAgImpueiAiIExPQ0FMX1JFRkVSRU5DRSh1bmRlZmluZWRGaWxsTG9vcCkgIlxuIgorCisgICAg
InNobGwgJDB4MywgJWVheCIgIlxuIgorICAgICJhZGRsICVlYXgsICVlZGkiICJcbiIKKyAgICAi
cHVzaGwgJWVzaSIgIlxuIgorICAgICJyZXQiICJcbiIKKyk7CisKKwogI2lmIFVTRShNQVNNX1BS
T0JFKQogYXNtICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUpICJcbiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODZfNjQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2XzY0
LmgJKHJldmlzaW9uIDE1MDg0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnNYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogI2RlZmluZSBKSVRT
dHVic1g4Nl82NF9oCiAKICNpbmNsdWRlICJKSVRTdHVic1g4NkNvbW1vbi5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU1N0YWNrLmgiCiAKICNpZiAhQ1BVKFg4Nl82NCkK
ICNlcnJvciAiSklUU3R1YnNYODZfNjQuaCBzaG91bGQgb25seSBiZSAjaW5jbHVkZWQgaWYgQ1BV
KFg4Nl82NCkiCkBAIC0xMTIsNiArMTE0LDQxIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05v
dENhdWdodCkgIjoiICIKICAgICAicmV0IiAiXG4iCiApOwogCitDT01QSUxFX0FTU0VSVChBU01f
VkFMVUVfVU5ERUZJTkVEID09IFZhbHVlVW5kZWZpbmVkLCBKU1ZhbHVlX1ZhbHVlVW5kZWZpbmVk
X21hdGNoZXNfY3RpRml4dXBBcml0eSk7CitDT01QSUxFX0FTU0VSVChBU01fQ0FMTEZSQU1FX0hF
QURFUl9TSVpFID09IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUsIEpTU3RhY2tfQ2FsbEZy
YW1lSGVhZGVyU2l6ZV9tYXRjaGVzX2N0aUZpeHVwQXJpdHkpOworQ09NUElMRV9BU1NFUlQoQVNN
X0NBTExGUkFNRV9BUkdVTUVOVF9DT1VOVCA9PSBKU1N0YWNrOjpBcmd1bWVudENvdW50LCBKU1N0
YWNrX0FyZ3VtZW50Q291bnRfbWF0Y2hlc19jdGlGaXh1cEFyaXR5KTsKKworYXNtICgKKy8vIFRo
aXMgc3R1YiBoYW5kbGVzIGEgc3RhY2sgdGhhdCBncm93cyB1cCBhbmQgd291bGQgbmVlZCB0byBi
ZSBjaGFuZ2VkIGZvciBhIHN0YWNrCisvLyB0aGF0IGdyb3dzIGRvd24uCisiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhjdGlGaXh1cEFyaXR5KSAiXG4iCitISURFX1NZTUJPTChjdGlGaXh1cEFyaXR5
KSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aUZpeHVwQXJpdHkpICI6IiAiXG4iCisgICAgInBvcCAl
cjExIiAiXG4iCisgICAgImxlYSAtMHg4KCVyMTMpLCAlcmJ4IiAiXG4iCisgICAgIm1vdiA4KiIg
U1RSSU5HSVpFX1ZBTFVFX09GKEFTTV9DQUxMRlJBTUVfQVJHVU1FTlRfQ09VTlQpICIoJXIxMyks
ICVlY3giICJcbiIKKyAgICAiYWRkICQiIFNUUklOR0laRV9WQUxVRV9PRihBU01fQ0FMTEZSQU1F
X0hFQURFUl9TSVpFKSAiLCAlZWN4IiAiXG4iCitTWU1CT0xfU1RSSU5HKHNsb3RDb3B5TG9vcCkg
IjoiICJcbiIKKyAgICAibW92ICglcmJ4KSwgJXJkeCIgIlxuIgorICAgICJtb3YgJXJkeCwgKCVy
YngsICVyYXgsIDgpIiAiXG4iCisgICAgInN1YiAkMHg4LCAlcmJ4IiAiXG4iCisgICAgInN1YiAk
MHgxLCAlZWN4IiAiXG4iCisgICAgImpueiAiIExPQ0FMX1JFRkVSRU5DRShzbG90Q29weUxvb3Ap
ICJcbiIKKworICAgICJtb3YgJXJheCwgJXJjeCIgIlxuIgorICAgICJtb3YgJCIgU1RSSU5HSVpF
X1ZBTFVFX09GKEFTTV9WQUxVRV9VTkRFRklORUQpICIsICVlZHgiICJcbiIKK1NZTUJPTF9TVFJJ
TkcodW5kZWZpbmVkRmlsbExvb3ApICI6IiAiXG4iCisgICAgIm1vdiAlcmR4LCAoJXJieCwgJXJh
eCwgOCkiICJcbiIKKyAgICAic3ViICQweDgsICVyYngiICJcbiIKKyAgICAic3ViICQweDEsICVl
Y3giICJcbiIKKyAgICAiam56ICIgTE9DQUxfUkVGRVJFTkNFKHVuZGVmaW5lZEZpbGxMb29wKSAi
XG4iCisKKyAgICAic2hsICQweDMsICVlYXgiICJcbiIKKyAgICAiYWRkICVyYXgsICVyMTMiICJc
biIKKyAgICAicHVzaCAlcjExIiAiXG4iCisgICAgInJldCIgIlxuIgorKTsKKwogI2lmIFVTRShN
QVNNX1BST0JFKQogYXNtICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUpICJcbiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNTA4NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiAr
NzUsMjQgQEAgQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRQogICAgIHJl
dHVybiBuZXdFeGVjOwogfQogCitBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yTmV3KEV4
ZWNTdGF0ZSogZXhlYywgSlNTdGFjayogc3RhY2ssIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMt
PmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAg
Q29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKyAgICAKKyAgICAvLyBUaGlz
IGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJv
IGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXN0YWNrLT5ncm93KGV4
ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIAor
ICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKTsKKyAgICAKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cywgcmV0dXJuIHRo
ZSBudW1iZXIgbWlzc2luZyBhcmd1bWVudHMgc28gdGhlIGNhbGxlciBjYW4KKyAgICAvLyBncm93
IHRoZSBmcmFtZSBpbiBwbGFjZSBhbmQgZmlsbCBpbiB1bmRlZmluZWQgdmFsdWVzIGZvciB0aGUg
bWlzc2luZyBhcmdzLgorICAgIHJldHVybihuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKK30KKwogaW5saW5lIGJvb2wgb3BJbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvcE5hbWUsIEpTVmFsdWUgYmFzZVZhbCkKIHsKICAgICBp
ZiAoIWJhc2VWYWwuaXNPYmplY3QoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTUwODQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4
LDggQEAgcHVibGljOgogICAgIGVudW0geyBEZWxldGVkVmFsdWVUYWcgPSAweGZmZmZmZmY5IH07
CiAKICAgICBlbnVtIHsgTG93ZXN0VGFnID0gIERlbGV0ZWRWYWx1ZVRhZyB9OworCisjZGVmaW5l
IEFTTV9VTkRFRklORURfVEFHIDB4ZmZmZmZmZmMKICNlbmRpZgogCiAgICAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZShKU1ZhbHVlKTsKQEAgLTM3Niw2ICszNzgsNyBAQCBwcml2YXRlOgog
ICAgICNkZWZpbmUgVmFsdWVUcnVlICAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wg
fCB0cnVlKQogICAgICNkZWZpbmUgVmFsdWVVbmRlZmluZWQgKFRhZ0JpdFR5cGVPdGhlciB8IFRh
Z0JpdFVuZGVmaW5lZCkKICAgICAjZGVmaW5lIFZhbHVlTnVsbCAgICAgIChUYWdCaXRUeXBlT3Ro
ZXIpCisgICAgI2RlZmluZSBBU01fVkFMVUVfVU5ERUZJTkVEIDB4YQogCiAgICAgLy8gVGFnTWFz
ayBpcyB1c2VkIHRvIGNoZWNrIGZvciBhbGwgdHlwZXMgb2YgaW1tZWRpYXRlIHZhbHVlcyAoZWl0
aGVyIG51bWJlciBvciAnb3RoZXInKS4KICAgICAjZGVmaW5lIFRhZ01hc2sgKFRhZ1R5cGVOdW1i
ZXIgfCBUYWdCaXRUeXBlT3RoZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204706</attachid>
            <date>2013-06-14 05:53:43 -0700</date>
            <delta_ts>2013-06-17 18:42:35 -0700</delta_ts>
            <desc>More work in progress</desc>
            <filename>arity-fixup-inline-wip4.patch</filename>
            <type>text/plain</type>
            <size>15451</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNTc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEzLTA2LTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIGZvdXJ0aFRpZXI6IEFyaXR5IGZpeHVwIHNob3VsZCBiZSBkb25lIHdoaWxlIG9uIHNhbWUg
c3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NzEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua0Z1
bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpJVENv
bXBpbGVyKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
bGluayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFjay5oOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogaml0L0pJVFN0dWJzWDg2Lmg6Cisg
ICAgICAgICogaml0L0pJVFN0dWJzWDg2XzY0Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
TmV3KToKKyAgICAgICAgKENvbW1vblNsb3dQYXRocyk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAxMy0wNi0xMSAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGZvdXJ0aFRpZXI6IERGRyBzaG91bGQgc3Vw
cG9ydCBvcF9pbiBhbmQgaXQgc2hvdWxkIHVzZSBwYXRjaGluZyB0byBtYWtlIGl0IGZhc3QKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZp
c2lvbiAxNTE1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1NywxMCBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlRnVuY3Rpb24oKQogICAgIGJlZ2luQ2FsbChDb2RlT3JpZ2luKDApLCB0b2tlbik7
CiAgICAgbV9jYWxsQXJpdHlDaGVjayA9IGNhbGwoKTsKICAgICBub3RpZnlDYWxsKG1fY2FsbEFy
aXR5Q2hlY2ssIENvZGVPcmlnaW4oMCksIHRva2VuKTsKLSAgICBtb3ZlKEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgYnJhbmNoVGVzdDMyKFplcm8sIEdQ
UkluZm86OnJlZ1QwKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGJlZ2luQ2Fs
bChDb2RlT3JpZ2luKDApLCB0b2tlbik7CisgICAgbV9jYWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsK
KyAgICBub3RpZnlDYWxsKG1fY2FsbEFyaXR5Rml4dXAsIENvZGVPcmlnaW4oMCksIHRva2VuKTsK
ICAgICBqdW1wKGZyb21Bcml0eUNoZWNrKTsKICAgICAKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBh
dGggY29kZS4KQEAgLTM4NSw2ICszODgsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rRnVuY3Rp
b24oKQogICAgIC8vIEZJWE1FOiBzd2l0Y2ggdGhlIHN0YWNrIGNoZWNrICYgYXJpdHkgY2hlY2sg
b3ZlciB0byBERkdPcGVydGFpb24gc3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCiAgICAgbGlu
a0J1ZmZlci0+bGluayhtX2NhbGxTdGFja0NoZWNrLCBjdGlfc3RhY2tfY2hlY2spOwogICAgIGxp
bmtCdWZmZXItPmxpbmsobV9jYWxsQXJpdHlDaGVjaywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1
Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hl
Y2spOworICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJpdHlGaXh1cCwgY3RpRml4dXBBcml0
eSk7CiAgICAgCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTUxNTc2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MTYsNiArNTE2LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBDYWxsIG1fY2Fs
bFN0YWNrQ2hlY2s7CiAgICAgQ2FsbCBtX2NhbGxBcml0eUNoZWNrOworICAgIENhbGwgbV9jYWxs
QXJpdHlGaXh1cDsKICAgICBMYWJlbCBtX2FyaXR5Q2hlY2s7CiAgICAgT3duUHRyPFNwZWN1bGF0
aXZlSklUPiBtX3NwZWN1bGF0aXZlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMaW5rLmNwcAkocmV2aXNpb24gMTUxNTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDEyICsxMTUsMTMgQEAgdm9pZCBs
aW5rKFN0YXRlJiBzdGF0ZSkKICAgICAvLyBGSVhNRTogbmVlZCB0byBtYWtlIHRoaXMgY2FsbCBy
ZWdpc3RlciB3aXRoIGV4Y2VwdGlvbiBoYW5kbGluZyBzb21laG93LiBUaGlzIGlzCiAgICAgLy8g
cGFydCBvZiBhIGJpZ2dlciBwcm9ibGVtOiBGVEwgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGV4
Y2VwdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMzYyMgotICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUklu
Zm86OnJlZ1QwKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssICZqaXQpOworICAgIENDYWxsSGVscGVy
czo6Q2FsbCBjYWxsQXJpdHlGaXh1cCA9IGppdC5jYWxsKCk7CiAgICAgaml0Lmp1bXAoZnJvbUFy
aXR5Q2hlY2spOwotICAgICAgICAKICAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9
IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHN0YXRlLmdyYXBoLm1fdm0sICZqaXQsIHN0YXRlLmdy
YXBoLm1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgbGlua0J1
ZmZlci0+bGluayhjYWxsU3RhY2tDaGVjaywgY3RpX3N0YWNrX2NoZWNrKTsKICAgICBsaW5rQnVm
ZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jay0+bV9pc0Nv
bnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrIDogY3RpX29wX2NhbGxfYXJp
dHlDaGVjayk7CisgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgY3RpRml4dXBB
cml0eSk7CiAgICAgCiAgICAgc3RhdGUuZmluYWxpemVyLT5pbml0aWFsaXplRW50cnlwb2ludExp
bmtCdWZmZXIobGlua0J1ZmZlci5yZWxlYXNlKCkpOwogICAgIHN0YXRlLmZpbmFsaXplci0+aW5p
dGlhbGl6ZUZ1bmN0aW9uKHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkocmV2aXNpb24gMTUxNTc2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNiArNjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIENvZGVC
bG9jayA9IC0xLAogICAgICAgICB9OwogCisjZGVmaW5lIEFTTV9DQUxMRlJBTUVfSEVBREVSX1NJ
WkUgNgorI2RlZmluZSBBU01fQ0FMTEZSQU1FX0FSR1VNRU5UX0NPVU5UIC02CisKICAgICAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBkZWZhdWx0Q2FwYWNpdHkgPSA1MTIgKiAxMDI0OwogICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbW1pdFNpemUgPSAxNiAqIDEwMjQ7CiAgICAgICAgIC8v
IEFsbG93IDhrIG9mIGV4Y2VzcyByZWdpc3RlcnMgYmVmb3JlIHdlIHN0YXJ0IHRyeWluZyB0byBy
ZWFwIHRoZSBzdGFjawpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
MTUxNTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NTQsNyArNjU0LDExIEBAIFBhc3NSZWZQdHI8SklUQ29kZT4gSklUOjpwcml2YXRl
Q29tcGlsZSgKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhp
cyk7CiAKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7Ci0gICAgICAgIEpJVFN0dWJDYWxs
KHRoaXMsIG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBjdGlfb3BfY29uc3RydWN0X2Fy
aXR5Q2hlY2sgOiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKS5jYWxsKGNhbGxGcmFtZVJlZ2lzdGVy
KTsKKworICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVj
dG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrIDogY3RpX29wX2NhbGxfYXJpdHlDaGVj
aykuY2FsbChyZWdUMCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCkubGlua1Rv
KGJlZ2luTGFiZWwsIHRoaXMpOworICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGNh
bGwoKSwgbV9ieXRlY29kZU9mZnNldCwgRnVuY3Rpb25QdHIoY3RpRml4dXBBcml0eSkudmFsdWUo
KSkpOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0g
KHVuc2lnbmVkKS0xOyAvLyBSZXNldCB0aGlzLCBpbiBvcmRlciB0byBndWFyZCBpdHMgdXNlIHdp
dGggQVNTRVJUcy4KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHJldmlzaW9uIDE1MTU3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU3LDMwICsxMTU3LDMwIEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQorREVGSU5F
X1NUVUJfRlVOQ1RJT04oaW50LCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCisgICAgCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5z
dGFjaywgQ29kZUZvckNhbGwpOwotICAgIGlmICghbmV3Q2FsbEZyYW1lKQotICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUs
IFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCkpKTsKLQotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CisgICAgCisgICAg
aW50IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvck5ldyhj
YWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ssIENvZGVGb3JDYWxsKTsKKyAgICBpZiAobWlzc2lu
Z0FyZ0NvdW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDxp
bnQ+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOworICAgIAorICAgIHJl
dHVybiBtaXNzaW5nQXJnQ291bnQ7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBv
cF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK0RFRklORV9TVFVCX0ZVTkNUSU9OKGludCwgb3BfY29u
c3RydWN0X2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJh
bWUpOwotCisgICAgCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjph
cml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5zdGFjaywgQ29kZUZvckNvbnN0cnVj
dCk7Ci0gICAgaWYgKCFuZXdDYWxsRnJhbWUpCi0gICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQURE
UkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkp
OwotCi0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKKyAgICAKKyAgICBpbnQgbWlzc2luZ0FyZ0Nv
dW50ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yTmV3KGNhbGxGcmFtZSwgc3RhY2tG
cmFtZS5zdGFjaywgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8
IDApCisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8aW50PihzdGFja0Zy
YW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKKyAgICAKKyAgICByZXR1cm4gbWlzc2lu
Z0FyZ0NvdW50OwogfQogCiBpbmxpbmUgdm9pZCogbGF6eUxpbmtGb3IoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE1MTU3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCw4IEBAIGV4
dGVybiAiQyIgdm9pZCBjdGlPcFRocm93Tm90Q2F1Z2h0KCk7CiBleHRlcm4gIkMiIEVuY29kZWRK
U1ZhbHVlIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgSlNTdGFjayosIENhbGxGcmFtZSosIHZv
aWQqIC8qdW51c2VkMSovLCB2b2lkKiAvKnVudXNlZDIqLywgVk0qKTsKICNpZiBFTkFCTEUoREZH
X0pJVCkKIGV4dGVybiAiQyIgdm9pZCBjdGlUcmFtcG9saW5lRW5kKCk7CitleHRlcm4gIkMiIHZv
aWQgY3RpRml4dXBBcml0eShpbnQzMl90KSBXVEZfSU5URVJOQUw7CisKIAogaW5saW5lIGJvb2wg
cmV0dXJuQWRkcmVzc0lzSW5DdGlUcmFtcG9saW5lKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKIHsKQEAgLTQwMCw4ICs0MDIsOCBAQCB2b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19z
dGF0aWNfZXJyb3IoCiAjaWYgRU5BQkxFKERGR19KSVQpCiB2b2lkIEpJVF9TVFVCIGN0aV9vcHRp
bWl6ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICNlbmRpZgotdm9pZCog
SklUX1NUVUIgY3RpX29wX2NhbGxfYXJpdHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKLXZvaWQqIEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayhT
VFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKK2ludCBKSVRfU1RVQiBjdGlfb3Bf
Y2FsbF9hcml0eUNoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOworaW50
IEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0aV9vcF9jYWxsX2ppdENvbXBpbGUo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlf
b3BfY29uc3RydWN0X2ppdENvbXBpbGUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJO
QUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3Bfc3dpdGNoX2NoYXIoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
c1g4Ni5oCShyZXZpc2lvbiAxNTE1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAKICNkZWZpbmUgSklU
U3R1YnNYODZfaAogCiAjaW5jbHVkZSAiSklUU3R1YnNYODZDb21tb24uaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNTdGFjay5oIgogCiAjaWYgIUNQVShYODYpCiAjZXJy
b3IgIkpJVFN0dWJzWDg2Lmggc2hvdWxkIG9ubHkgYmUgI2luY2x1ZGVkIGlmIENQVShYODYpIgpA
QCAtMTA3LDYgKzEwOSw0NiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6
IiAiCiAgICAgInJldCIgIlxuIgogKTsKIAorQ09NUElMRV9BU1NFUlQoQVNNX1VOREVGSU5FRF9U
QUcgPT0gSlNWYWx1ZTo6VW5kZWZpbmVkVGFnLCBKU1ZhbHVlX1VuZGVmaW5lZFRhZ19tYXRjaGVz
X2N0aUZpeHVwQXJpdHkpOworQ09NUElMRV9BU1NFUlQoQVNNX0NBTExGUkFNRV9IRUFERVJfU0la
RSA9PSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBKU1N0YWNrX0NhbGxGcmFtZUhlYWRl
clNpemVfbWF0Y2hlc19jdGlGaXh1cEFyaXR5KTsKK0NPTVBJTEVfQVNTRVJUKEFTTV9DQUxMRlJB
TUVfQVJHVU1FTlRfQ09VTlQgPT0gSlNTdGFjazo6QXJndW1lbnRDb3VudCwgSlNTdGFja19Bcmd1
bWVudENvdW50X21hdGNoZXNfY3RpRml4dXBBcml0eSk7CisKK2FzbSAoCisvLyBUaGlzIHN0dWIg
aGFuZGxlcyBhIHN0YWNrIHRoYXQgZ3Jvd3MgdXAgYW5kIHdvdWxkIG5lZWQgdG8gYmUgY2hhbmdl
ZCBmb3IgYSBzdGFjaworLy8gdGhhdCBncm93cyBkb3duLgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoY3RpRml4dXBBcml0eSkgIlxuIgorSElERV9TWU1CT0woY3RpRml4dXBBcml0eSkgIlxuIgor
U1lNQk9MX1NUUklORyhjdGlGaXh1cEFyaXR5KSAiOiIgIlxuIgorICAgICJwb3BsICVlc2kiICJc
biIKKyAgICAibGVhbCAtMHg4KCVlZGkpLCAlZWJ4IiAiXG4iCisgICAgIm1vdmwgOCoiIFNUUklO
R0laRV9WQUxVRV9PRihBU01fQ0FMTEZSQU1FX0FSR1VNRU5UX0NPVU5UKSAiKCVlZGkpLCAlZWN4
IiAiXG4iCisgICAgImFkZGwgJCIgU1RSSU5HSVpFX1ZBTFVFX09GKEFTTV9DQUxMRlJBTUVfSEVB
REVSX1NJWkUpICIsICVlY3giICJcbiIKK1NZTUJPTF9TVFJJTkcoc2xvdENvcHlMb29wKSAiOiIg
IlxuIgorICAgICJtb3ZsICglZWJ4KSwgJWVkeCIgIlxuIgorICAgICJtb3ZsICVlZHgsICglZWJ4
LCAlZWF4LCA4KSIgIlxuIgorICAgICJtb3ZsIDQoJWVieCksICVlZHgiICJcbiIKKyAgICAibW92
bCAlZWR4LCA0KCVlYngsICVlYXgsIDgpIiAiXG4iCisgICAgInN1YmwgJDB4OCwgJWVieCIgIlxu
IgorICAgICJzdWJsICQweDEsICVlY3giICJcbiIKKyAgICAiam56ICIgTE9DQUxfUkVGRVJFTkNF
KHNsb3RDb3B5TG9vcCkgIlxuIgorCisgICAgIm1vdmwgJWVheCwgJWVjeCIgIlxuIgorU1lNQk9M
X1NUUklORyh1bmRlZmluZWRGaWxsTG9vcCkgIjoiICJcbiIKKyAgICAieG9ybCAlZWR4LCAlZWR4
IiAiXG4iCisgICAgIm1vdmwgJWVkeCwgKCVlYngsICVlYXgsIDgpIiAiXG4iCisgICAgIm1vdmwg
JCIgU1RSSU5HSVpFX1ZBTFVFX09GKEFTTV9VTkRFRklORURfVEFHKSAiLCAlZWR4IiAiXG4iCisg
ICAgIm1vdmwgJWVkeCwgNCglZWJ4LCAlZWF4LCA4KSIgIlxuIgorICAgICJzdWJsICQweDgsICVl
YngiICJcbiIKKyAgICAic3VibCAkMHgxLCAlZWN4IiAiXG4iCisgICAgImpueiAiIExPQ0FMX1JF
RkVSRU5DRSh1bmRlZmluZWRGaWxsTG9vcCkgIlxuIgorCisgICAgInNobGwgJDB4MywgJWVheCIg
IlxuIgorICAgICJhZGRsICVlYXgsICVlZGkiICJcbiIKKyAgICAicHVzaGwgJWVzaSIgIlxuIgor
ICAgICJyZXQiICJcbiIKKyk7CisKKwogI2lmIFVTRShNQVNNX1BST0JFKQogYXNtICgKICIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODZfNjQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2XzY0LmgJKHJldmlzaW9uIDE1MTU3
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogI2RlZmluZSBKSVRTdHVic1g4Nl82NF9oCiAKICNp
bmNsdWRlICJKSVRTdHVic1g4NkNvbW1vbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNp
bmNsdWRlICJKU1N0YWNrLmgiCiAKICNpZiAhQ1BVKFg4Nl82NCkKICNlcnJvciAiSklUU3R1YnNY
ODZfNjQuaCBzaG91bGQgb25seSBiZSAjaW5jbHVkZWQgaWYgQ1BVKFg4Nl82NCkiCkBAIC0xMjIs
NiArMTI0LDQxIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICIKICAg
ICAicmV0IiAiXG4iCiApOwogCitDT01QSUxFX0FTU0VSVChBU01fVkFMVUVfVU5ERUZJTkVEID09
IFZhbHVlVW5kZWZpbmVkLCBKU1ZhbHVlX1ZhbHVlVW5kZWZpbmVkX21hdGNoZXNfY3RpRml4dXBB
cml0eSk7CitDT01QSUxFX0FTU0VSVChBU01fQ0FMTEZSQU1FX0hFQURFUl9TSVpFID09IEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUsIEpTU3RhY2tfQ2FsbEZyYW1lSGVhZGVyU2l6ZV9tYXRj
aGVzX2N0aUZpeHVwQXJpdHkpOworQ09NUElMRV9BU1NFUlQoQVNNX0NBTExGUkFNRV9BUkdVTUVO
VF9DT1VOVCA9PSBKU1N0YWNrOjpBcmd1bWVudENvdW50LCBKU1N0YWNrX0FyZ3VtZW50Q291bnRf
bWF0Y2hlc19jdGlGaXh1cEFyaXR5KTsKKworYXNtICgKKy8vIFRoaXMgc3R1YiBoYW5kbGVzIGEg
c3RhY2sgdGhhdCBncm93cyB1cCBhbmQgd291bGQgbmVlZCB0byBiZSBjaGFuZ2VkIGZvciBhIHN0
YWNrCisvLyB0aGF0IGdyb3dzIGRvd24uCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlGaXh1
cEFyaXR5KSAiXG4iCitISURFX1NZTUJPTChjdGlGaXh1cEFyaXR5KSAiXG4iCitTWU1CT0xfU1RS
SU5HKGN0aUZpeHVwQXJpdHkpICI6IiAiXG4iCisgICAgInBvcCAlcjExIiAiXG4iCisgICAgImxl
YSAtMHg4KCVyMTMpLCAlcmJ4IiAiXG4iCisgICAgIm1vdiA4KiIgU1RSSU5HSVpFX1ZBTFVFX09G
KEFTTV9DQUxMRlJBTUVfQVJHVU1FTlRfQ09VTlQpICIoJXIxMyksICVlY3giICJcbiIKKyAgICAi
YWRkICQiIFNUUklOR0laRV9WQUxVRV9PRihBU01fQ0FMTEZSQU1FX0hFQURFUl9TSVpFKSAiLCAl
ZWN4IiAiXG4iCitTWU1CT0xfU1RSSU5HKHNsb3RDb3B5TG9vcCkgIjoiICJcbiIKKyAgICAibW92
ICglcmJ4KSwgJXJkeCIgIlxuIgorICAgICJtb3YgJXJkeCwgKCVyYngsICVyYXgsIDgpIiAiXG4i
CisgICAgInN1YiAkMHg4LCAlcmJ4IiAiXG4iCisgICAgInN1YiAkMHgxLCAlZWN4IiAiXG4iCisg
ICAgImpueiAiIExPQ0FMX1JFRkVSRU5DRShzbG90Q29weUxvb3ApICJcbiIKKworICAgICJtb3Yg
JXJheCwgJXJjeCIgIlxuIgorICAgICJtb3YgJCIgU1RSSU5HSVpFX1ZBTFVFX09GKEFTTV9WQUxV
RV9VTkRFRklORUQpICIsICVlZHgiICJcbiIKK1NZTUJPTF9TVFJJTkcodW5kZWZpbmVkRmlsbExv
b3ApICI6IiAiXG4iCisgICAgIm1vdiAlcmR4LCAoJXJieCwgJXJheCwgOCkiICJcbiIKKyAgICAi
c3ViICQweDgsICVyYngiICJcbiIKKyAgICAic3ViICQweDEsICVlY3giICJcbiIKKyAgICAiam56
ICIgTE9DQUxfUkVGRVJFTkNFKHVuZGVmaW5lZEZpbGxMb29wKSAiXG4iCisKKyAgICAic2hsICQw
eDMsICVlYXgiICJcbiIKKyAgICAiYWRkICVyYXgsICVyMTMiICJcbiIKKyAgICAicHVzaCAlcjEx
IiAiXG4iCisgICAgInJldCIgIlxuIgorKTsKKwogI2lmIFVTRShNQVNNX1BST0JFKQogYXNtICgK
ICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CShyZXZpc2lvbiAxNTE1NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMjQgQEAgQUxXQVlTX0lO
TElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRQogICAgIHJldHVybiBuZXdFeGVjOwogfQog
CitBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yTmV3KEV4ZWNTdGF0ZSogZXhlYywgSlNT
dGFjayogc3RhY2ssIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBB
U1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2Rl
QmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2lu
ZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKTsKKyAgICAKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNw
YWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQg
YnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsg
bmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIAorICAgIEFTU0VSVChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKyAg
ICAKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cywgcmV0dXJuIHRoZSBudW1iZXIgbWlzc2luZyBh
cmd1bWVudHMgc28gdGhlIGNhbGxlciBjYW4KKyAgICAvLyBncm93IHRoZSBmcmFtZSBpbiBwbGFj
ZSBhbmQgZmlsbCBpbiB1bmRlZmluZWQgdmFsdWVzIGZvciB0aGUgbWlzc2luZyBhcmdzLgorICAg
IHJldHVybihuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKK30KKwogaW5saW5lIGJvb2wgb3BJbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgcHJvcE5hbWUsIEpTVmFsdWUgYmFzZVZhbCkKIHsKICAgICBpZiAoIWJhc2VWYWwuaXNPYmpl
Y3QoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aAkocmV2aXNpb24gMTUxNTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDggQEAgcHVibGljOgogICAg
IGVudW0geyBEZWxldGVkVmFsdWVUYWcgPSAweGZmZmZmZmY5IH07CiAKICAgICBlbnVtIHsgTG93
ZXN0VGFnID0gIERlbGV0ZWRWYWx1ZVRhZyB9OworCisjZGVmaW5lIEFTTV9VTkRFRklORURfVEFH
IDB4ZmZmZmZmZmMKICNlbmRpZgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVuY29kZShK
U1ZhbHVlKTsKQEAgLTM3Nyw2ICszNzksNyBAQCBwcml2YXRlOgogICAgICNkZWZpbmUgVmFsdWVU
cnVlICAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wgfCB0cnVlKQogICAgICNkZWZp
bmUgVmFsdWVVbmRlZmluZWQgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5lZCkKICAg
ICAjZGVmaW5lIFZhbHVlTnVsbCAgICAgIChUYWdCaXRUeXBlT3RoZXIpCisgICAgI2RlZmluZSBB
U01fVkFMVUVfVU5ERUZJTkVEIDB4YQogCiAgICAgLy8gVGFnTWFzayBpcyB1c2VkIHRvIGNoZWNr
IGZvciBhbGwgdHlwZXMgb2YgaW1tZWRpYXRlIHZhbHVlcyAoZWl0aGVyIG51bWJlciBvciAnb3Ro
ZXInKS4KICAgICAjZGVmaW5lIFRhZ01hc2sgKFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3Ro
ZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204875</attachid>
            <date>2013-06-17 18:42:35 -0700</date>
            <delta_ts>2013-06-18 16:25:49 -0700</delta_ts>
            <desc>Work in progress using a thunk - lint work needed to finish patch</desc>
            <filename>arity-fixup-inline-wip6.patch</filename>
            <type>text/plain</type>
            <size>18267</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEzLTA2LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIGZvdXJ0aFRpZXI6IEFyaXR5IGZpeHVwIHNob3VsZCBiZSBkb25lIHdoaWxlIG9uIHNhbWUg
c3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NzEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua0Z1
bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpJVENv
bXBpbGVyKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
bGluayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFjay5oOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogaml0L0pJVFN0dWJzWDg2Lmg6Cisg
ICAgICAgICogaml0L0pJVFN0dWJzWDg2XzY0Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
TmV3KToKKyAgICAgICAgKENvbW1vblNsb3dQYXRocyk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAxMy0wNi0xNyAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEw6IEFkZCBhbm90aGVyIHRlbXAg
cmVnaXN0ZXIgcmVnVDQgdG8gSlNJbnRlcmZhY2VKSVQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTE2NTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzg2LDcgKzM4NiwxMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQog
ICAgIGJlZ2luQ2FsbChDb2RlT3JpZ2luKDApLCB0b2tlbik7CiAgICAgbV9jYWxsQXJpdHlDaGVj
ayA9IGNhbGwoKTsKICAgICBub3RpZnlDYWxsKG1fY2FsbEFyaXR5Q2hlY2ssIENvZGVPcmlnaW4o
MCksIHRva2VuKTsKLSAgICBtb3ZlKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJlZ1QwKS5saW5rVG8o
ZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOworICAgIGJlZ2luQ2FsbChDb2RlT3JpZ2luKDApLCB0b2tl
bik7CisgICAgbV9jYWxsQXJpdHlGaXh1cCA9IGNhbGwoKTsKKyAgICBub3RpZnlDYWxsKG1fY2Fs
bEFyaXR5Rml4dXAsIENvZGVPcmlnaW4oMCksIHRva2VuKTsKICAgICBqdW1wKGZyb21Bcml0eUNo
ZWNrKTsKICAgICAKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KQEAgLTQxNCw2ICs0
MTcsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rRnVuY3Rpb24oKQogICAgIC8vIEZJWE1FOiBz
d2l0Y2ggdGhlIHN0YWNrIGNoZWNrICYgYXJpdHkgY2hlY2sgb3ZlciB0byBERkdPcGVydGFpb24g
c3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCiAgICAgbGlua0J1ZmZlci0+bGluayhtX2NhbGxT
dGFja0NoZWNrLCBjdGlfc3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxs
QXJpdHlDaGVjaywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1
Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spOworICAgIGxpbmtCdWZmZXIt
PmxpbmsobV9jYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKG1fdm0tPmdldENUSVN0dWIoYXJp
dHlGaXh1cCkpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgCiAgICAgZGlzYXNz
ZW1ibGUoKmxpbmtCdWZmZXIpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTUxNjU3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsNiArNTIw
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBDYWxsIG1fY2FsbFN0YWNrQ2hlY2s7CiAgICAgQ2Fs
bCBtX2NhbGxBcml0eUNoZWNrOworICAgIENhbGwgbV9jYWxsQXJpdHlGaXh1cDsKICAgICBMYWJl
bCBtX2FyaXR5Q2hlY2s7CiAgICAgT3duUHRyPFNwZWN1bGF0aXZlSklUPiBtX3NwZWN1bGF0aXZl
OwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24g
MTUxNjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwLDEyICsxMjAsMTQgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICAvLyBGSVhNRTogbmVlZCB0byBtYWtlIHRoaXMgY2FsbCByZWdpc3RlciB3aXRoIGV4Y2VwdGlv
biBoYW5kbGluZyBzb21laG93LiBUaGlzIGlzCiAgICAgLy8gcGFydCBvZiBhIGJpZ2dlciBwcm9i
bGVtOiBGVEwgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyMgotICAgIGppdC5tb3Zl
KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgaml0LmJy
YW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKS5saW5rVG8oZnJv
bUFyaXR5Q2hlY2ssICZqaXQpOworICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsQXJpdHlGaXh1
cCA9IGppdC5jYWxsKCk7CiAgICAgaml0Lmp1bXAoZnJvbUFyaXR5Q2hlY2spOwogICAgICAgICAK
ICAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVm
ZmVyKHN0YXRlLmdyYXBoLm1fdm0sICZqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0
U3VjY2VlZCkpOwogICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbFN0YWNrQ2hlY2ssIGN0aV9zdGFj
a19jaGVjayk7CiAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2Nr
LT5tX2lzQ29uc3RydWN0b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlfb3Bf
Y2FsbF9hcml0eUNoZWNrKTsKKyAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBG
dW5jdGlvblB0cigoc3RhdGUuZ3JhcGgubV92bS5nZXRDVElTdHViKGFyaXR5Rml4dXApKS5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgIAogICAgIHN0YXRlLmZpbmFsaXplci0+aW5p
dGlhbGl6ZUVudHJ5cG9pbnRMaW5rQnVmZmVyKGxpbmtCdWZmZXIucmVsZWFzZSgpKTsKICAgICBz
dGF0ZS5maW5hbGl6ZXItPmluaXRpYWxpemVGdW5jdGlvbihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlv
bik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTE2NTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1
NCw3ICs2NTQsMTEgQEAgUGFzc1JlZlB0cjxKSVRDb2RlPiBKSVQ6OnByaXZhdGVDb21waWxlKAog
ICAgICAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2Rl
QmxvY2stPm1fbnVtUGFyYW1ldGVycykpLmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlzKTsKIAogICAg
ICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0gMDsKLSAgICAgICAgSklUU3R1YkNhbGwodGhpcywgbV9j
b2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6
IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spLmNhbGwoY2FsbEZyYW1lUmVnaXN0ZXIpOworCisgICAg
ICAgIEpJVFN0dWJDYWxsKHRoaXMsIG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBjdGlf
b3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKS5jYWxsKHJl
Z1QwKTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QwKS5saW5rVG8oYmVnaW5MYWJl
bCwgdGhpcyk7CisgICAgICAgIGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1Yihhcml0eUZp
eHVwKS5jb2RlKCkpOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBtX2J5dGVjb2Rl
T2Zmc2V0ID0gKHVuc2lnbmVkKS0xOyAvLyBSZXNldCB0aGlzLCBpbiBvcmRlciB0byBndWFyZCBp
dHMgdXNlIHdpdGggQVNTRVJUcy4KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDE1MTY1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU3LDMwICsxMTU3LDMwIEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNr
KQorREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAg
U1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCisgICAgCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLQotICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3Rh
Y2tGcmFtZS5zdGFjaywgQ29kZUZvckNhbGwpOwotICAgIGlmICghbmV3Q2FsbEZyYW1lKQotICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBj
YWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKLQotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Cisg
ICAgCisgICAgaW50IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvck5ldyhjYWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ssIENvZGVGb3JDYWxsKTsKKyAgICBp
ZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJv
bU9wQ2FsbDxpbnQ+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywg
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOworICAg
IAorICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQqLCBvcF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK0RFRklORV9TVFVCX0ZVTkNUSU9OKGlu
dCwgb3BfY29uc3RydWN0X2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwotCisgICAgCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5zdGFjaywgQ29kZUZv
ckNvbnN0cnVjdCk7Ci0gICAgaWYgKCFuZXdDYWxsRnJhbWUpCi0gICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9S
RVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKSkpOwotCi0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKKyAgICAKKyAgICBpbnQgbWlz
c2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yTmV3KGNhbGxGcmFt
ZSwgc3RhY2tGcmFtZS5zdGFjaywgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKG1pc3NpbmdB
cmdDb3VudCA8IDApCisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8aW50
PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKKyAgICAKKyAgICByZXR1
cm4gbWlzc2luZ0FyZ0NvdW50OwogfQogCiBpbmxpbmUgdm9pZCogbGF6eUxpbmtGb3IoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE1MTY1NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAwLDggKzQw
MCw4IEBAIHZvaWQgSklUX1NUVUIgY3RpX29wX3Rocm93X3N0YXRpY19lcnJvcigKICNpZiBFTkFC
TEUoREZHX0pJVCkKIHZvaWQgSklUX1NUVUIgY3RpX29wdGltaXplKFNUVUJfQVJHU19ERUNMQVJB
VElPTikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCi12b2lkKiBKSVRfU1RVQiBjdGlfb3BfY2FsbF9h
cml0eUNoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotdm9pZCogSklU
X1NUVUIgY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOworaW50IEpJVF9TVFVCIGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2soU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CitpbnQgSklUX1NUVUIgY3RpX29wX2NvbnN0
cnVjdF9hcml0eUNoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9p
ZCogSklUX1NUVUIgY3RpX29wX2NhbGxfaml0Q29tcGlsZShTVFVCX0FSR1NfREVDTEFSQVRJT04p
IFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3Rfaml0Q29tcGls
ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0
aV9vcF9zd2l0Y2hfY2hhcihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJl
dmlzaW9uIDE1MTY1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlRodW5r
R2VuZXJhdG9ycy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNTdGFj
ay5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5r
SklULmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgpAQCAtNDE4LDYgKzQxOSw4NCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ29uc3RydWN0R2VuCiAgICAgcmV0dXJuIG5hdGl2
ZUZvckdlbmVyYXRvcih2bSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBhcml0eUZpeHVwKFZNKiB2bSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisK
KyAgICAvLyBXZSBlbnRlciB3aXRoIGZpeHVwIGNvdW50IGluIHJlZ1QwCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyMgIGlmIENQVShYODZfNjQpCisgICAgaml0LnBvcChYODZSZWdpc3RlcnM6OnIxMSk7
CisjICBlbmRpZgorICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigt
OCksIEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QzKTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNl
SklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIDgpLCBKU0lu
dGVyZmFjZUpJVDo6cmVnVDIpOworICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDIpOworCisgICAgLy8gTW92ZSBjdXJyZW50IGZyYW1lIHJlZ1QwIG51bWJlciBvZiBzbG90cwor
ICAgIEpTSW50ZXJmYWNlSklUOjpMYWJlbCBjb3B5TG9vcChqaXQubGFiZWwoKSk7CisgICAgaml0
LmxvYWQ2NChKU0ludGVyZmFjZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7Cisg
ICAgaml0LnN0b3JlNjQoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0lu
dGVyZmFjZUpJVDo6VGltZXNFaWdodCkpOworICAgIGppdC5zdWJQdHIoSlNJbnRlcmZhY2VKSVQ6
OlRydXN0ZWRJbW0zMig4KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKKyAgICBqaXQuYnJhbmNo
U3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
MzIoMSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMikubGlua1RvKGNvcHlMb29wLCAmaml0KTsKKwor
ICAgIC8vIEZpbGwgaW4gcmVnVDAgbWlzc2luZyBhcmcgc2xvdHMgd2l0aCB1bmRlZmluZWQKKyAg
ICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7
CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW02NChWYWx1ZVVuZGVmaW5l
ZCksIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgSlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGZp
bGxVbmRlZmluZWRMb29wKGppdC5sYWJlbCgpKTsKKyAgICBqaXQuc3RvcmU2NChKU0ludGVyZmFj
ZUpJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpUaW1lc0VpZ2h0KSk7
CisgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDgpLCBKU0ludGVy
ZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QyKS5saW5rVG8oZmlsbFVuZGVmaW5lZExvb3AsICZqaXQpOworCisgICAgLy8gQWRqdXN0IGNh
bGwgZnJhbWUgcmVnaXN0ZXIgdG8gYWNjb3VudCBmb3IgbWlzc2luZyBhcmdzCisgICAgaml0Lmxz
aGlmdDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoMyksIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMCk7CisgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNl
SklUOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisKKyMgIGlmIENQVShYODZfNjQpCisgICAgaml0LnB1
c2goWDg2UmVnaXN0ZXJzOjpyMTEpOworIyAgZW5kaWYKKyAgICBqaXQucmV0KCk7CisjZWxzZQor
IyAgaWYgQ1BVKFg4NikKKyAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZXNpKTsKKyMgIGVuZGlm
CisgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKC04KSwgSlNJbnRl
cmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOworICAg
IGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxG
cmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogOCksIEpTSW50ZXJmYWNlSklU
OjpyZWdUMik7CisgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7CisgICAg
CisgICAgLy8gTW92ZSBjdXJyZW50IGZyYW1lIHJlZ1QwIG51bWJlciBvZiBzbG90cworICAgIEpT
SW50ZXJmYWNlSklUOjpMYWJlbCBjb3B5TG9vcChqaXQubGFiZWwoKSk7CisgICAgaml0LmxvYWQz
MihKU0ludGVyZmFjZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0
LnN0b3JlMzIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFj
ZUpJVDo6VGltZXNFaWdodCkpOworICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCA0KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAg
ICBqaXQuc3RvcmUzMihKU0ludGVyZmFjZUpJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNl
SW5kZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50
ZXJmYWNlSklUOjpUaW1lc0VpZ2h0LCA0KSk7CisgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5icmFu
Y2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oY29weUxvb3AsICZqaXQpOwor
ICAgIAorICAgIC8vIEZpbGwgaW4gcmVnVDAgbWlzc2luZyBhcmcgc2xvdHMgd2l0aCB1bmRlZmlu
ZWQKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMik7CisgICAgSlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGZpbGxVbmRlZmluZWRMb29wKGppdC5s
YWJlbCgpKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDApLCBK
U0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5zdG9yZTMyKEpTSW50ZXJmYWNlSklUOjpy
ZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0ludGVyZmFjZUpJVDo6cmVnVDMsIEpT
SW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVzRWlnaHQpKTsKKyAgICBq
aXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRh
ZyksIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0LnN0b3JlMzIoSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdU
MywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6VGltZXNFaWdodCwgNCkp
OworCisgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDgpLCBKU0lu
dGVyZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QyKS5saW5rVG8oZmlsbFVuZGVmaW5lZExvb3AsICZqaXQpOworICAgIAorICAgIC8vIEFk
anVzdCBjYWxsIGZyYW1lIHJlZ2lzdGVyIHRvIGFjY291bnQgZm9yIG1pc3NpbmcgYXJncworICAg
IGppdC5sc2hpZnQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDMpLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDApOworICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0lu
dGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIAorIyAgaWYgQ1BVKFg4NikKKyAg
ICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVzaSk7CisjICBlbmRpZgorICAgIGppdC5yZXQoKTsK
KyNlbmRpZgorICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9C
QUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoImZp
eHVwIGFyaXR5IikpOworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXpl
ZFRodW5rSklUJiBqaXQsIFZNKiB2bSkKIHsKICAgICAvLyBsb2FkIHN0cmluZwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCShyZXZpc2lvbiAxNTE2
NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFs
Q29uc3RydWN0R2UKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHJpbmdMZW5ndGhUcmFtcG9saW5l
R2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRv
cihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihW
TSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFyaXR5Rml4dXAoVk0qKTsKIAogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMTUxNjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTIxNSw2ICsyMTUsMjYgQEAgbWFjcm8g
ZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvdwogICAgIGptcCBkb25lTGFiZWwKIGVu
ZAogCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJv
bG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrTmV3KGRvbmVM
YWJlbCwgc2xvd19wYXRoKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50
W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwg
ZG9uZUxhYmVsCisgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQorICAgIGNDYWxsMihzbG93X3Bh
dGgsIGNmciwgUEMpICAgIyBUaGlzIHNsb3dfcGF0aCBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQw
ID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAg
IGJ0aXogdDEsIC5jb250aW51ZQorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6OnZtW3NwXSwgdDEKKyAgICBsb2FkcCBWTTo6Y2FsbEZyYW1lRm9yVGhyb3db
dDFdLCB0MAorICAgIGptcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGlu
dWU6CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCByZXNldCBQQywgc2luY2UgdGhlIHNsb3df
cGF0aCBjbG9iYmVyZWQgdGhlbS4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIKKyAgICBtb3ZlIDAsIFBDCisg
ICAgam1wIGRvbmVMYWJlbAorZW5kCisKIAogIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAxNTE2NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDM0
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHkKICAgICBSRVRVUk5f
VFdPKDAsIG5ld0V4ZWMpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0
eUNoZWNrTmV3KQoreworICAgIEJFR0lOKCk7CisgICAgaW50IFNsb3RzVG9BZGQgPSBDb21tb25T
bG93UGF0aHM6OmFyaXR5Q2hlY2tGb3JOZXcoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygp
LCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKFNsb3RzVG9BZGQgPCAwKSB7CisgICAgICAgIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOworICAgICAgICBleGVjID0g
ZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgdm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2Fs
bGVyKGV4ZWMsIHJldHVyblBDKTsKKyAgICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgUkVUVVJO
X1RXTygwLCByZWludGVycHJldF9jYXN0PEV4ZWNTdGF0ZSo+KFNsb3RzVG9BZGQpKTsKK30KKwor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrTmV3KQoreworICAg
IEJFR0lOKCk7CisgICAgaW50IFNsb3RzVG9BZGQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3JOZXcoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLCBDb2RlRm9yQ29uc3RydWN0
KTsKKyAgICBpZiAoU2xvdHNUb0FkZCA8IDApIHsKKyAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5QQyA9IGV4ZWMtPnJldHVyblBDKCk7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJG
cmFtZSgpOworICAgICAgICB2bS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
ZXhlYyk7CisgICAgICAgIExMSW50OjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgcmV0
dXJuUEMpOworICAgICAgICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBSRVRVUk5fVFdPKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8RXhlY1N0YXRlKj4oU2xvdHNUb0FkZCkpOworfQorCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKIHsKICAgICBCRUdJTigpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlz
aW9uIDE1MTY1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywyNCBAQCBBTFdBWVNfSU5MSU5FIEV4
ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFCiAgICAgcmV0dXJuIG5ld0V4ZWM7CiB9CiAKK0FMV0FZ
U19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3JOZXcoRXhlY1N0YXRlKiBleGVjLCBKU1N0YWNrKiBz
dGFjaywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEFTU0VSVCgh
Y2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9
ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAg
ICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcygpOworICAgIAorICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9y
IHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUg
Y2FsbGVyLgorICAgIGlmICghc3RhY2stPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworICAgIAorICAg
IC8vIFRvbyBmZXcgYXJndW1lbnRzLCByZXR1cm4gdGhlIG51bWJlciBvZiBtaXNzaW5nIGFyZ3Vt
ZW50cyBzbyB0aGUgY2FsbGVyIGNhbgorICAgIC8vIGdyb3cgdGhlIGZyYW1lIGluIHBsYWNlIGFu
ZCBmaWxsIGluIHVuZGVmaW5lZCB2YWx1ZXMgZm9yIHRoZSBtaXNzaW5nIGFyZ3MuCisgICAgcmV0
dXJuKG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOworfQorCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBw
cm9wTmFtZSwgSlNWYWx1ZSBiYXNlVmFsKQogewogICAgIGlmICghYmFzZVZhbC5pc09iamVjdCgp
KSB7CkBAIC0xNjUsNiArMTgzLDggQEAgU0xPV19QQVRIX0RFQ0wobmFtZSkgV1RGX0lOVEVSTkFM
CiAgICAgCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjayk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrTmV3KTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2tOZXcpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3RoaXMpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90b190aGlzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204950</attachid>
            <date>2013-06-18 16:25:49 -0700</date>
            <delta_ts>2013-06-18 16:52:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>117102.patch</filename>
            <type>text/plain</type>
            <size>23566</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEzLTA2LTE4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIGZvdXJ0aFRpZXI6IEFyaXR5IGZpeHVwIHNob3VsZCBiZSBkb25lIHdoaWxlIG9uIHNhbWUg
c3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NzEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZWQgdGhlIGZpeHVwIHBhcnQgb2Ygb3BfY2FsbF9hcml0eUNoZWNrKCkgYW5kIG9wX2NvbnN0
cnVjdF9hcml0eUNoZWNrKCkgYW5kIG1vdmVkIGl0IHRvCisgICAgICAgIGEgdGh1bmsgZm9yIHRo
ZSBKSVRzIGFuZCBhcyBhc3NlbWJseSBmb3IgdGhlIGxsaW50LiAgVGhpcyBwYXRjaCBwcm92aWRl
cyB0aGUgcGx1bWJpbmcgbmVlZGVkIHRvCisgICAgICAgIG1vdmUgdG8gdGhlIEMgc3RhY2sgZm9y
IEpTIGV4ZWN1dGlvbi4gIFRoZSBmaXh1cCB0aHVuayBhbmQgbGxpbnQgY29kZSB3b3VsZCBuZWVk
IHRvIGJlIGNoYW5nZSB0bworICAgICAgICB3b3JrIHdpdGggYSBzdGFjayB0aGF0IGdyb3dzIGRv
d24gd2hlbiB3ZSBkbyBtb3ZlIHRvIHRoZSBDIHN0YWNrLgorICAgICAgICAKKyAgICAgICAgRHVl
IHRvIGFuIGlzc3VlIHdpdGggdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCBJIG1vdmVkIHRoZSBjb25z
dCBhdCB0aGUgdG9wIG9mIExvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKyAgICAgICAgYW5kIExv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gdG8gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uICBU
aGUgcHJvYmxlbSBpcyB0aGF0IGEgY29uc3QgZGVmaW5lZCBpbgorICAgICAgICBvbmUgZmlsZSB0
aGF0IGFyZSB1c2VkIGluIGEgbWFjcm8gZG9lc24ndCByZXNvbHZlIHRoZSBtYWNybyBpZiBpdCBp
cyB1c2VkIGluIGFub3RoZXIgZmlsZS4gIFRoaXMKKyAgICAgICAgc2VlbWVkIGxpa2UgdGhlIHF1
aWNrZXN0IHBhdGguCisKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpsaW5rRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAoSklUQ29tcGlsZXIpOgorICAgICAgICAqIGZ0bC9GVExMaW5r
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjphcml0eUZpeHVwKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmg6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvcik6CisKIDIwMTMtMDYtMTcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+
CiAKICAgICAgICAgRlRMOiBBZGQgYW5vdGhlciB0ZW1wIHJlZ2lzdGVyIHJlZ1Q0IHRvIEpTSW50
ZXJmYWNlSklUCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMTUxNzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw3ICszODYsMTAgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBiZWdpbkNhbGwoQ29kZU9yaWdp
bigwKSwgdG9rZW4pOwogICAgIG1fY2FsbEFyaXR5Q2hlY2sgPSBjYWxsKCk7CiAgICAgbm90aWZ5
Q2FsbChtX2NhbGxBcml0eUNoZWNrLCBDb2RlT3JpZ2luKDApLCB0b2tlbik7Ci0gICAgbW92ZShH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGJyYW5jaFRl
c3QzMihaZXJvLCBHUFJJbmZvOjpyZWdUMCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsK
KyAgICBiZWdpbkNhbGwoQ29kZU9yaWdpbigwKSwgdG9rZW4pOworICAgIG1fY2FsbEFyaXR5Rml4
dXAgPSBjYWxsKCk7CisgICAgbm90aWZ5Q2FsbChtX2NhbGxBcml0eUZpeHVwLCBDb2RlT3JpZ2lu
KDApLCB0b2tlbik7CiAgICAganVtcChmcm9tQXJpdHlDaGVjayk7CiAgICAgCiAgICAgLy8gR2Vu
ZXJhdGUgc2xvdyBwYXRoIGNvZGUuCkBAIC00MTQsNiArNDE3LDcgQEAgdm9pZCBKSVRDb21waWxl
cjo6bGlua0Z1bmN0aW9uKCkKICAgICAvLyBGSVhNRTogc3dpdGNoIHRoZSBzdGFjayBjaGVjayAm
IGFyaXR5IGNoZWNrIG92ZXIgdG8gREZHT3BlcnRhaW9uIHN0eWxlIGNhbGxzLCBub3QgSklUIHN0
dWJzLgogICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsU3RhY2tDaGVjaywgY3RpX3N0YWNrX2No
ZWNrKTsKICAgICBsaW5rQnVmZmVyLT5saW5rKG1fY2FsbEFyaXR5Q2hlY2ssIG1fY29kZUJsb2Nr
LT5tX2lzQ29uc3RydWN0b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlfb3Bf
Y2FsbF9hcml0eUNoZWNrKTsKKyAgICBsaW5rQnVmZmVyLT5saW5rKG1fY2FsbEFyaXR5Rml4dXAs
IEZ1bmN0aW9uUHRyKChtX3ZtLT5nZXRDVElTdHViKGFyaXR5Rml4dXApKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOwogICAgIAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJl
dmlzaW9uIDE1MTcwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIwLDYgKzUyMCw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgQ2FsbCBtX2NhbGxTdGFja0NoZWNrOwogICAgIENhbGwgbV9jYWxsQXJpdHlDaGVjazsKKyAg
ICBDYWxsIG1fY2FsbEFyaXR5Rml4dXA7CiAgICAgTGFiZWwgbV9hcml0eUNoZWNrOwogICAgIE93
blB0cjxTcGVjdWxhdGl2ZUpJVD4gbV9zcGVjdWxhdGl2ZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE1MTcwNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiArMTIw
LDE0IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFr
ZSB0aGlzIGNhbGwgcmVnaXN0ZXIgd2l0aCBleGNlcHRpb24gaGFuZGxpbmcgc29tZWhvdy4gVGhp
cyBpcwogICAgIC8vIHBhcnQgb2YgYSBiaWdnZXIgcHJvYmxlbTogRlRMIHNob3VsZCBiZSBhYmxl
IHRvIGhhbmRsZSBleGNlcHRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTM2MjIKLSAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJz
OjpaZXJvLCBHUFJJbmZvOjpyZWdUMCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCAmaml0KTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgIGpp
dC5qdW1wKGZyb21Bcml0eUNoZWNrKTsKICAgICAgICAgCiAgICAgT3duUHRyPExpbmtCdWZmZXI+
IGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcihzdGF0ZS5ncmFwaC5tX3ZtLCAm
aml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICBsaW5rQnVm
ZmVyLT5saW5rKGNhbGxTdGFja0NoZWNrLCBjdGlfc3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZm
ZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gY3Rp
X29wX2NvbnN0cnVjdF9hcml0eUNoZWNrIDogY3RpX29wX2NhbGxfYXJpdHlDaGVjayk7CisgICAg
bGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHN0YXRlLmdyYXBo
Lm1fdm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAKICAgICBzdGF0ZS5maW5hbGl6ZXItPmluaXRpYWxpemVFbnRyeXBvaW50TGlua0J1
ZmZlcihsaW5rQnVmZmVyLnJlbGVhc2UoKSk7CiAgICAgc3RhdGUuZmluYWxpemVyLT5pbml0aWFs
aXplRnVuY3Rpb24oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTUxNzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTQsNyArNjU0LDExIEBAIFBhc3NSZWZQ
dHI8SklUQ29kZT4gSklUOjpwcml2YXRlQ29tcGlsZSgKICAgICAgICAgYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMp
KS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9
IDA7Ci0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0
b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlfb3BfY2FsbF9hcml0eUNoZWNr
KS5jYWxsKGNhbGxGcmFtZVJlZ2lzdGVyKTsKKworICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBt
X2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNr
IDogY3RpX29wX2NhbGxfYXJpdHlDaGVjaykuY2FsbChyZWdUMCk7CisgICAgICAgIGJyYW5jaFRl
c3QzMihaZXJvLCByZWdUMCkubGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOworICAgICAgICBlbWl0
TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJpdHlGaXh1cCkuY29kZSgpKTsKKwogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9ICh1bnNpZ25lZCktMTsg
Ly8gUmVzZXQgdGhpcywgaW4gb3JkZXIgdG8gZ3VhcmQgaXRzIHVzZSB3aXRoIEFTU0VSVHMuCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lv
biAxNTE3MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE1NywzMCArMTE1NywzMCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKK0RFRklORV9TVFVCX0ZVTkNUSU9O
KGludCwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ssIENvZGVGb3JDYWxsKTsK
LSAgICBpZiAoIW5ld0NhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJv
bU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNT
LCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7Cisg
ICAgaW50IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcihj
YWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ssIENvZGVGb3JDYWxsKTsKKyAgICBpZiAobWlzc2lu
Z0FyZ0NvdW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDxp
bnQ+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCi0gICAgcmV0dXJu
IG5ld0NhbGxGcmFtZTsKKyAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwogfQogCi1ERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0X2FyaXR5Q2hlY2spCitERUZJTkVfU1RV
Ql9GVU5DVElPTihpbnQsIG9wX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
c3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENv
bW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ss
IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIGlmICghbmV3Q2FsbEZyYW1lKQotICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUs
IFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCkpKTsKKyAgICBpbnQgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5zdGFjaywgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApCisgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8aW50PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJf
UkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCkpKTsKIAotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CisgICAgcmV0dXJuIG1pc3Np
bmdBcmdDb3VudDsKIH0KIAogaW5saW5lIHZvaWQqIGxhenlMaW5rRm9yKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxNTE3MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMCw4ICs0MDAsOCBAQCB2
b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19zdGF0aWNfZXJyb3IoCiAjaWYgRU5BQkxFKERGR19K
SVQpCiB2b2lkIEpJVF9TVFVCIGN0aV9vcHRpbWl6ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKICNlbmRpZgotdm9pZCogSklUX1NUVUIgY3RpX29wX2NhbGxfYXJpdHlDaGVj
ayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLXZvaWQqIEpJVF9TVFVCIGN0
aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRF
Uk5BTDsKK2ludCBKSVRfU1RVQiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKFNUVUJfQVJHU19ERUNM
QVJBVElPTikgV1RGX0lOVEVSTkFMOworaW50IEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3RfYXJp
dHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9T
VFVCIGN0aV9vcF9jYWxsX2ppdENvbXBpbGUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3BfY29uc3RydWN0X2ppdENvbXBpbGUoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3Bfc3dp
dGNoX2NoYXIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAx
NTE3MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTU3RhY2suaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVua0pJVC5oIgog
I2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KQEAgLTQxOCw2ICs0MTksODQgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbgogICAgIHJldHVybiBuYXRpdmVGb3JHZW5l
cmF0b3Iodm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
YXJpdHlGaXh1cChWTSogdm0pCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgLy8g
V2UgZW50ZXIgd2l0aCBmaXh1cCBjb3VudCBpbiByZWdUMAorI2lmIFVTRShKU1ZBTFVFNjQpCisj
ICBpZiBDUFUoWDg2XzY0KQorICAgIGppdC5wb3AoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Q0KTsKKyMg
IGVuZGlmCisgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKC04KSwg
SlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMp
OworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogOCksIEpTSW50ZXJm
YWNlSklUOjpyZWdUMik7CisgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
MzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7
CisKKyAgICAvLyBNb3ZlIGN1cnJlbnQgZnJhbWUgcmVnVDAgbnVtYmVyIG9mIHNsb3RzCisgICAg
SlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGNvcHlMb29wKGppdC5sYWJlbCgpKTsKKyAgICBqaXQubG9h
ZDY0KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBq
aXQuc3RvcmU2NChKU0ludGVyZmFjZUpJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJm
YWNlSklUOjpUaW1lc0VpZ2h0KSk7CisgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJVDo6VHJ1
c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigx
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oY29weUxvb3AsICZqaXQpOworCisgICAg
Ly8gRmlsbCBpbiByZWdUMCBtaXNzaW5nIGFyZyBzbG90cyB3aXRoIHVuZGVmaW5lZAorICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKKyAg
ICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgZmlsbFVu
ZGVmaW5lZExvb3Aoaml0LmxhYmVsKCkpOworICAgIGppdC5zdG9yZTY0KEpTSW50ZXJmYWNlSklU
OjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0ludGVyZmFjZUpJVDo6cmVnVDMs
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVzRWlnaHQpKTsKKyAg
ICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJmYWNl
SklUOjpyZWdUMyk7CisgICAgaml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCBKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIp
LmxpbmtUbyhmaWxsVW5kZWZpbmVkTG9vcCwgJmppdCk7CisKKyAgICAvLyBBZGp1c3QgY2FsbCBm
cmFtZSByZWdpc3RlciB0byBhY2NvdW50IGZvciBtaXNzaW5nIGFyZ3MKKyAgICBqaXQubHNoaWZ0
MzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigzKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
KTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKworIyAgaWYgQ1BVKFg4Nl82NCkKKyAgICBqaXQucHVzaChK
U0ludGVyZmFjZUpJVDo6cmVnVDQpOworIyAgZW5kaWYKKyAgICBqaXQucmV0KCk7CisjZWxzZQor
IyAgaWYgQ1BVKFg4NikKKyAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CisjICBl
bmRpZgorICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigtOCksIEpT
SW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsK
KyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIDgpLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDIpOworICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMy
KEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwor
CisgICAgLy8gTW92ZSBjdXJyZW50IGZyYW1lIHJlZ1QwIG51bWJlciBvZiBzbG90cworICAgIEpT
SW50ZXJmYWNlSklUOjpMYWJlbCBjb3B5TG9vcChqaXQubGFiZWwoKSk7CisgICAgaml0LmxvYWQz
MihKU0ludGVyZmFjZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0
LnN0b3JlMzIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFj
ZUpJVDo6VGltZXNFaWdodCkpOworICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCA0KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAg
ICBqaXQuc3RvcmUzMihKU0ludGVyZmFjZUpJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNl
SW5kZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50
ZXJmYWNlSklUOjpUaW1lc0VpZ2h0LCA0KSk7CisgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5icmFu
Y2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oY29weUxvb3AsICZqaXQpOwor
CisgICAgLy8gRmlsbCBpbiByZWdUMCBtaXNzaW5nIGFyZyBzbG90cyB3aXRoIHVuZGVmaW5lZAor
ICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qy
KTsKKyAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgZmlsbFVuZGVmaW5lZExvb3Aoaml0LmxhYmVs
KCkpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoMCksIEpTSW50
ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0LnN0b3JlMzIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qx
LCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6VGltZXNFaWdodCkpOworICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBqaXQuc3RvcmUzMihKU0ludGVyZmFjZUpJVDo6
cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBK
U0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpUaW1lc0VpZ2h0LCA0KSk7CisK
KyAgICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJm
YWNlSklUOjpyZWdUMyk7CisgICAgaml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDIpLmxpbmtUbyhmaWxsVW5kZWZpbmVkTG9vcCwgJmppdCk7CisKKyAgICAvLyBBZGp1c3QgY2Fs
bCBmcmFtZSByZWdpc3RlciB0byBhY2NvdW50IGZvciBtaXNzaW5nIGFyZ3MKKyAgICBqaXQubHNo
aWZ0MzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigzKSwgSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VK
SVQ6OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKworIyAgaWYgQ1BVKFg4NikKKyAgICBqaXQucHVzaChK
U0ludGVyZmFjZUpJVDo6cmVnVDQpOworIyAgZW5kaWYKKyAgICBqaXQucmV0KCk7CisjZW5kaWYK
KworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQp
OworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoImZpeHVwIGFyaXR5Iikp
OworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRodW5rSklUJiBq
aXQsIFZNKiB2bSkKIHsKICAgICAvLyBsb2FkIHN0cmluZwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCShyZXZpc2lvbiAxNTE3MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsQ29uc3RydWN0R2UK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHJpbmdMZW5ndGhUcmFtcG9saW5lR2VuZXJhdG9yKFZN
Kik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSopOwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSopOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGFyaXR5Rml4dXAoVk0qKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNo
YXJBdFRodW5rR2VuZXJhdG9yKFZNKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24g
MTUxNzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTcwLDE4ICs3MCw2IEBACiAjIEJlbG93IHdl
IGhhdmUgYSBidW5jaCBvZiBjb25zdGFudCBkZWNsYXJhdGlvbnMuIEVhY2ggY29uc3RhbnQgbXVz
dCBoYXZlCiAjIGEgY29ycmVzcG9uZGluZyBBU1NFUlQoKSBpbiBMTEludERhdGEuY3BwLgogCi0K
LSMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgotY29uc3QgSW50MzJUYWcgPSAtMQot
Y29uc3QgQm9vbGVhblRhZyA9IC0yCi1jb25zdCBOdWxsVGFnID0gLTMKLWNvbnN0IFVuZGVmaW5l
ZFRhZyA9IC00Ci1jb25zdCBDZWxsVGFnID0gLTUKLWNvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgot
Y29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKLWNvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1
ZVRhZwotCi0KICMgVXRpbGl0aWVzCiBtYWNybyBkaXNwYXRjaChhZHZhbmNlKQogICAgIGFkZHAg
YWR2YW5jZSAqIDQsIFBDCkBAIC0zMTgsMTEgKzMwNiwzOCBAQCBtYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50
Q291bnRbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNb
dDFdLCBkb25lTGFiZWwKICAgICBjQ2FsbDIoc2xvd19wYXRoLCBjZnIsIFBDKSAgICMgVGhpcyBz
bG93X3BhdGggaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9
IDAgPT4gZXJyb3IKLSAgICBtb3ZlIHQxLCBjZnIKLSAgICBidGl6IHQwLCAuY29udGludWUKKyAg
ICBidGl6IHQwLCAuaXNBcml0eUZpeHVwTmVlZGVkCiAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
dm1bc3BdLCB0MQogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCiAgICAg
am1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5pc0FyaXR5Rml4dXBOZWVkZWQ6
CisgICAgYnRpeiB0MSwgLmNvbnRpbnVlCisKKyAgICAvLyBNb3ZlIGZyYW1lIGRvd24gInQxIiBz
bG90cworICAgIG1vdmUgY2ZyLCB0MworICAgIHN1YnAgOCwgdDMKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MgorICAgIGFkZGkgQ2FsbEZyYW1lSGVhZGVy
U2xvdHMsIHQyCisuY29weUxvb3A6CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0M10sIHQwCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0KKyAgICBsb2FkaSBUYWdPZmZz
ZXRbdDNdLCB0MAorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MSwgOF0KKyAgICBzdWJw
IDgsIHQzCisgICAgYnN1YmlueiAxLCB0MiwgLmNvcHlMb29wCisKKyAgICAvLyBGaWxsIG5ldyBz
bG90cyB3aXRoIEpTVW5kZWZpbmVkCisgICAgbW92ZSB0MSwgdDIKKy5maWxsTG9vcDoKKyAgICBt
b3ZlIDAsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0KKyAgICBt
b3ZlIC00LCB0MAorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MSwgOF0KKyAgICBzdWJw
IDgsIHQzCisgICAgYnN1YmlueiAxLCB0MiwgLmZpbGxMb29wCisKKyAgICBsc2hpZnRwIDMsIHQx
CisgICAgYWRkcCB0MSwgY2ZyCiAuY29udGludWU6CiAgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFu
ZCBQQywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgaXQuCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTUxNzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDE2ICsyMiw2IEBACiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogCi0jIFNvbWUgdmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgotY29uc3QgVGFn
Qml0VHlwZU90aGVyID0gMHgyCi1jb25zdCBUYWdCaXRCb29sICAgICAgPSAweDQKLWNvbnN0IFRh
Z0JpdFVuZGVmaW5lZCA9IDB4OAotY29uc3QgVmFsdWVFbXB0eSAgICAgID0gMHgwCi1jb25zdCBW
YWx1ZUZhbHNlICAgICAgPSBUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRCb29sCi1jb25zdCBWYWx1
ZVRydWUgICAgICAgPSBUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRCb29sIHwgMQotY29uc3QgVmFs
dWVVbmRlZmluZWQgID0gVGFnQml0VHlwZU90aGVyIHwgVGFnQml0VW5kZWZpbmVkCi1jb25zdCBW
YWx1ZU51bGwgICAgICAgPSBUYWdCaXRUeXBlT3RoZXIKLQogIyBVdGlsaXRpZXMuCiBtYWNybyBq
dW1wVG9JbnN0cnVjdGlvbigpCiAgICAgam1wIFtQQiwgUEMsIDhdCkBAIC0yMDIsMTEgKzE5Miwz
NSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgYmlhZXEg
dDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFy
ZVN0YXRlRm9yQ0NhbGwoKQogICAgIGNDYWxsMihzbG93X3BhdGgsIGNmciwgUEMpICAgIyBUaGlz
IHNsb3dfcGF0aCBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAg
IT0gMCA9PiBlcnJvcgotICAgIG1vdmUgdDEsIGNmcgotICAgIGJ0aXogdDAsIC5jb250aW51ZQor
ICAgIGJ0aXogdDAsIC5pc0FyaXR5Rml4dXBOZWVkZWQKICAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
Ojp2bVtzcF0sIHQxCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKICAg
ICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmlzQXJpdHlGaXh1cE5lZWRl
ZDoKKyAgICBidGl6IHQxLCAuY29udGludWUKKworICAgIC8vIE1vdmUgZnJhbWUgZG93biAidDEi
IHNsb3RzCisgICAgbW92ZSBjZnIsIHQzCisgICAgc3VicCA4LCB0MworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQyCisgICAgYWRkaSBDYWxsRnJhbWVIZWFk
ZXJTbG90cywgdDIKKy5jb3B5TG9vcDoKKyAgICBsb2FkcSBbdDNdLCB0MAorICAgIHN0b3JlcSB0
MCwgW3QzLCB0MSwgOF0KKyAgICBzdWJwIDgsIHQzCisgICAgYnN1YmlueiAxLCB0MiwgLmNvcHlM
b29wCisKKyAgICAvLyBGaWxsIG5ldyBzbG90cyB3aXRoIEpTVW5kZWZpbmVkCisgICAgbW92ZSB0
MSwgdDIKKyAgICBtb3ZlIDB4YSwgdDAKKy5maWxsTG9vcDoKKyAgICBzdG9yZXEgdDAsIFt0Mywg
dDEsIDhdCisgICAgc3VicCA4LCB0MworICAgIGJzdWJpbnogMSwgdDIsIC5maWxsTG9vcAorCisg
ICAgbHNoaWZ0cCAzLCB0MQorICAgIGFkZHAgdDEsIGNmcgorCiAuY29udGludWU6CiAgICAgIyBS
ZWxvYWQgQ29kZUJsb2NrIGFuZCByZXNldCBQQywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVy
ZWQgdGhlbS4KICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDE1MTcwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBlbmQKIAogIyBUaGVz
ZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9KU1N0YWNrLmguCiBjb25zdCBD
YWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IENhbGxGcmFtZUhlYWRlclNsb3RzID0gNgog
Y29uc3QgQXJndW1lbnRDb3VudCA9IC00OAogY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKIGNvbnN0
IENhbGxlZSA9IC0zMgpAQCAtNDEsNiArNDIsMjcgQEAgY29uc3QgQ29kZUJsb2NrID0gLTgKIAog
Y29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CiAKKyMg
U29tZSB2YWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitpZiBKU1ZBTFVFNjQKK2NvbnN0
IFRhZ0JpdFR5cGVPdGhlciA9IDB4MgorY29uc3QgVGFnQml0Qm9vbCAgICAgID0gMHg0Citjb25z
dCBUYWdCaXRVbmRlZmluZWQgPSAweDgKK2NvbnN0IFZhbHVlRW1wdHkgICAgICA9IDB4MAorY29u
c3QgVmFsdWVGYWxzZSAgICAgID0gVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbAorY29uc3Qg
VmFsdWVUcnVlICAgICAgID0gVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IDEKK2NvbnN0
IFZhbHVlVW5kZWZpbmVkICA9IFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5lZAorY29u
c3QgVmFsdWVOdWxsICAgICAgID0gVGFnQml0VHlwZU90aGVyCitlbHNlCitjb25zdCBJbnQzMlRh
ZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3Qg
VW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRh
ZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVs
ZXRlZFZhbHVlVGFnCitlbmQKKwogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogaWYgSlNW
QUxVRTY0CiAgICAgIyAtIFVzZSBhIHBhaXIgb2YgcmVnaXN0ZXJzIHRvIHJlcHJlc2VudCB0aGUg
UEM6IG9uZSByZWdpc3RlciBmb3IgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE1MTcwNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2OCwyOSArMTY4LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBCRUdJTigpOwotICAgIEV4ZWNT
dGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0u
aW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDYWxsKTsKLSAgICBpZiAoIW5ld0V4ZWMpIHsK
KyAgICBpbnQgU2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVj
LCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoU2xvdHNU
b0FkZCA8IDApIHsKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQyA9IGV4ZWMtPnJl
dHVyblBDKCk7CiAgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwogICAgICAgICB2
bS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CiAgICAgICAgIExM
SW50OjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgcmV0dXJuUEMpOwogICAgICAgICBS
RVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSks
IGV4ZWMpOwogICAgIH0KLSAgICBSRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworICAgIFJFVFVSTl9U
V08oMCwgcmVpbnRlcnByZXRfY2FzdDxFeGVjU3RhdGUqPihTbG90c1RvQWRkKSk7CiB9CiAKIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIHsKICAgICBCRUdJ
TigpOwotICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDb25zdHJ1Y3QpOwot
ICAgIGlmICghbmV3RXhlYykgeworICAgIGludCBTbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhz
Ojphcml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgaWYgKFNsb3RzVG9BZGQgPCAwKSB7CiAgICAgICAgIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOwogICAgICAgICBleGVjID0gZXhlYy0+
Y2FsbGVyRnJhbWUoKTsKICAgICAgICAgdm0uZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpOwogICAgICAgICBMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4
ZWMsIHJldHVyblBDKTsKICAgICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKICAgICB9Ci0gICAgUkVUVVJOX1RXTygw
LCBuZXdFeGVjKTsKKyAgICBSRVRVUk5fVFdPKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8RXhlY1N0YXRl
Kj4oU2xvdHNUb0FkZCkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2Fy
Z3VtZW50cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCShyZXZpc2lvbiAxNTE3MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMzYgKzQ1LDIy
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKIAotQUxX
QVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBKU1N0
YWNrKiBzdGFjaywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorQUxXQVlTX0lOTElORSBp
bnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIEpTU3RhY2sqIHN0YWNrLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9z
dEZ1bmN0aW9uKCkpOwogICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNF
eGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwogICAgIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7
Ci0KKyAgICAKICAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3Qg
Y2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KICAg
ICBpZiAoIXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIAogICAgIEFTU0VSVChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsK
LQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1l
bnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAg
c2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7
Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7Ci0KLSAgICBp
bnQgaTsKLSAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAg
ZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRhOwotICAgIGZvciAoIDsgaSA+PSBl
bmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKLQotICAgIEV4ZWNTdGF0
ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKilu
ZXdFeGVjIDw9IHN0YWNrLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0V4ZWM7CisgICAgCisgICAg
Ly8gVG9vIGZldyBhcmd1bWVudHMsIHJldHVybiB0aGUgbnVtYmVyIG9mIG1pc3NpbmcgYXJndW1l
bnRzIHNvIHRoZSBjYWxsZXIgY2FuCisgICAgLy8gZ3JvdyB0aGUgZnJhbWUgaW4gcGxhY2UgYW5k
IGZpbGwgaW4gdW5kZWZpbmVkIHZhbHVlcyBmb3IgdGhlIG1pc3NpbmcgYXJncy4KKyAgICByZXR1
cm4obmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk7CiB9CiAKIGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHBy
b3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204955</attachid>
            <date>2013-06-18 16:52:59 -0700</date>
            <delta_ts>2013-06-19 10:53:33 -0700</delta_ts>
            <desc>Patch with minor fix - replaced literals with const</desc>
            <filename>117102-2.patch</filename>
            <type>text/plain</type>
            <size>23587</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEzLTA2LTE4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIGZvdXJ0aFRpZXI6IEFyaXR5IGZpeHVwIHNob3VsZCBiZSBkb25lIHdoaWxlIG9uIHNhbWUg
c3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NzEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZWQgdGhlIGZpeHVwIHBhcnQgb2Ygb3BfY2FsbF9hcml0eUNoZWNrKCkgYW5kIG9wX2NvbnN0
cnVjdF9hcml0eUNoZWNrKCkgYW5kIG1vdmVkIGl0IHRvCisgICAgICAgIGEgdGh1bmsgZm9yIHRo
ZSBKSVRzIGFuZCBhcyBhc3NlbWJseSBmb3IgdGhlIGxsaW50LiAgVGhpcyBwYXRjaCBwcm92aWRl
cyB0aGUgcGx1bWJpbmcgbmVlZGVkIHRvCisgICAgICAgIG1vdmUgdG8gdGhlIEMgc3RhY2sgZm9y
IEpTIGV4ZWN1dGlvbi4gIFRoZSBmaXh1cCB0aHVuayBhbmQgbGxpbnQgY29kZSB3b3VsZCBuZWVk
IHRvIGJlIGNoYW5nZSB0bworICAgICAgICB3b3JrIHdpdGggYSBzdGFjayB0aGF0IGdyb3dzIGRv
d24gd2hlbiB3ZSBkbyBtb3ZlIHRvIHRoZSBDIHN0YWNrLgorICAgICAgICAKKyAgICAgICAgRHVl
IHRvIGFuIGlzc3VlIHdpdGggdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCBJIG1vdmVkIHRoZSBjb25z
dCBhdCB0aGUgdG9wIG9mIExvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKyAgICAgICAgYW5kIExv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gdG8gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uICBU
aGUgcHJvYmxlbSBpcyB0aGF0IGEgY29uc3QgZGVmaW5lZCBpbgorICAgICAgICBvbmUgZmlsZSB0
aGF0IGFyZSB1c2VkIGluIGEgbWFjcm8gZG9lc24ndCByZXNvbHZlIHRoZSBtYWNybyBpZiBpdCBp
cyB1c2VkIGluIGFub3RoZXIgZmlsZS4gIFRoaXMKKyAgICAgICAgc2VlbWVkIGxpa2UgdGhlIHF1
aWNrZXN0IHBhdGguCisKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpsaW5rRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAoSklUQ29tcGlsZXIpOgorICAgICAgICAqIGZ0bC9GVExMaW5r
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjphcml0eUZpeHVwKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmg6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvcik6CisKIDIwMTMtMDYtMTcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+
CiAKICAgICAgICAgRlRMOiBBZGQgYW5vdGhlciB0ZW1wIHJlZ2lzdGVyIHJlZ1Q0IHRvIEpTSW50
ZXJmYWNlSklUCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMTUxNzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw3ICszODYsMTAgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBiZWdpbkNhbGwoQ29kZU9yaWdp
bigwKSwgdG9rZW4pOwogICAgIG1fY2FsbEFyaXR5Q2hlY2sgPSBjYWxsKCk7CiAgICAgbm90aWZ5
Q2FsbChtX2NhbGxBcml0eUNoZWNrLCBDb2RlT3JpZ2luKDApLCB0b2tlbik7Ci0gICAgbW92ZShH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGJyYW5jaFRl
c3QzMihaZXJvLCBHUFJJbmZvOjpyZWdUMCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsK
KyAgICBiZWdpbkNhbGwoQ29kZU9yaWdpbigwKSwgdG9rZW4pOworICAgIG1fY2FsbEFyaXR5Rml4
dXAgPSBjYWxsKCk7CisgICAgbm90aWZ5Q2FsbChtX2NhbGxBcml0eUZpeHVwLCBDb2RlT3JpZ2lu
KDApLCB0b2tlbik7CiAgICAganVtcChmcm9tQXJpdHlDaGVjayk7CiAgICAgCiAgICAgLy8gR2Vu
ZXJhdGUgc2xvdyBwYXRoIGNvZGUuCkBAIC00MTQsNiArNDE3LDcgQEAgdm9pZCBKSVRDb21waWxl
cjo6bGlua0Z1bmN0aW9uKCkKICAgICAvLyBGSVhNRTogc3dpdGNoIHRoZSBzdGFjayBjaGVjayAm
IGFyaXR5IGNoZWNrIG92ZXIgdG8gREZHT3BlcnRhaW9uIHN0eWxlIGNhbGxzLCBub3QgSklUIHN0
dWJzLgogICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsU3RhY2tDaGVjaywgY3RpX3N0YWNrX2No
ZWNrKTsKICAgICBsaW5rQnVmZmVyLT5saW5rKG1fY2FsbEFyaXR5Q2hlY2ssIG1fY29kZUJsb2Nr
LT5tX2lzQ29uc3RydWN0b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlfb3Bf
Y2FsbF9hcml0eUNoZWNrKTsKKyAgICBsaW5rQnVmZmVyLT5saW5rKG1fY2FsbEFyaXR5Rml4dXAs
IEZ1bmN0aW9uUHRyKChtX3ZtLT5nZXRDVElTdHViKGFyaXR5Rml4dXApKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOwogICAgIAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJl
dmlzaW9uIDE1MTcwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIwLDYgKzUyMCw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgQ2FsbCBtX2NhbGxTdGFja0NoZWNrOwogICAgIENhbGwgbV9jYWxsQXJpdHlDaGVjazsKKyAg
ICBDYWxsIG1fY2FsbEFyaXR5Rml4dXA7CiAgICAgTGFiZWwgbV9hcml0eUNoZWNrOwogICAgIE93
blB0cjxTcGVjdWxhdGl2ZUpJVD4gbV9zcGVjdWxhdGl2ZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE1MTcwNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiArMTIw
LDE0IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFr
ZSB0aGlzIGNhbGwgcmVnaXN0ZXIgd2l0aCBleGNlcHRpb24gaGFuZGxpbmcgc29tZWhvdy4gVGhp
cyBpcwogICAgIC8vIHBhcnQgb2YgYSBiaWdnZXIgcHJvYmxlbTogRlRMIHNob3VsZCBiZSBhYmxl
IHRvIGhhbmRsZSBleGNlcHRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTM2MjIKLSAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJz
OjpaZXJvLCBHUFJJbmZvOjpyZWdUMCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCAmaml0KTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgIGpp
dC5qdW1wKGZyb21Bcml0eUNoZWNrKTsKICAgICAgICAgCiAgICAgT3duUHRyPExpbmtCdWZmZXI+
IGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcihzdGF0ZS5ncmFwaC5tX3ZtLCAm
aml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICBsaW5rQnVm
ZmVyLT5saW5rKGNhbGxTdGFja0NoZWNrLCBjdGlfc3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZm
ZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gY3Rp
X29wX2NvbnN0cnVjdF9hcml0eUNoZWNrIDogY3RpX29wX2NhbGxfYXJpdHlDaGVjayk7CisgICAg
bGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHN0YXRlLmdyYXBo
Lm1fdm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAKICAgICBzdGF0ZS5maW5hbGl6ZXItPmluaXRpYWxpemVFbnRyeXBvaW50TGlua0J1
ZmZlcihsaW5rQnVmZmVyLnJlbGVhc2UoKSk7CiAgICAgc3RhdGUuZmluYWxpemVyLT5pbml0aWFs
aXplRnVuY3Rpb24oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTUxNzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTQsNyArNjU0LDExIEBAIFBhc3NSZWZQ
dHI8SklUQ29kZT4gSklUOjpwcml2YXRlQ29tcGlsZSgKICAgICAgICAgYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMp
KS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9
IDA7Ci0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0
b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlfb3BfY2FsbF9hcml0eUNoZWNr
KS5jYWxsKGNhbGxGcmFtZVJlZ2lzdGVyKTsKKworICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBt
X2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNr
IDogY3RpX29wX2NhbGxfYXJpdHlDaGVjaykuY2FsbChyZWdUMCk7CisgICAgICAgIGJyYW5jaFRl
c3QzMihaZXJvLCByZWdUMCkubGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOworICAgICAgICBlbWl0
TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJpdHlGaXh1cCkuY29kZSgpKTsKKwogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9ICh1bnNpZ25lZCktMTsg
Ly8gUmVzZXQgdGhpcywgaW4gb3JkZXIgdG8gZ3VhcmQgaXRzIHVzZSB3aXRoIEFTU0VSVHMuCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lv
biAxNTE3MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE1NywzMCArMTE1NywzMCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKK0RFRklORV9TVFVCX0ZVTkNUSU9O
KGludCwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ssIENvZGVGb3JDYWxsKTsK
LSAgICBpZiAoIW5ld0NhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJv
bU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNT
LCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7Cisg
ICAgaW50IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcihj
YWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ssIENvZGVGb3JDYWxsKTsKKyAgICBpZiAobWlzc2lu
Z0FyZ0NvdW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDxp
bnQ+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCi0gICAgcmV0dXJu
IG5ld0NhbGxGcmFtZTsKKyAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwogfQogCi1ERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0X2FyaXR5Q2hlY2spCitERUZJTkVfU1RV
Ql9GVU5DVElPTihpbnQsIG9wX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
c3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENv
bW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ss
IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIGlmICghbmV3Q2FsbEZyYW1lKQotICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUs
IFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCkpKTsKKyAgICBpbnQgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5zdGFjaywgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApCisgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8aW50PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJf
UkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCkpKTsKIAotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CisgICAgcmV0dXJuIG1pc3Np
bmdBcmdDb3VudDsKIH0KIAogaW5saW5lIHZvaWQqIGxhenlMaW5rRm9yKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxNTE3MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMCw4ICs0MDAsOCBAQCB2
b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19zdGF0aWNfZXJyb3IoCiAjaWYgRU5BQkxFKERGR19K
SVQpCiB2b2lkIEpJVF9TVFVCIGN0aV9vcHRpbWl6ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKICNlbmRpZgotdm9pZCogSklUX1NUVUIgY3RpX29wX2NhbGxfYXJpdHlDaGVj
ayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLXZvaWQqIEpJVF9TVFVCIGN0
aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRF
Uk5BTDsKK2ludCBKSVRfU1RVQiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKFNUVUJfQVJHU19ERUNM
QVJBVElPTikgV1RGX0lOVEVSTkFMOworaW50IEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3RfYXJp
dHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9T
VFVCIGN0aV9vcF9jYWxsX2ppdENvbXBpbGUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3BfY29uc3RydWN0X2ppdENvbXBpbGUoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3Bfc3dp
dGNoX2NoYXIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAx
NTE3MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTU3RhY2suaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVua0pJVC5oIgog
I2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KQEAgLTQxOCw2ICs0MTksODQgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbgogICAgIHJldHVybiBuYXRpdmVGb3JHZW5l
cmF0b3Iodm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
YXJpdHlGaXh1cChWTSogdm0pCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgLy8g
V2UgZW50ZXIgd2l0aCBmaXh1cCBjb3VudCBpbiByZWdUMAorI2lmIFVTRShKU1ZBTFVFNjQpCisj
ICBpZiBDUFUoWDg2XzY0KQorICAgIGppdC5wb3AoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Q0KTsKKyMg
IGVuZGlmCisgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKC04KSwg
SlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMp
OworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogOCksIEpTSW50ZXJm
YWNlSklUOjpyZWdUMik7CisgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
MzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7
CisKKyAgICAvLyBNb3ZlIGN1cnJlbnQgZnJhbWUgcmVnVDAgbnVtYmVyIG9mIHNsb3RzCisgICAg
SlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGNvcHlMb29wKGppdC5sYWJlbCgpKTsKKyAgICBqaXQubG9h
ZDY0KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBq
aXQuc3RvcmU2NChKU0ludGVyZmFjZUpJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJm
YWNlSklUOjpUaW1lc0VpZ2h0KSk7CisgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJVDo6VHJ1
c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigx
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oY29weUxvb3AsICZqaXQpOworCisgICAg
Ly8gRmlsbCBpbiByZWdUMCBtaXNzaW5nIGFyZyBzbG90cyB3aXRoIHVuZGVmaW5lZAorICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKKyAg
ICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgZmlsbFVu
ZGVmaW5lZExvb3Aoaml0LmxhYmVsKCkpOworICAgIGppdC5zdG9yZTY0KEpTSW50ZXJmYWNlSklU
OjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0ludGVyZmFjZUpJVDo6cmVnVDMs
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVzRWlnaHQpKTsKKyAg
ICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJmYWNl
SklUOjpyZWdUMyk7CisgICAgaml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCBKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIp
LmxpbmtUbyhmaWxsVW5kZWZpbmVkTG9vcCwgJmppdCk7CisKKyAgICAvLyBBZGp1c3QgY2FsbCBm
cmFtZSByZWdpc3RlciB0byBhY2NvdW50IGZvciBtaXNzaW5nIGFyZ3MKKyAgICBqaXQubHNoaWZ0
MzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigzKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
KTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKworIyAgaWYgQ1BVKFg4Nl82NCkKKyAgICBqaXQucHVzaChK
U0ludGVyZmFjZUpJVDo6cmVnVDQpOworIyAgZW5kaWYKKyAgICBqaXQucmV0KCk7CisjZWxzZQor
IyAgaWYgQ1BVKFg4NikKKyAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CisjICBl
bmRpZgorICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigtOCksIEpT
SW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsK
KyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIDgpLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDIpOworICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMy
KEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwor
CisgICAgLy8gTW92ZSBjdXJyZW50IGZyYW1lIHJlZ1QwIG51bWJlciBvZiBzbG90cworICAgIEpT
SW50ZXJmYWNlSklUOjpMYWJlbCBjb3B5TG9vcChqaXQubGFiZWwoKSk7CisgICAgaml0LmxvYWQz
MihKU0ludGVyZmFjZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0
LnN0b3JlMzIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFj
ZUpJVDo6VGltZXNFaWdodCkpOworICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCA0KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAg
ICBqaXQuc3RvcmUzMihKU0ludGVyZmFjZUpJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNl
SW5kZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBKU0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50
ZXJmYWNlSklUOjpUaW1lc0VpZ2h0LCA0KSk7CisgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOworICAgIGppdC5icmFu
Y2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKS5saW5rVG8oY29weUxvb3AsICZqaXQpOwor
CisgICAgLy8gRmlsbCBpbiByZWdUMCBtaXNzaW5nIGFyZyBzbG90cyB3aXRoIHVuZGVmaW5lZAor
ICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qy
KTsKKyAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgZmlsbFVuZGVmaW5lZExvb3Aoaml0LmxhYmVs
KCkpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoMCksIEpTSW50
ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaml0LnN0b3JlMzIoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qx
LCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpyZWdUMywgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6VGltZXNFaWdodCkpOworICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKKyAgICBqaXQuc3RvcmUzMihKU0ludGVyZmFjZUpJVDo6
cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBK
U0ludGVyZmFjZUpJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpUaW1lc0VpZ2h0LCA0KSk7CisK
KyAgICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJm
YWNlSklUOjpyZWdUMyk7CisgICAgaml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDEpLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDIpLmxpbmtUbyhmaWxsVW5kZWZpbmVkTG9vcCwgJmppdCk7CisKKyAgICAvLyBBZGp1c3QgY2Fs
bCBmcmFtZSByZWdpc3RlciB0byBhY2NvdW50IGZvciBtaXNzaW5nIGFyZ3MKKyAgICBqaXQubHNo
aWZ0MzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigzKSwgSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKKyAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpyZWdUMCwgSlNJbnRlcmZhY2VK
SVQ6OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKworIyAgaWYgQ1BVKFg4NikKKyAgICBqaXQucHVzaChK
U0ludGVyZmFjZUpJVDo6cmVnVDQpOworIyAgZW5kaWYKKyAgICBqaXQucmV0KCk7CisjZW5kaWYK
KworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQp
OworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoImZpeHVwIGFyaXR5Iikp
OworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRodW5rSklUJiBq
aXQsIFZNKiB2bSkKIHsKICAgICAvLyBsb2FkIHN0cmluZwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCShyZXZpc2lvbiAxNTE3MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsQ29uc3RydWN0R2UK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHJpbmdMZW5ndGhUcmFtcG9saW5lR2VuZXJhdG9yKFZN
Kik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSopOwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSopOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGFyaXR5Rml4dXAoVk0qKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNo
YXJBdFRodW5rR2VuZXJhdG9yKFZNKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24g
MTUxNzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTcwLDE4ICs3MCw2IEBACiAjIEJlbG93IHdl
IGhhdmUgYSBidW5jaCBvZiBjb25zdGFudCBkZWNsYXJhdGlvbnMuIEVhY2ggY29uc3RhbnQgbXVz
dCBoYXZlCiAjIGEgY29ycmVzcG9uZGluZyBBU1NFUlQoKSBpbiBMTEludERhdGEuY3BwLgogCi0K
LSMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgotY29uc3QgSW50MzJUYWcgPSAtMQot
Y29uc3QgQm9vbGVhblRhZyA9IC0yCi1jb25zdCBOdWxsVGFnID0gLTMKLWNvbnN0IFVuZGVmaW5l
ZFRhZyA9IC00Ci1jb25zdCBDZWxsVGFnID0gLTUKLWNvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgot
Y29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKLWNvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1
ZVRhZwotCi0KICMgVXRpbGl0aWVzCiBtYWNybyBkaXNwYXRjaChhZHZhbmNlKQogICAgIGFkZHAg
YWR2YW5jZSAqIDQsIFBDCkBAIC0zMTgsMTEgKzMwNiwzOCBAQCBtYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50
Q291bnRbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNb
dDFdLCBkb25lTGFiZWwKICAgICBjQ2FsbDIoc2xvd19wYXRoLCBjZnIsIFBDKSAgICMgVGhpcyBz
bG93X3BhdGggaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9
IDAgPT4gZXJyb3IKLSAgICBtb3ZlIHQxLCBjZnIKLSAgICBidGl6IHQwLCAuY29udGludWUKKyAg
ICBidGl6IHQwLCAuaXNBcml0eUZpeHVwTmVlZGVkCiAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
dm1bc3BdLCB0MQogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCiAgICAg
am1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5pc0FyaXR5Rml4dXBOZWVkZWQ6
CisgICAgYnRpeiB0MSwgLmNvbnRpbnVlCisKKyAgICAvLyBNb3ZlIGZyYW1lIGRvd24gInQxIiBz
bG90cworICAgIG1vdmUgY2ZyLCB0MworICAgIHN1YnAgOCwgdDMKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MgorICAgIGFkZGkgQ2FsbEZyYW1lSGVhZGVy
U2xvdHMsIHQyCisuY29weUxvb3A6CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0M10sIHQwCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0KKyAgICBsb2FkaSBUYWdPZmZz
ZXRbdDNdLCB0MAorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MSwgOF0KKyAgICBzdWJw
IDgsIHQzCisgICAgYnN1YmlueiAxLCB0MiwgLmNvcHlMb29wCisKKyAgICAvLyBGaWxsIG5ldyBz
bG90cyB3aXRoIEpTVW5kZWZpbmVkCisgICAgbW92ZSB0MSwgdDIKKy5maWxsTG9vcDoKKyAgICBt
b3ZlIDAsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0KKyAgICBt
b3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDEsIDhd
CisgICAgc3VicCA4LCB0MworICAgIGJzdWJpbnogMSwgdDIsIC5maWxsTG9vcAorCisgICAgbHNo
aWZ0cCAzLCB0MQorICAgIGFkZHAgdDEsIGNmcgogLmNvbnRpbnVlOgogICAgICMgUmVsb2FkIENv
ZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBzbG93X3BhdGggY2xvYmJlcmVkIGl0LgogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE1MTcwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNiArMjIsNiBAQAogIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIAotIyBTb21lIHZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4K
LWNvbnN0IFRhZ0JpdFR5cGVPdGhlciA9IDB4MgotY29uc3QgVGFnQml0Qm9vbCAgICAgID0gMHg0
Ci1jb25zdCBUYWdCaXRVbmRlZmluZWQgPSAweDgKLWNvbnN0IFZhbHVlRW1wdHkgICAgICA9IDB4
MAotY29uc3QgVmFsdWVGYWxzZSAgICAgID0gVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbAot
Y29uc3QgVmFsdWVUcnVlICAgICAgID0gVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IDEK
LWNvbnN0IFZhbHVlVW5kZWZpbmVkICA9IFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5l
ZAotY29uc3QgVmFsdWVOdWxsICAgICAgID0gVGFnQml0VHlwZU90aGVyCi0KICMgVXRpbGl0aWVz
LgogbWFjcm8ganVtcFRvSW5zdHJ1Y3Rpb24oKQogICAgIGptcCBbUEIsIFBDLCA4XQpAQCAtMjAy
LDExICsxOTIsMzUgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvdwog
ICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAog
ICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICBjQ2FsbDIoc2xvd19wYXRoLCBjZnIsIFBD
KSAgICMgVGhpcyBzbG93X3BhdGggaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8g
ZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKLSAgICBtb3ZlIHQxLCBjZnIKLSAgICBidGl6IHQwLCAu
Y29udGludWUKKyAgICBidGl6IHQwLCAuaXNBcml0eUZpeHVwTmVlZGVkCiAgICAgbG9hZHAgSklU
U3RhY2tGcmFtZTo6dm1bc3BdLCB0MQogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0
MV0sIHQwCiAgICAgam1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5pc0FyaXR5
Rml4dXBOZWVkZWQ6CisgICAgYnRpeiB0MSwgLmNvbnRpbnVlCisKKyAgICAvLyBNb3ZlIGZyYW1l
IGRvd24gInQxIiBzbG90cworICAgIG1vdmUgY2ZyLCB0MworICAgIHN1YnAgOCwgdDMKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MgorICAgIGFkZGkgQ2Fs
bEZyYW1lSGVhZGVyU2xvdHMsIHQyCisuY29weUxvb3A6CisgICAgbG9hZHEgW3QzXSwgdDAKKyAg
ICBzdG9yZXEgdDAsIFt0MywgdDEsIDhdCisgICAgc3VicCA4LCB0MworICAgIGJzdWJpbnogMSwg
dDIsIC5jb3B5TG9vcAorCisgICAgLy8gRmlsbCBuZXcgc2xvdHMgd2l0aCBKU1VuZGVmaW5lZAor
ICAgIG1vdmUgdDEsIHQyCisgICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgdDAKKy5maWxsTG9vcDoK
KyAgICBzdG9yZXEgdDAsIFt0MywgdDEsIDhdCisgICAgc3VicCA4LCB0MworICAgIGJzdWJpbnog
MSwgdDIsIC5maWxsTG9vcAorCisgICAgbHNoaWZ0cCAzLCB0MQorICAgIGFkZHAgdDEsIGNmcgor
CiAuY29udGludWU6CiAgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCByZXNldCBQQywgc2luY2Ug
dGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgdGhlbS4KICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE1MTcwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQCBlbmQKIAogIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRl
ci9KU1N0YWNrLmguCiBjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IENhbGxG
cmFtZUhlYWRlclNsb3RzID0gNgogY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAogY29uc3QgQ2Fs
bGVyRnJhbWUgPSAtNDAKIGNvbnN0IENhbGxlZSA9IC0zMgpAQCAtNDEsNiArNDIsMjcgQEAgY29u
c3QgQ29kZUJsb2NrID0gLTgKIAogY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gLUNhbGxGcmFt
ZUhlYWRlclNpemUgLSA4CiAKKyMgU29tZSB2YWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMu
CitpZiBKU1ZBTFVFNjQKK2NvbnN0IFRhZ0JpdFR5cGVPdGhlciA9IDB4MgorY29uc3QgVGFnQml0
Qm9vbCAgICAgID0gMHg0Citjb25zdCBUYWdCaXRVbmRlZmluZWQgPSAweDgKK2NvbnN0IFZhbHVl
RW1wdHkgICAgICA9IDB4MAorY29uc3QgVmFsdWVGYWxzZSAgICAgID0gVGFnQml0VHlwZU90aGVy
IHwgVGFnQml0Qm9vbAorY29uc3QgVmFsdWVUcnVlICAgICAgID0gVGFnQml0VHlwZU90aGVyIHwg
VGFnQml0Qm9vbCB8IDEKK2NvbnN0IFZhbHVlVW5kZWZpbmVkICA9IFRhZ0JpdFR5cGVPdGhlciB8
IFRhZ0JpdFVuZGVmaW5lZAorY29uc3QgVmFsdWVOdWxsICAgICAgID0gVGFnQml0VHlwZU90aGVy
CitlbHNlCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0
IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAt
NQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNwor
Y29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCitlbmQKKwogIyBTb21lIHJlZ2lzdGVy
IGNvbnZlbnRpb25zLgogaWYgSlNWQUxVRTY0CiAgICAgIyAtIFVzZSBhIHBhaXIgb2YgcmVnaXN0
ZXJzIHRvIHJlcHJlc2VudCB0aGUgUEM6IG9uZSByZWdpc3RlciBmb3IgdGhlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJl
dmlzaW9uIDE1MTcwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCwyOSArMTY4LDI5IEBAIG5hbWVzcGFj
ZSBKU0MgewogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIHsKICAg
ICBCRUdJTigpOwotICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJp
dHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDYWxsKTsK
LSAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICBpbnQgU2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRo
czo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JD
YWxsKTsKKyAgICBpZiAoU2xvdHNUb0FkZCA8IDApIHsKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5QQyA9IGV4ZWMtPnJldHVyblBDKCk7CiAgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxs
ZXJGcmFtZSgpOwogICAgICAgICB2bS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CiAgICAgICAgIExMSW50OjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywg
cmV0dXJuUEMpOwogICAgICAgICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOwogICAgIH0KLSAgICBSRVRVUk5fVFdPKDAsIG5l
d0V4ZWMpOworICAgIFJFVFVSTl9UV08oMCwgcmVpbnRlcnByZXRfY2FzdDxFeGVjU3RhdGUqPihT
bG90c1RvQWRkKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJp
dHlDaGVjaykKIHsKICAgICBCRUdJTigpOwotICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCks
IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIGlmICghbmV3RXhlYykgeworICAgIGludCBTbG90c1Rv
QWRkID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRl
ci0+c3RhY2soKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKFNsb3RzVG9BZGQgPCAwKSB7
CiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOwog
ICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAgICAgICAgdm0uZXhjZXB0aW9u
ID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwogICAgICAgICBMTEludDo6aW50ZXJw
cmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVyblBDKTsKICAgICAgICAgUkVUVVJOX1RXTyhi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKICAg
ICB9Ci0gICAgUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKKyAgICBSRVRVUk5fVFdPKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8RXhlY1N0YXRlKj4oU2xvdHNUb0FkZCkpOwogfQogCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNTE3MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMzYgKzQ1LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29t
bW9uU2xvd1BhdGhzIHsKIAotQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3Io
RXhlY1N0YXRlKiBleGVjLCBKU1N0YWNrKiBzdGFjaywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQorQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RhY2sqIHN0YWNrLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAg
QVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIENvZGVCbG9jayogbmV3Q29k
ZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOwogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KKyAgICAKICAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdo
IHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNz
ZWQgYnkgdGhlIGNhbGxlci4KICAgICBpZiAoIXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygp
ICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIAogICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkg
Y2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMg
d2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciogc3Jj
ID0gZXhlYy0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVy
cygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zm
c2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+
PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRh
OwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmlu
ZWQoKTsKLQotICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7
Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHN0YWNrLT5lbmQoKSk7Ci0gICAgcmV0dXJu
IG5ld0V4ZWM7CisgICAgCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMsIHJldHVybiB0aGUgbnVt
YmVyIG9mIG1pc3NpbmcgYXJndW1lbnRzIHNvIHRoZSBjYWxsZXIgY2FuCisgICAgLy8gZ3JvdyB0
aGUgZnJhbWUgaW4gcGxhY2UgYW5kIGZpbGwgaW4gdW5kZWZpbmVkIHZhbHVlcyBmb3IgdGhlIG1p
c3NpbmcgYXJncy4KKyAgICByZXR1cm4obmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiB9CiAKIGlubGluZSBib29sIG9wSW4oRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHByb3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCg==
</data>
<flag name="review"
          id="226382"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>