<?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>157215</bug_id>
          
          <creation_ts>2016-04-29 16:49:54 -0700</creation_ts>
          <short_desc>Unite *with_this opcodes with their non this version</short_desc>
          <delta_ts>2016-09-17 18:51:08 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>162125</dependson>
    
    <dependson>162126</dependson>
    
    <dependson>162127</dependson>
    
    <dependson>162124</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1188868</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-29 16:49:54 -0700</bug_when>
    <thetext>This would probably require making *by_id and *by_val also take a this parameter.
It would also requiring changing ICs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224121</commentid>
    <comment_count>1</comment_count>
      <attachid>287252</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2016-08-29 00:04:08 -0700</bug_when>
    <thetext>Created attachment 287252
WIP get_by_id

This is just the first move on this Patch. I am planing separate into in 2 Patches one to merge get_by_id* and other to put_by_id*

In this version I am justing supporting the LLInt layer.

In LLint layer, I am considering that the property cache can happen as the &quot;ident&quot; being cached as prototype cache of thisValue. It is not enabled to Getters yet, but there is a Patch implementing this (https://bugs.webkit.org/show_bug.cgi?id=158083). Is this reasoning consistent?

My major doubt in Baseline is about PIC. Do we support it to Getter/Setters? If yes, how this mechanism work? If I am not wrong, usually the IC is a stub considering some observed types and loading the correspondent offset for each object, however getter e setter requires a function call, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225331</commentid>
    <comment_count>2</comment_count>
      <attachid>287617</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2016-09-01 09:01:00 -0700</bug_when>
    <thetext>Created attachment 287617
WIP get_by_id PIC fixing

This version is just a prototype to enable the new version of get_by_id PIC support.

I am not going to keep the different methods like &quot;operationGetByIdOptimizeWithThis&quot; and the JITGetByIdGenerator new constructor in the final version, but I am doing this way because it is easier to debug without change all 4 layers at once.

I am justing enabling it to 64 bits version, but 32 bits support is coming soon.

As I mentioned before, LLInt change isn&apos;t adding much because we aren&apos;t inline caching accessors yet. However, I noticed that this update enable PIC in Baseline layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226163</commentid>
    <comment_count>3</comment_count>
      <attachid>287868</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2016-09-03 13:46:11 -0700</bug_when>
    <thetext>Created attachment 287868
WIP get_by_id in DFG

This version is enabling the main cases of get_by_id in DFG layer. I added thisOperand as a child2() of GetById(Flush) nodes. When these nodes are compiled and the getter is inlined, we can set thisOperand as the this of inlined Frame.

What I am missing to finish get_by_id_merge is:

- Merge it in FTL layer;
- Check other cases with Polymorphic and Megamorphic calls;
- Merge get_by_id in x86_32; 

I am having some troubles to compile the following sample in FTL mode:

```
&quot;use strict&quot;;
var Base = class Base {
    constructor() { this._name = &quot;Name&quot;; }
    get name() { return this._name; } // If this instead returns a static: return &quot;Foo&quot; things somewhat work.
    set name(x) { this._name = x; }
};

var Subclass = class Subclass extends Base {
    get name() { return super.name; }
};

function getterName(instance) {
    return instance.name;
}

var instance = new Subclass;
for (let i = 0; i &lt; 1000000;i++)
    getterName(instance);
```
I have no idea yet, because I dumped the DFG and found CheckTierUpAtReturn(MustGen, W:SideState, Exits, bc#16). Going to investigate it more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229912</commentid>
    <comment_count>4</comment_count>
      <attachid>288932</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2016-09-14 23:51:09 -0700</bug_when>
    <thetext>Created attachment 288932
WIP 64bits support in all layers

This Patch is implementing the 64bit version of get_by_id merge. The idea is to put this as get_by_id operand and propagate it through Baseline, DFG and FTL. To avoid register usage when this == base, we check this case on  DFG and FTL.

The test is considering Polymorphic and Megamorphic IC. Also there are 2 conditions to be checked that is when --useAccessInline=(false|true). I would like to know if there is a way to set a JSC option from a test script, because this way I can improve the test to consider --useAccessInline=(false|true) directly from tests.

There are a lot of work to do yet and definitely I am going to split the *by_id in 4 patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287252</attachid>
            <date>2016-08-29 00:04:08 -0700</date>
            <delta_ts>2016-09-01 09:01:00 -0700</delta_ts>
            <desc>WIP get_by_id</desc>
            <filename>wip_by_id_merge.diff</filename>
            <type>text/plain</type>
            <size>8611</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpp
bmRleCBhM2IwMGYzLi4wMTc0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC02Miw5ICs2Miw5IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9pc19mdW5jdGlvbiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3RoIiA6IDkgfSwKLSAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogOSAgfSwKLSAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2dldF9ieV9pZF9wcm90b19sb2FkIiwgImxlbmd0aCIgOiA5IH0sCi0gICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfdW5zZXQiLCAibGVuZ3RoIiA6IDkgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogMTAgIH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZCIsICJsZW5n
dGgiIDogMTAgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF91bnNldCIs
ICJsZW5ndGgiIDogMTAgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF93
aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dl
dF9ieV92YWxfd2l0aF90aGlzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF90cnlfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA1IH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDVjMDdlZmEuLmFhZTRjMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNzEs
NyArMzcxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiBv
dXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLAogICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsIG9wKTsKICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlk
MCkpLmRhdGEoKSk7Ci0gICAgaXQgKz0gNDsgLy8gSW5jcmVtZW50IHVwIHRvIHRoZSB2YWx1ZSBw
cm9maWxlci4KKyAgICBpdCArPSA1OyAvLyBJbmNyZW1lbnQgdXAgdG8gdGhlIHZhbHVlIHByb2Zp
bGVyLgogfQogCiBzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IGNoYXIqIG5hbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNzJkMjc4Yi4uNDQ5MjY5OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTI0ODQsNiArMjQ4NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JM
TEludENhY2hpbmcoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0Owog
fQpAQCAtMjQ5MiwxMSArMjQ5MywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZQogewogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9w
ZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggZ2V0X2J5X3ZhbC4iKTsKIAotICAgIGVtaXRP
cGNvZGUob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CisvLyAgICBlbWl0T3Bjb2RlKG9wX2dldF9i
eV9pZF93aXRoX3RoaXMpOworLy8gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7
CisvLyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisvLyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5kZXgoKSk7CisvLyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBtX2NvZGVCbG9jay0+YWRkUHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworCisgICAgVW5s
aW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlf
aWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
dGhpc1ZhbC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
KHByb3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKE9wdGlvbnM6OnByb3RvdHlwZUhpdENvdW50Rm9yTExJbnRDYWNo
aW5nKCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CisKICAgICByZXR1cm4gZHN0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA0Yjk5YTRhLi5hNTU0MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKQEAgLTYzOSwxOSArNjM5LDIyIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+
aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQ
cm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg4KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSBjYW5kaWRhdGVWYWx1ZSA9IHBjWzJdLnUub3BlcmFuZCA9PSBwY1s4XS51Lm9wZXJhbmQgPyBi
YXNlVmFsdWUgOiB0aGlzVmFsdWU7CisgICAgCisgICAgUHJvcGVydHlTbG90IHNsb3QoY2FuZGlk
YXRlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQs
IHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIExMSU5UX09QKDEpID0g
cmVzdWx0OwogICAgIAogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCi0gICAgICAg
ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBjYW5kaWRhdGVWYWx1ZS5pc0NlbGwo
KQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKIAotICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0g
Y2FuZGlkYXRlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZUNlbGwtPnN0cnVjdHVyZSgpOwotICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkgJiYgc2xv
dC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgeworICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkg
JiYgc2xvdC5zbG90QmFzZSgpID09IGNhbmRpZGF0ZVZhbHVlKSB7CiAgICAgICAgICAgICAvLyBT
dGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCiAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgICAg
IHBjWzRdLnUucG9pbnRlciA9IG51bGxwdHI7IC8vIG9sZCBzdHJ1Y3R1cmUKQEAgLTY2OSwxNyAr
NjcyLDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAg
ICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShwY1s3XS51Lm9wZXJhbmQgJiYg
KHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSkpIHsKLSAgICAgICAgICAgIEFTU0VS
VChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVChzbG90
LnNsb3RCYXNlKCkgIT0gY2FuZGlkYXRlVmFsdWUpOwogCiAgICAgICAgICAgICBpZiAoISgtLXBj
WzddLnUub3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2Fj
aGUoZXhlYywgdm0sIHBjLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCi0gICAgICAgICYmIGlzSlNBcnJh
eShiYXNlVmFsdWUpCisgICAgICAgICYmIGlzSlNBcnJheShjYW5kaWRhdGVWYWx1ZSkKICAgICAg
ICAgJiYgaWRlbnQgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUob3BfZ2V0X2FycmF5X2xlbmd0aCk7CiAg
ICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gY29kZUJsb2NrLT5nZXRPckFkZEFy
cmF5UHJvZmlsZShwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7Ci0gICAg
ICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0
cnVjdHVyZSgpKTsKKyAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKGNhbmRp
ZGF0ZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIHBjWzRdLnUuYXJyYXlQ
cm9maWxlID0gYXJyYXlQcm9maWxlOwogCiAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlw
ZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA5ZWM1N2M4Li4yNzJj
ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMTI1NSw5ICsxMjU1LDE3IEBAIG1hY3JvIHN0b3JlUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0QXNJbnQsIG9iamVjdEFuZFN0b3JhZ2Us
IHZhbHVlCiAgICAgc3RvcmVxIHZhbHVlLCAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIDhb
b2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXRBc0ludCwgOF0KIGVuZAogCittYWNybyBs
b2FkVGhpc09yQmFzZShiYXNlLCB0aGlzKQorICAgYmluZXEgYmFzZSwgdGhpcywgLmtlZXBCYXNl
T3BlcmFuZAorICAgbW92ZSBiYXNlLCB0aGlzCisua2VlcEJhc2VPcGVyYW5kOgorZW5kCisKIF9s
bGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigyLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oOCwgdDEpCisgICAg
bG9hZFRoaXNPckJhc2UodDAsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQw
LCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDIpCkBAIC0xMjY2LDE3ICsxMjc0
LDE5IEBAIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQyKQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKICAgICBz
dG9yZXEgdDAsIFtjZnIsIHQyLCA4XQotICAgIHZhbHVlUHJvZmlsZSh0MCwgOCwgdDEpCi0gICAg
ZGlzcGF0Y2goOSkKKyAgICB2YWx1ZVByb2ZpbGUodDAsIDksIHQxKQorICAgIGRpc3BhdGNoKDEw
KQogCiAub3BHZXRCeUlkU2xvdzoKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBkaXNwYXRjaCgxMCkKIAogCiBf
bGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
OCwgdDEpCisgICAgbG9hZFRoaXNPckJhc2UodDAsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFByb3RvU2xvdykKICAgICBsb2FkaSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDNdLCB0MQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0MikK
QEAgLTEyODYsMjkgKzEyOTYsMzEgQEAgX2xsaW50X29wX2dldF9ieV9pZF9wcm90b19sb2FkOgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQxLCB0MywgdDApCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0KLSAgICB2
YWx1ZVByb2ZpbGUodDAsIDgsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgdmFsdWVQcm9maWxl
KHQwLCA5LCB0MSkKKyAgICBkaXNwYXRjaCgxMCkKIAogLm9wR2V0QnlJZFByb3RvU2xvdzoKICAg
ICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlz
cGF0Y2goOSkKKyAgICBkaXNwYXRjaCgxMCkKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X2lkX3Vuc2V0
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDAp
CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDgsIHQxKQorICAgIGxvYWRUaGlzT3JCYXNlKHQw
LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRV
bnNldFNsb3cpCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDIpCiAgICAgYmluZXEgdDIsIHQxLCAub3BHZXRCeUlk
VW5zZXRTbG93CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIHN0b3JlcSBW
YWx1ZVVuZGVmaW5lZCwgW2NmciwgdDIsIDhdCi0gICAgdmFsdWVQcm9maWxlKFZhbHVlVW5kZWZp
bmVkLCA4LCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIHZhbHVlUHJvZmlsZShWYWx1ZVVuZGVm
aW5lZCwgOSwgdDEpCisgICAgZGlzcGF0Y2goMTApCiAKIC5vcEdldEJ5SWRVbnNldFNsb3c6CiAg
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRp
c3BhdGNoKDkpCisgICAgZGlzcGF0Y2goMTApCiAKIAogX2xsaW50X29wX2dldF9hcnJheV9sZW5n
dGg6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287617</attachid>
            <date>2016-09-01 09:01:00 -0700</date>
            <delta_ts>2016-09-03 13:47:26 -0700</delta_ts>
            <desc>WIP get_by_id PIC fixing</desc>
            <filename>wip_merge_get_by_id.patch</filename>
            <type>text/plain</type>
            <size>20833</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpp
bmRleCBhM2IwMGYzLi4wMTc0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC02Miw5ICs2Miw5IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9pc19mdW5jdGlvbiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3RoIiA6IDkgfSwKLSAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogOSAgfSwKLSAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2dldF9ieV9pZF9wcm90b19sb2FkIiwgImxlbmd0aCIgOiA5IH0sCi0gICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfdW5zZXQiLCAibGVuZ3RoIiA6IDkgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogMTAgIH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZCIsICJsZW5n
dGgiIDogMTAgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF91bnNldCIs
ICJsZW5ndGgiIDogMTAgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF93
aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dl
dF9ieV92YWxfd2l0aF90aGlzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF90cnlfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA1IH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDVjMDdlZmEuLmFhZTRjMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNzEs
NyArMzcxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiBv
dXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLAogICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsIG9wKTsKICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlk
MCkpLmRhdGEoKSk7Ci0gICAgaXQgKz0gNDsgLy8gSW5jcmVtZW50IHVwIHRvIHRoZSB2YWx1ZSBw
cm9maWxlci4KKyAgICBpdCArPSA1OyAvLyBJbmNyZW1lbnQgdXAgdG8gdGhlIHZhbHVlIHByb2Zp
bGVyLgogfQogCiBzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IGNoYXIqIG5hbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwCmluZGV4IDVmMDU3ZWUuLmNlNTE0YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTgxNCw2
ICs4MTQsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gKnN0YXRlLmlkZW50
OwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHN0YXRlLnZhbHVlUmVnczsKICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHN0YXRlLmJhc2VHUFI7CisgICAgR1BSUmVnIHRoaXNHUFIgPSBzdGF0ZS50
aGlzR1BSOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGUuc2NyYXRjaEdQUjsKIAogICAg
IEFTU0VSVChtX2NvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHlBc3N1bWluZ0lt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKTsKQEAgLTEwMjYsNyArMTAyNyw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogCiAgICAgICAgICAgICBqaXQu
c3RvcmVDZWxsKAotICAgICAgICAgICAgICAgIGJhc2VGb3JHZXRHUFIsCisgICAgICAgICAgICAg
ICAgdGhpc0dQUiwKICAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KDApLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwog
CiAgICAgICAgICAgICBpZiAobV90eXBlID09IFNldHRlcikgewpAQCAtMTU1MSw2ICsxNTUyLDcg
QEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgK
ICAgICBzdGF0ZS5pZGVudCA9ICZpZGVudDsKICAgICAKICAgICBzdGF0ZS5iYXNlR1BSID0gc3Rh
dGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKKyAgICBzdGF0ZS50aGlz
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC50aGlzR1BSKTsKICAgICBz
dGF0ZS52YWx1ZVJlZ3MgPSBzdHViSW5mby52YWx1ZVJlZ3MoKTsKIAogICAgIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CmluZGV4IGI2MDJjMDAuLjIxOTFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC00NTAsNiArNDUwLDcgQEAgc3RydWN0
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZh
aWxBbmRSZXBhdGNoOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsQW5kSWdub3Jl
OwogICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyB0aGlz
R1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVnczsKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgKaW5kZXggMDEzODQ2Ni4uMzhhY2VkNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTE3Myw2ICsxNzMs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgaW50OF90IGJhc2VHUFI7CiAgICAgICAgIGludDhfdCB2
YWx1ZUdQUjsKKyAgICAgICAgaW50OF90IHRoaXNHUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAgICAgaW50OF90IHZhbHVlVGFnR1BSOwogICAgICAgICBpbnQ4X3QgYmFzZVRhZ0dQUjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKaW5kZXggNzJkMjc4Yi4uNDQ5MjY5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTI0ODQsNiArMjQ4NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTEludENh
Y2hpbmcoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAt
MjQ5MiwxMSArMjQ5MywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZQogewogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVz
IHNob3VsZCBiZSBoYW5kbGVkIHdpdGggZ2V0X2J5X3ZhbC4iKTsKIAotICAgIGVtaXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CisvLyAgICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9pZF93
aXRoX3RoaXMpOworLy8gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisvLyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisvLyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5kZXgoKSk7CisvLyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworCisgICAgVW5saW5rZWRW
YWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChiYXNlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1Zh
bC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3Bl
cnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKE9wdGlvbnM6OnByb3RvdHlwZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nKCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CisKICAgICByZXR1cm4gZHN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MWZjZjYwLi5hMWVlZWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKQEAgLTc1OCw2ICs3NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VTc2lKSSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZywgVW5pcXVl
ZFN0cmluZ0ltcGwqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBpbnQsIFN0cnVjdHVyZVN0
dWJJbmZvKiwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9F
U3NpSkpJLCBpbnQsIFN0cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnLCBHUFJSZWcsIFVuaXF1ZWRT
dHJpbmdJbXBsKik7CiAjZWxzZQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQ
UlJlZywgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3Np
SkksIGludCwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcsIEdQUlJlZywgVW5pcXVlZFN0cmlu
Z0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKaW5kZXggMDQxNzkzOS4uMmE3ZjY3YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAg
LTY4LDYgKzY4LDI1IEBAIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAjZW5k
aWYKIH0KIAorSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVn
cyB0aGlzVmFsdWUpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlKQorICAgICwgbV9iYXNlKGJhc2UpCisgICAg
LCBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV90aGlzKHRoaXNWYWx1ZSkKK3sKKyAgICBtX3N0dWJJ
bmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVyczsKKyAgICAKKyAgICBtX3N0
dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlLnBheWxvYWRH
UFIoKSk7CisgICAgbV9zdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4
X3Q+KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgbV9zdHViSW5mby0+cGF0Y2gudGhpc0dQUiA9
IHN0YXRpY19jYXN0PGludDhfdD4odGhpc1ZhbHVlLnBheWxvYWRHUFIoKSk7CisjaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5wYXRjaC5iYXNlVGFnR1BSID0gc3RhdGljX2Nh
c3Q8aW50OF90PihiYXNlLnRhZ0dQUigpKTsKKyAgICBtX3N0dWJJbmZvLT5wYXRjaC52YWx1ZVRh
Z0dQUiA9IHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUudGFnR1BSKCkpOworI2VuZGlmCit9CisK
IHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExp
bmtCdWZmZXImIHNsb3dQYXRoKQogewogICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwpAQCAt
MTExLDYgKzEzMCwxNSBAQCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9y
KAogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHZhbHVlLnRhZ0dQUigp
KTsKIH0KIAorSklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcigKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBVbmlxdWVk
U3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgSlNWYWx1ZVJlZ3MgdGhpc1ZhbHVlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAg
OiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vz
c1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCB0aGlzVmFsdWUpCisgICAgLCBtX2lz
TGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZSA9PSBjb2RlQmxvY2stPnZtKCktPnByb3BlcnR5TmFt
ZXMtPmxlbmd0aC5pbXBsKCkpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BS
KCkgIT0gdmFsdWUudGFnR1BSKCkpOworfQorCiB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBnZW5lcmF0ZUZhc3RD
b21tb24oaml0LCBtX2lzTGVuZ3RoQWNjZXNzID8gSW5saW5lQWNjZXNzOjpzaXplRm9yTGVuZ3Ro
QWNjZXNzKCkgOiBJbmxpbmVBY2Nlc3M6OnNpemVGb3JQcm9wZXJ0eUFjY2VzcygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApp
bmRleCAwMWNlMDY4Li4xMDU2MDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC02NCw2ICs2NCwxMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiwgSlNWYWx1ZVJlZ3MgYmFzZSwKICAgICAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWUpOwogICAgIAorICAgIEpJVEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiwgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEpTVmFsdWVSZWdzIHRoaXNWYWx1ZSk7CisgICAgCiBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRT
bG93UGF0aENhbGwoTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNsb3dQYXRoQmVnaW4sIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGwpCiAgICAgewpAQCAtODYsNiArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgCiAgICAgSlNWYWx1ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1fdmFsdWU7Cisg
ICAgSlNWYWx1ZVJlZ3MgbV90aGlzOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBt
X3N0YXJ0OwogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBAIC0xMDIsNiArMTA3
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIFVuaXF1ZWRTdHJpbmdJbXBs
KiBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBBY2Nlc3NUeXBlKTsKICAgICAKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKAorICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIHRoaXNW
YWx1ZSwgQWNjZXNzVHlwZSk7CisgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCmluZGV4IDAyMWMwYTYuLjEwYjI4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCkBAIC01MDMsNiArNTAzLDEyIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUCiAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0
aFByb2ZpbGUob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9w
ZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgaW50IGRzdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
Cit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1Yklu
Zm8pLCBhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG9wZXJhdGlv
biwgZHN0KTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNh
bGxPcGVyYXRpb24oSklUOjpXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJh
dGlvbiwgaW50IGRzdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogewogICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDYzYjNkMjAuLmJjZmRiYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjQ4LDYgKzI0OCwyNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZQogICAgIH0pKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoVGhpcyhFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc0VuY29kZWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7Cisg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAorICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc0VuY29kZWQpOwor
ICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBiYXNlVmFsdWUu
Y2xhc3NJbmZvT3JOdWxsKCksIGlkZW50KSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
VmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwg
c2xvdCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewor
ICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJl
T3JOdWxsKCkpKQorICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBp
ZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6Tm9ybWFsKTsKKyAgICAgICAgcmV0
dXJuIGZvdW5kID8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0pKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0Nl
bGwqIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCBkZDlkYzU3Li44ZTk4NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTU0LDYgKzE1NCw3IEBAIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VSZW9Kc3MpKEV4ZWNT
dGF0ZSosIFJlZ0V4CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0
YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVNz
aUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlx
dWVkU3RyaW5nSW1wbCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FWikoRXhl
Y1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9O
ICpKX0pJVE9wZXJhdGlvbl9FWkljZlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIElubGluZUNhbGxG
cmFtZSosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKQEAgLTMw
NSw2ICszMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdl
dEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdAogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplV2l0aFRoaXMoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGlt
aXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkluKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdlbmVyaWNJbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAppbmRleCAzMzQzNjQyLi4zYjU0Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNjEwLDE4ICs2MTAsMjQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwogICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IHRoaXNWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUub3BlcmFuZDsKICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlVlJlZywgcmVnVDApOwogICAgIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgYmFzZVZSZWcpOwogICAgIAorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhp
c1ZSZWcsIHJlZ1QyKTsKKyAgICAKKyAgICBpZiAodGhpc1ZSZWcgIT0gYmFzZVZSZWcpCisgICAg
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMiwgdGhpc1ZSZWcpOworICAgIAog
ICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVt
aXRQcm9maWxpbmcoKSkKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2Rl
SW5kZXhXaXRoQ2VsbChyZWdUMCwgcmVnVDEsIG1fYnl0ZWNvZGVPZmZzZXQpOwogCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGlkZW50LT5pbXBsKCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXQp
OworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDIpLCBBY2Nlc3NUeXBlOjpHZXQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC02NDYsMTYgKzY1MiwxOSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogewogICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCB0aGlzVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlv
bls4XS51Lm9wZXJhbmQ7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJs
b2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKIAogICAg
IGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2VWUmVnKTsKKyAgICBpZiAodGhpc1ZS
ZWcgIT0gYmFzZVZSZWcpCisgICAgICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHRo
aXNWUmVnKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwogICAgIAogICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywg
Z2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKKyAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoVGhp
cywgcmVzdWx0VlJlZywgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMiwgaWRlbnQtPmltcGwo
KSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZDQ1OTM5Yy4uMTg2MzQ3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xMzEsMTEgKzEzMSwx
MSBAQCBzdGF0aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogI2VuZGlmCiB9CiAK
LWlubGluZSBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJ
ZEZ1bmN0aW9uKEdldEJ5SURLaW5kIGtpbmQpCitpbmxpbmUgSl9KSVRPcGVyYXRpb25fRVNzaUpK
SSBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24oR2V0QnlJREtpbmQga2luZCkK
IHsKICAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6Tm9ybWFsKQotICAgICAgICByZXR1cm4g
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlk
T3B0aW1pemU7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoVGhp
czsKKyAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFRoaXM7CiB9CiAKIGlu
bGluZSBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgYXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0
aW9uKEdldEJ5SURLaW5kIGtpbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA0Yjk5YTRhLi5iYTMwMzZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTYzOSw3ICs2MzksOSBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKICAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwotICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6R2V0KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoOCkuanNW
YWx1ZSgpOworICAgIAorICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgUHJvcGVydHlT
bG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIAogICAgIEpTVmFs
dWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDllYzU3YzguLjI4ZmMyMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCkBAIC0xMjU1LDYgKzEyNTUsMTIgQEAgbWFjcm8gc3RvcmVQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXQocHJvcGVydHlPZmZzZXRBc0ludCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUKICAg
ICBzdG9yZXEgdmFsdWUsIChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICogOFtvYmplY3RBbmRT
dG9yYWdlLCBwcm9wZXJ0eU9mZnNldEFzSW50LCA4XQogZW5kCiAKK21hY3JvIGxvYWRUaGlzT3JC
YXNlKGJhc2UsIHRoaXMpCisgICBiaW5lcSBiYXNlLCB0aGlzLCAua2VlcEJhc2VPcGVyYW5kCisg
ICBtb3ZlIGJhc2UsIHRoaXMKKy5rZWVwQmFzZU9wZXJhbmQ6CitlbmQKKwogX2xsaW50X29wX2dl
dF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQpAQCAtMTI2NiwxMiArMTI3MiwxMiBAQCBfbGxpbnRfb3BfZ2V0X2J5X2lkOgogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQxLCB0MywgdDApCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0KLSAgICB2YWx1
ZVByb2ZpbGUodDAsIDgsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgdmFsdWVQcm9maWxlKHQw
LCA5LCB0MSkKKyAgICBkaXNwYXRjaCgxMCkKIAogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbE9w
Y29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkp
CisgICAgZGlzcGF0Y2goMTApCiAKIAogX2xsaW50X29wX2dldF9ieV9pZF9wcm90b19sb2FkOgpA
QCAtMTI4NiwxMiArMTI5MiwxMiBAQCBfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CiAg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXQodDEsIHQzLCB0MCkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQotICAgIHZh
bHVlUHJvZmlsZSh0MCwgOCwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICB2YWx1ZVByb2ZpbGUo
dDAsIDksIHQxKQorICAgIGRpc3BhdGNoKDEwKQogCiAub3BHZXRCeUlkUHJvdG9TbG93OgogICAg
IGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNw
YXRjaCg5KQorICAgIGRpc3BhdGNoKDEwKQogCiAKIF9sbGludF9vcF9nZXRfYnlfaWRfdW5zZXQ6
CkBAIC0xMzAzLDEyICsxMzA5LDEyIEBAIF9sbGludF9vcF9nZXRfYnlfaWRfdW5zZXQ6CiAgICAg
YmluZXEgdDIsIHQxLCAub3BHZXRCeUlkVW5zZXRTbG93CiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQyKQogICAgIHN0b3JlcSBWYWx1ZVVuZGVmaW5lZCwgW2NmciwgdDIsIDhdCi0gICAg
dmFsdWVQcm9maWxlKFZhbHVlVW5kZWZpbmVkLCA4LCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAg
IHZhbHVlUHJvZmlsZShWYWx1ZVVuZGVmaW5lZCwgOSwgdDEpCisgICAgZGlzcGF0Y2goMTApCiAK
IC5vcEdldEJ5SWRVbnNldFNsb3c6CiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCisgICAgZGlzcGF0Y2goMTApCiAKIAog
X2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287868</attachid>
            <date>2016-09-03 13:46:11 -0700</date>
            <delta_ts>2016-09-14 23:51:09 -0700</delta_ts>
            <desc>WIP get_by_id in DFG</desc>
            <filename>wip_merge_get_by_id.patch</filename>
            <type>text/plain</type>
            <size>47863</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpp
bmRleCBhM2IwMGYzLi4wMTc0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC02Miw5ICs2Miw5IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9pc19mdW5jdGlvbiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3RoIiA6IDkgfSwKLSAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogOSAgfSwKLSAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2dldF9ieV9pZF9wcm90b19sb2FkIiwgImxlbmd0aCIgOiA5IH0sCi0gICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfdW5zZXQiLCAibGVuZ3RoIiA6IDkgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogMTAgIH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZCIsICJsZW5n
dGgiIDogMTAgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF91bnNldCIs
ICJsZW5ndGgiIDogMTAgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF93
aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dl
dF9ieV92YWxfd2l0aF90aGlzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF90cnlfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA1IH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDVjMDdlZmEuLmFhZTRjMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNzEs
NyArMzcxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiBv
dXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLAogICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsIG9wKTsKICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlk
MCkpLmRhdGEoKSk7Ci0gICAgaXQgKz0gNDsgLy8gSW5jcmVtZW50IHVwIHRvIHRoZSB2YWx1ZSBw
cm9maWxlci4KKyAgICBpdCArPSA1OyAvLyBJbmNyZW1lbnQgdXAgdG8gdGhlIHZhbHVlIHByb2Zp
bGVyLgogfQogCiBzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IGNoYXIqIG5hbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwCmluZGV4IDVmMDU3ZWUuLmNlNTE0YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTgxNCw2
ICs4MTQsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gKnN0YXRlLmlkZW50
OwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHN0YXRlLnZhbHVlUmVnczsKICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHN0YXRlLmJhc2VHUFI7CisgICAgR1BSUmVnIHRoaXNHUFIgPSBzdGF0ZS50
aGlzR1BSOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGUuc2NyYXRjaEdQUjsKIAogICAg
IEFTU0VSVChtX2NvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHlBc3N1bWluZ0lt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKTsKQEAgLTEwMjYsNyArMTAyNyw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogCiAgICAgICAgICAgICBqaXQu
c3RvcmVDZWxsKAotICAgICAgICAgICAgICAgIGJhc2VGb3JHZXRHUFIsCisgICAgICAgICAgICAg
ICAgdGhpc0dQUiwKICAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KDApLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwog
CiAgICAgICAgICAgICBpZiAobV90eXBlID09IFNldHRlcikgewpAQCAtMTU1MSw2ICsxNTUyLDcg
QEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgK
ICAgICBzdGF0ZS5pZGVudCA9ICZpZGVudDsKICAgICAKICAgICBzdGF0ZS5iYXNlR1BSID0gc3Rh
dGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKKyAgICBzdGF0ZS50aGlz
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC50aGlzR1BSKTsKICAgICBz
dGF0ZS52YWx1ZVJlZ3MgPSBzdHViSW5mby52YWx1ZVJlZ3MoKTsKIAogICAgIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CmluZGV4IGI2MDJjMDAuLjIxOTFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC00NTAsNiArNDUwLDcgQEAgc3RydWN0
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZh
aWxBbmRSZXBhdGNoOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsQW5kSWdub3Jl
OwogICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyB0aGlz
R1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVnczsKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgKaW5kZXggMDEzODQ2Ni4uMzhhY2VkNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTE3Myw2ICsxNzMs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgaW50OF90IGJhc2VHUFI7CiAgICAgICAgIGludDhfdCB2
YWx1ZUdQUjsKKyAgICAgICAgaW50OF90IHRoaXNHUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAgICAgaW50OF90IHZhbHVlVGFnR1BSOwogICAgICAgICBpbnQ4X3QgYmFzZVRhZ0dQUjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKaW5kZXggNzJkMjc4Yi4uNDQ5MjY5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTI0ODQsNiArMjQ4NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTEludENh
Y2hpbmcoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAt
MjQ5MiwxMSArMjQ5MywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZQogewogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVz
IHNob3VsZCBiZSBoYW5kbGVkIHdpdGggZ2V0X2J5X3ZhbC4iKTsKIAotICAgIGVtaXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CisvLyAgICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9pZF93
aXRoX3RoaXMpOworLy8gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisvLyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisvLyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5kZXgoKSk7CisvLyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworCisgICAgVW5saW5rZWRW
YWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChiYXNlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1Zh
bC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3Bl
cnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKE9wdGlvbnM6OnByb3RvdHlwZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nKCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CisKICAgICByZXR1cm4gZHN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDU1
NTQ5ZmYuLmY3OTVhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBz
dG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBQdXRCeUlkVmFyaWFu
dCYsIE5vZGUqIHZhbHVlKTsKIAogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKLSAgICAgICAgaW50
IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5SWRTdGF0dXMsIEFjY2Vzc1R5cGUpOworICAgICAgICBp
bnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgTm9kZSos
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5SWRTdGF0dXMsIEFjY2Vzc1R5cGUpOwog
ICAgIHZvaWQgZW1pdFB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNE
aXJlY3QpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKQEAgLTMxODcsNyArMzE4Nyw3IEBAIE5v
ZGUqIEJ5dGVDb2RlUGFyc2VyOjpzdG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVy
LCBjb25zdCBQdXRCeUlkVmFyaWFuCiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdl
dEJ5SWQoCi0gICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBpbnQgZGVz
dGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBO
b2RlKiB0aGlzT3BlcmFuZCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICBHZXRCeUlk
U3RhdHVzIGdldEJ5SWRTdGF0dXMsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICAvLyBBdHRlbXB0
IHRvIHJlZHVjZSB0aGUgc2V0IG9mIHRoaW5ncyBpbiB0aGUgR2V0QnlJZFN0YXR1cy4KQEAgLTMy
MTUsNyArMzIxNSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAg
QVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8ICFnZXRCeUlkU3RhdHVzLm1ha2VzQ2Fs
bHMoKSk7CiAgICAgaWYgKCFnZXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIWdldEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCi0gICAgICAgICAg
ICBhZGRUb0dyYXBoKGdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pLCBiYXNlKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKGdldEJ5SWQsIE9wSW5m
byhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCB0aGlzT3BlcmFu
ZCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMzIyMyw3ICszMjIzLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgaWYgKGdldEJ5SWRT
dGF0dXMubWFrZXNDYWxscygpIHx8ICFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKQogICAgICAg
ICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgewogICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAotICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBP
cEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKGdl
dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNl
LCB0aGlzT3BlcmFuZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMzIzNSw3ICszMjM1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJ
ZCgKICAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IGdldEJ5SWRT
dGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgaWYgKHZhcmlhbnQuaW50cmluc2ljKCkg
IT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRl
c3RpbmF0aW9uT3BlcmFuZCksCi0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJ
ZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmll
ck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgdGhpc09wZXJhbmQpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTMyNTAsNyArMzI1MCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICBHZXRCeU9m
ZnNldE1ldGhvZCBtZXRob2QgPSBwbGFuTG9hZCh2YXJpYW50LmNvbmRpdGlvblNldCgpKTsKICAg
ICAgICAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KGdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBi
YXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlk
ZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHRoaXNPcGVyYW5kKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0zMjc1LDcgKzMyNzUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YXJpYW50KTsKICAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CiAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKLSAgICAgICAgICAgIGFkZFRvR3Jh
cGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiks
IGJhc2UpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZp
ZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHRoaXNPcGVyYW5kKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMzMjksNyArMzMyOSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgLy8gICAgc2luY2Ugd2Ugb25seSByZWFsbHkgY2Fy
ZSBhYm91dCAndGhpcycgaW4gdGhpcyBjYXNlLiBCdXQgd2UncmUgbm90IGdvaW5nIHRvIHRha2Ug
dGhhdAogICAgIC8vICAgIHNob3J0Y3V0LgogICAgIGludCBuZXh0UmVnaXN0ZXIgPSByZWdpc3Rl
ck9mZnNldCArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwotICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJbW1lZGlhdGVOYWtlZFNldCk7Cisg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihuZXh0UmVnaXN0ZXIrKyksIHRoaXNPcGVyYW5kLCBJbW1l
ZGlhdGVOYWtlZFNldCk7CiAKICAgICAvLyBXZSd2ZSBzZXQgc29tZSBsb2NhbHMsIGJ1dCB0aGV5
IGFyZSBub3QgdXNlci12aXNpYmxlLiBJdCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJlLgog
ICAgIG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTQxMTcsNyArNDExNyw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmIChjb21waWxlZEFzR2V0QnlJZCkKLSAgICAgICAgICAgICAgICBoYW5kbGVHZXRC
eUlkKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIGlk
ZW50aWZpZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldCk7CisgICAgICAg
ICAgICAgICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBw
cmVkaWN0aW9uLCBiYXNlLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCBB
Y2Nlc3NUeXBlOjpHZXQpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5h
cnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBOb2RlKiBnZXRCeVZh
bCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKQEAgLTQyMDgsNiArNDIwOCw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB0aGlzT3BlcmFu
ZCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzhdLnUub3BlcmFuZCkp
OwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tU
b3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFw
aC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwpAQCAtNDIxOCw3ICs0MjE5LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgIEFjY2Vzc1R5cGUgdHlwZSA9IG9wX3RyeV9nZXRfYnlfaWQgPT0gb3Bjb2RlSUQgPyBBY2Nl
c3NUeXBlOjpHZXRQdXJlIDogQWNjZXNzVHlwZTo6R2V0OwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBoYW5kbGVHZXRCeUlkKAotICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5SWRT
dGF0dXMsIHR5cGUpOworICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIHRoaXNPcGVyYW5kLCBpZGVudGlmaWVyTnVtYmVyLCBn
ZXRCeUlkU3RhdHVzLCB0eXBlKTsKIAogICAgICAgICAgICAgaWYgKG9wX3RyeV9nZXRfYnlfaWQg
PT0gb3Bjb2RlSUQpCiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdHJ5X2dldF9ieV9p
ZCk7IC8vIE9wY29kZSdzIGxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBvdGhlcnMgaW4gdGhpcyBj
YXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCA4MTlkMGE5Li40YzE2ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtOTgxLDE0ICs5ODEsMTcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQoTm9kZSogbm9kZSkKICAgICBzd2l0Y2ggKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogewogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdGhpc09wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCiAgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2Uu
Z3ByKCkpOworICAgICAgICBKU1ZhbHVlUmVncyB0aGlzUmVncyA9IHRoaXNPcGVyYW5kLmpzVmFs
dWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwogCiAgICAgICAgIGJhc2UudXNlKCk7CisgICAgICAgIHRoaXNPcGVyYW5kLnVzZSgpOwogCi0g
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVz
dWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBO
ZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgdGhpc1JlZ3MsIHJlc3VsdFJlZ3MsIG5v
ZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGws
IEFjY2Vzc1R5cGU6OkdldFB1cmUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAg
ICAgICBicmVhazsKQEAgLTk5NiwxNiArOTk5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUcnlHZXRCeUlkKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHRoaXNPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAogICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgdGhpc1JlZ3MgPSB0aGlzT3BlcmFuZC5qc1ZhbHVlUmVncygpOwogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNl
LnVzZSgpOworICAgICAgICB0aGlzT3BlcmFuZC51c2UoKTsKIAogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAg
ICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3Vs
dFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCB0aGlzUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51
bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOwogCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGls
ZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAyOGRhODkwLi44YjJhNjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03
MjMsMTAgKzcyMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTW92SGludChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlTW92SGludEFuZENoZWNrKE5vZGUqKTsKIAotICAgIHZvaWQgY2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRv
U3BpbGwsIEFjY2Vzc1R5cGUgPSBBY2Nlc3NUeXBlOjpHZXQpOworICAgIHZvaWQgY2FjaGVkR2V0
QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncywg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0
ZXJzTW9kZSA9IE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0KTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCks
IFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlID0gQWNjZXNzVHlw
ZTo6R2V0KTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlID0gQWNj
ZXNzVHlwZTo6R2V0KTsKICAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVn
IGJhc2UsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsIFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklU
Q29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJl
c3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1
bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGUgPSBBY2Nl
c3NUeXBlOjpHZXQpOwpAQCAtMTQxNCw2ICsxNDE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBh
cmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBhcmcyLCBU
cnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRURBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNGQyYzYzOC4uYzY4NDRlZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC0xNTIsMTIgKzE1MiwxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVk
Z2UgZWRnZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEpTVmFsdWVSZWdzIHJlc3VsdCwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGls
bFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5
SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIGlkZW50aWZpZXJOdW1iZXIsIHNs
b3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFz
ZS5ncHIoKSwgdGhpc1JlZ3MuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllck51bWJlciwg
c2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJl
ZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBl
IHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewog
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVy
YXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0t
PnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdp
c3RlcnMoKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAg
IH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyVUlEKGlk
ZW50aWZpZXJOdW1iZXIpLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyh0aGlzR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgCiAgICAgYXV0
byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBl
ID09IEFjY2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSA6IG9wZXJhdGlv
blRyeUdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwK
KyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFjY2Vzc1R5cGU6OkdldCA/IG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZSA6IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0
R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwKICAgICAgICAgaWRlbnRpZmll
clVJRChpZGVudGlmaWVyTnVtYmVyKSwgc3BpbGxNb2RlKTsKICAgICAKICAgICBtX2ppdC5hZGRH
ZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtNDEwMCwxNCArNDEwMCwxNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQ2VsbFVzZTogewogICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwor
ICAgICAgICAgICAgR1BSUmVnIHRoaXNHUFIgPSB0aGlzT3BlcmFuZC5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGJhc2UudXNlKCk7CisgICAgICAgICAgICB0aGlzT3BlcmFuZC51c2UoKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKKyAgICAgICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzR1BS
LCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTE1LDE2ICs0MTE4LDE5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAg
ICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzT3Bl
cmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgdGhpc0dQUiA9IHRoaXNPcGVy
YW5kLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOworICAgICAgICAgICAgdGhpc09wZXJh
bmQudXNlKCk7CiAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhiYXNlR1BSKSk7CiAgICAgICAg
IAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKKyAgICAg
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlz
R1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCk7CiAgICAg
ICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxNDYsMTcgKzQx
NTIsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIENlbGxV
c2U6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc09wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OworICAgICAgICAgICAgR1BSUmVnIHRoaXNHUFIgPSB0aGlzT3BlcmFuZC5ncHIoKTsKIAogICAg
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOworICAgICAgICAgICAgdGhpc09wZXJhbmQudXNl
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6
Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxNjQsMTcgKzQxNzMs
MjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAK
ICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRo
aXNPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyB0aGlzR1BSID0gdGhpc09wZXJh
bmQuZ3ByKCk7CiAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
IAogICAgICAgICAgICAgYmFzZS51c2UoKTsKKyAgICAgICAgICAgIHRoaXNPcGVyYW5kLnVzZSgp
OwogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVS
ZWdzKGJhc2VHUFIpKTsKICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc0dQUiwgcmVzdWx0R1BSLCBub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7CiAgICAgICAgIAogICAgICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0M2FkMDEzLi5hMDA0YmQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0yNjI2LDYgKzI2
MjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gY29kZSBnZW5lcmF0ZWQgYnkgdGhlIElD
LiBXZSBzaG91bGQgaW52ZXN0aWdhdGUgbWFraW5nIHRoaXMgbGVzcyBiYWQuCiAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODMwCiAgICAg
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKQEAgLTI2MzgsNyArMjYzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdldEJ5SWQodmFsdWUsIHR5
cGUpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAotICAgICAgICAg
ICAgSl9KSVRPcGVyYXRpb25fRUpJIGdldEJ5SWRGdW5jdGlvbjsKKyAgICAgICAgICAgIEpfSklU
T3BlcmF0aW9uX0VKSkkgZ2V0QnlJZEZ1bmN0aW9uOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0g
QWNjZXNzVHlwZTo6R2V0KQogICAgICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJh
dGlvbkdldEJ5SWRHZW5lcmljOwogICAgICAgICAgICAgZWxzZQpAQCAtMjY0Nyw3ICsyNjQ4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250
aW51YXRpb24pOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1f
b3V0LmFuY2hvcih2bUNhbGwoCiAgICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihnZXRCeUlkRnVuY3Rpb24pLAotICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCB2YWx1ZSwK
KyAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgdmFsdWUsIHRoaXNWYWx1ZSwKICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCldKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCkBAIC04MDAwLDcgKzgwMDEsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcHRpbWl6
YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VT
c2lKSkkgb3B0aW1pemF0aW9uRnVuY3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCkBAIC04MDExLDcgKzgwMTIsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rp
b24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdw
cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1sxXS5n
cHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIodWlkKSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5s
aW5rVG8oZG9uZSwgJmppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDUxZmNmNjAu
LmEwMTBkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNzU4LDYgKzc1OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBpbnQsIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlv
bl9FU3NpSkksIGludCwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJ
bXBsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRVNzaUpKSSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZywgR1BSUmVn
LCBVbmlxdWVkU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkpJLCBpbnQsIFN0
cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAj
ZWxzZQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VTc2lKSSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZywgR1BSUmVnLCBV
bmlxdWVkU3RyaW5nSW1wbCopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0
dXJlU3R1YkluZm8qLCBHUFJSZWcsIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKaW5kZXggMDQxNzkzOS4uMmE3ZjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTY4LDYgKzY4LDI1IEBA
IEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAjZW5kaWYKIH0KIAorSklUQnlJ
ZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyB0aGlzVmFsdWUpCisg
ICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBhY2Nlc3NUeXBlKQorICAgICwgbV9iYXNlKGJhc2UpCisgICAgLCBtX3ZhbHVlKHZhbHVl
KQorICAgICwgbV90aGlzKHRoaXNWYWx1ZSkKK3sKKyAgICBtX3N0dWJJbmZvLT5wYXRjaC51c2Vk
UmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVyczsKKyAgICAKKyAgICBtX3N0dWJJbmZvLT5wYXRjaC5i
YXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlLnBheWxvYWRHUFIoKSk7CisgICAgbV9z
dHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlLnBheWxv
YWRHUFIoKSk7CisgICAgbV9zdHViSW5mby0+cGF0Y2gudGhpc0dQUiA9IHN0YXRpY19jYXN0PGlu
dDhfdD4odGhpc1ZhbHVlLnBheWxvYWRHUFIoKSk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICBtX3N0dWJJbmZvLT5wYXRjaC5iYXNlVGFnR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNl
LnRhZ0dQUigpKTsKKyAgICBtX3N0dWJJbmZvLT5wYXRjaC52YWx1ZVRhZ0dQUiA9IHN0YXRpY19j
YXN0PGludDhfdD4odmFsdWUudGFnR1BSKCkpOworI2VuZGlmCit9CisKIHZvaWQgSklUQnlJZEdl
bmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQogewogICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwpAQCAtMTExLDYgKzEzMCwxNSBA
QCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKAogICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHZhbHVlLnRhZ0dQUigpKTsKIH0KIAorSklUR2V0
QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcigKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogcHJv
cGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJl
Z3MgdGhpc1ZhbHVlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgOiBKSVRCeUlkR2VuZXJh
dG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdp
c3RlcnMsIGJhc2UsIHZhbHVlLCB0aGlzVmFsdWUpCisgICAgLCBtX2lzTGVuZ3RoQWNjZXNzKHBy
b3BlcnR5TmFtZSA9PSBjb2RlQmxvY2stPnZtKCktPnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBs
KCkpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFn
R1BSKCkpOworfQorCiB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBnZW5lcmF0ZUZhc3RDb21tb24oaml0LCBtX2lz
TGVuZ3RoQWNjZXNzID8gSW5saW5lQWNjZXNzOjpzaXplRm9yTGVuZ3RoQWNjZXNzKCkgOiBJbmxp
bmVBY2Nlc3M6OnNpemVGb3JQcm9wZXJ0eUFjY2VzcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCAwMWNlMDY4Li4x
MDU2MDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oCkBAIC02NCw2ICs2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiwgSlNWYWx1ZVJlZ3MgYmFzZSwKICAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUp
OwogICAgIAorICAgIEpJVEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiwgSlNW
YWx1ZVJlZ3MgYmFzZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIHRo
aXNWYWx1ZSk7CisgICAgCiBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRTbG93UGF0aENhbGwoTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIHNsb3dQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwpCiAgICAgewpAQCAtODYsNiArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgSlNWYWx1
ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1fdmFsdWU7CisgICAgSlNWYWx1ZVJlZ3Mg
bV90aGlzOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBAIC0xMDIsNiArMTA3LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUs
CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBl
KTsKICAgICAKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBD
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIHRoaXNWYWx1ZSwgQWNjZXNzVHlw
ZSk7CisgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDAyMWMw
YTYuLjFlZDNkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC01
MDMsNiArNTAzLDE4IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpj
YWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUCiAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUob3BlcmF0
aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgaW50IGRzdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkp
OworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3Vs
dChvcGVyYXRpb24sIGRzdCk7Cit9CisKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9u
X0VTc2lKSkkgb3BlcmF0aW9uLCBpbnQgZHN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFy
ZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUob3BlcmF0aW9uLCBkc3Qp
OworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJh
dGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBp
bnQgZHN0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKaW5kZXggNjNiM2QyMC4uOTdjYzZmNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJ
ZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CkBAIC0xNzAsNyArMTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UcnlHZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkkK
IH0KIAogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRH
ZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0
QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVk
SlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTE4
Myw3ICsxODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdl
dEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJlUmVz
dWx0KCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNF
bmNvZGVkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKQEAgLTIwOSwxNCArMjA5LDE1IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWJJbmZvCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7
CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0g
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6R2V0KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzRW5jb2RlZCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICAKICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9w
ZXJhdGlvbkdldEJ5SWQsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2Vu
ZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRH
ZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc0VuY29kZWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIApAQCAtMjI0LDEzICsyMjUs
MTQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1YKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNFbmNvZGVkKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
VmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIExPR19JQygo
SUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51
bGwoKSwgaWRlbnQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQo
ZXhlYywgaWRlbnQsIHNsb3QpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc0VuY29kZWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIApAQCAtMjM5LDkgKzI0MSwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZQogICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCiAgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc0VuY29kZWQpOwogICAgIExPR19JQygoSUNFdmVu
dDo6T3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCks
IGlkZW50KSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXRQcm9w
ZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90
KSAtPiBKU1ZhbHVlIHsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCwgWyZdIChib29s
IGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQorICAg
ICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0
dWJJbmZvLCBHZXRCeUlES2luZDo6Tm9ybWFsKTsKKyAgICAgICAgcmV0dXJuIGZvdW5kID8gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpOworICAgIH0pKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRo
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2Rl
ZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc0VuY29kZWQsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOworICAgIAorICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCB1aWQpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoYmFzZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc0VuY29kZWQpOworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCksIGlkZW50KSk7CisKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xv
dChleGVjLCBpZGVudCwgc2xvdCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
IC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNl
VmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQogICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6Tm9ybWFs
KTsKICAgICAgICAgcmV0dXJuIGZvdW5kID8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBq
c1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCBkZDlkYzU3Li4wMjFjMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtMTU0LDYgKzE1NCw3IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VSZW9Kc3MpKEV4ZWNTdGF0ZSosIFJlZ0V4CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FU1Mp
KEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
OwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJf
dCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FWkljZlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIElubGluZUNhbGxGcmFtZSosIGludDMyX3Qp
OwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKQEAgLTI5OSwxMiArMzAwLDEzIEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd091dE9mQm91bmRzQWNjZXNzRXJyb3Io
RXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMCiAjZW5kaWYKIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhFeGVjU3RhdGUqKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdl
dEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRyeUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVX
aXRoVGhpcyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDMzNDM2
NDIuLjU0YWFmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6
OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1Y3QK
ICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICBnZW4uc2xvd1BhdGhKdW1w
KCkubGluayh0aGlzKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oV2l0aFByb2Zp
bGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZHN0LCBnZW4uc3R1YkluZm8oKSwgcmVnVDAs
IHByb3BlcnR5TmFtZS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oV2l0
aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZHN0LCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIHNsb3dEb25lQ2FzZSA9IGp1bXAoKTsK
IApAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lk
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93CiAKICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKICAgICAKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQpAQCAtNjEwLDE4ICs2MTAsMzAgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwogICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IHRoaXNWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUub3BlcmFuZDsKICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgIEdQUlJlZyB0aGlzUmVnOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgcmVnVDApOwogICAgIAogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOworCisgICAgaWYgKGJhc2VW
UmVnID09IHRoaXNWUmVnKQorICAgICAgICB0aGlzUmVnID0gcmVnVDA7CisgICAgZWxzZSB7Cisg
ICAgICAgIHRoaXNSZWcgPSByZWdUMjsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0
aGlzVlJlZywgcmVnVDIpOworICAgIH0KKyAgICAKKyAgICBpZiAodGhpc1ZSZWcgIT0gYmFzZVZS
ZWcpCisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMiwgdGhpc1ZSZWcp
OwogICAgIAogICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYm
IHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZv
ckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChyZWdUMCwgcmVnVDEsIG1fYnl0ZWNvZGVPZmZzZXQpOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGlkZW50
LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NU
eXBlOjpHZXQpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3ModGhpc1JlZyksIEFjY2Vzc1R5cGU6OkdldCk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTY0NiwxNiAr
NjU4LDI1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiB7CiAgICAgaW50IHJlc3VsdFZSZWcg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCBiYXNlVlJlZyA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHRoaXNWUmVnID0gY3VycmVu
dEluc3RydWN0aW9uWzhdLnUub3BlcmFuZDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCkpOwogCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZVZSZWcpOworICAg
IGlmICh0aGlzVlJlZyAhPSBiYXNlVlJlZykKKyAgICAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0Nl
bGwoaXRlciwgdGhpc1ZSZWcpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAg
CisgICAgR1BSUmVnIHRoaXNSZWc7CisgICAgaWYgKGJhc2VWUmVnID09IHRoaXNWUmVnKQorICAg
ICAgICB0aGlzUmVnID0gcmVnVDA7CisgICAgZWxzZQorICAgICAgICB0aGlzUmVnID0gcmVnVDI7
CisKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICAKLSAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IHJlc3VsdFZSZWcsIGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZSwgb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplLCByZXN1bHRWUmVnLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHRoaXNSZWcsIGlkZW50
LT5pbXBsKCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGQ0NTkzOWMu
LmI5NTcyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTMxLDE0
ICsxMzEsMTQgQEAgc3RhdGljIGJvb2wgZm9yY2VJQ0ZhaWx1cmUoRXhlY1N0YXRlKikKICNlbmRp
ZgogfQogCi1pbmxpbmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemlu
Z0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQoraW5saW5lIEpfSklUT3BlcmF0aW9u
X0VTc2lKSkkgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKEdldEJ5SURLaW5k
IGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6Ok5vcm1hbCkKICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5
R2V0QnlJZE9wdGltaXplOwogfQogCi1pbmxpbmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFwcHJv
cHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQoraW5saW5lIEpf
SklUT3BlcmF0aW9uX0VTc2lKSkkgYXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKEdl
dEJ5SURLaW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6Ok5vcm1hbCkK
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA0Yjk5YTRhLi5iYTMwMzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTYz
OSw3ICs2MzksOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5k
KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwotICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5U
X09QX0MoOCkuanNWYWx1ZSgpOworICAgIAorICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1
ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
IAogICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7
CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDllYzU3YzguLjI4
ZmMyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0xMjU1LDYgKzEyNTUsMTIgQEAgbWFjcm8gc3RvcmVQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXRBc0ludCwgb2JqZWN0QW5kU3RvcmFn
ZSwgdmFsdWUKICAgICBzdG9yZXEgdmFsdWUsIChmaXJzdE91dE9mTGluZU9mZnNldCAtIDIpICog
OFtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldEFzSW50LCA4XQogZW5kCiAKK21hY3Jv
IGxvYWRUaGlzT3JCYXNlKGJhc2UsIHRoaXMpCisgICBiaW5lcSBiYXNlLCB0aGlzLCAua2VlcEJh
c2VPcGVyYW5kCisgICBtb3ZlIGJhc2UsIHRoaXMKKy5rZWVwQmFzZU9wZXJhbmQ6CitlbmQKKwog
X2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDIsIHQwKQpAQCAtMTI2NiwxMiArMTI3MiwxMiBAQCBfbGxpbnRfb3BfZ2V0
X2J5X2lkOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0Miwg
OF0KLSAgICB2YWx1ZVByb2ZpbGUodDAsIDgsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgdmFs
dWVQcm9maWxlKHQwLCA5LCB0MSkKKyAgICBkaXNwYXRjaCgxMCkKIAogLm9wR2V0QnlJZFNsb3c6
CiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAg
IGRpc3BhdGNoKDkpCisgICAgZGlzcGF0Y2goMTApCiAKIAogX2xsaW50X29wX2dldF9ieV9pZF9w
cm90b19sb2FkOgpAQCAtMTI4NiwxMiArMTI5MiwxMiBAQCBfbGxpbnRfb3BfZ2V0X2J5X2lkX3By
b3RvX2xvYWQ6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQy
LCA4XQotICAgIHZhbHVlUHJvZmlsZSh0MCwgOCwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICB2
YWx1ZVByb2ZpbGUodDAsIDksIHQxKQorICAgIGRpc3BhdGNoKDEwKQogCiAub3BHZXRCeUlkUHJv
dG9TbG93OgogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9p
ZCkKLSAgICBkaXNwYXRjaCg5KQorICAgIGRpc3BhdGNoKDEwKQogCiAKIF9sbGludF9vcF9nZXRf
YnlfaWRfdW5zZXQ6CkBAIC0xMzAzLDEyICsxMzA5LDEyIEBAIF9sbGludF9vcF9nZXRfYnlfaWRf
dW5zZXQ6CiAgICAgYmluZXEgdDIsIHQxLCAub3BHZXRCeUlkVW5zZXRTbG93CiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIHN0b3JlcSBWYWx1ZVVuZGVmaW5lZCwgW2Nmciwg
dDIsIDhdCi0gICAgdmFsdWVQcm9maWxlKFZhbHVlVW5kZWZpbmVkLCA4LCB0MSkKLSAgICBkaXNw
YXRjaCg5KQorICAgIHZhbHVlUHJvZmlsZShWYWx1ZVVuZGVmaW5lZCwgOSwgdDEpCisgICAgZGlz
cGF0Y2goMTApCiAKIC5vcEdldEJ5SWRVbnNldFNsb3c6CiAgICAgY2FsbE9wY29kZVNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCisgICAgZGlzcGF0
Y2goMTApCiAKIAogX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288932</attachid>
            <date>2016-09-14 23:51:09 -0700</date>
            <delta_ts>2016-09-14 23:51:09 -0700</delta_ts>
            <desc>WIP 64bits support in all layers</desc>
            <filename>merge-get-by-id-with-this-64.diff</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64"></data>

          </attachment>
      

    </bug>

</bugzilla>