<?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>138253</bug_id>
          
          <creation_ts>2014-10-31 11:05:48 -0700</creation_ts>
          <short_desc>Add scope operand to op_resolve_scope</short_desc>
          <delta_ts>2014-11-03 09:56:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>136724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1045308</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-10-31 11:05:48 -0700</bug_when>
    <thetext>This is part of the effort to remove the scope chain from the call frame header (https://bugs.webkit.org/show_bug.cgi?id=136724).

This bug is to add a source scope register index to the op_resolve_scope byte code.  The new operand will be filled in but not used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045323</commentid>
    <comment_count>1</comment_count>
      <attachid>240747</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-10-31 11:32:07 -0700</bug_when>
    <thetext>Created attachment 240747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045332</commentid>
    <comment_count>2</comment_count>
      <attachid>240747</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-10-31 11:43:38 -0700</bug_when>
    <thetext>Comment on attachment 240747
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1945
&gt; +            RegisterID scopeRegister(JSStack::ScopeChain);

Let&apos;s make the scope register a data member of the BytecodeGenerator, and not a local.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:171
&gt; +    RegisterID scopeRegister(JSStack::ScopeChain);

Ditto in many places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045446</commentid>
    <comment_count>3</comment_count>
      <attachid>240770</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-10-31 17:21:54 -0700</bug_when>
    <thetext>Created attachment 240770
Patch with suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045514</commentid>
    <comment_count>4</comment_count>
      <attachid>240770</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-01 09:22:57 -0700</bug_when>
    <thetext>Comment on attachment 240770
Patch with suggested changes

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

Since BytecodeGenerator::emitGetOwnScope() and BytecodeGenerator::emitResolveScope() are always called with BytecodeGenerator::scopeRegister(), it’s better to to have them just always fetch the scopeRegister() themselves rather than forcing the client to get it.  This reduces the verbosity as well as the eliminates the possible error of passing in a register other than the scopeRegister.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        with the ScopeChain register this operand, is not used in the processing of the bytecode.

typo: the comma belongs after “register”, not after “operand”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045573</commentid>
    <comment_count>5</comment_count>
      <attachid>240804</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-11-01 21:05:50 -0700</bug_when>
    <thetext>Created attachment 240804
Update patch with changes suggested in comment 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045757</commentid>
    <comment_count>6</comment_count>
      <attachid>240804</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-03 09:32:07 -0800</bug_when>
    <thetext>Comment on attachment 240804
Update patch with changes suggested in comment 4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045760</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-11-03 09:56:21 -0800</bug_when>
    <thetext>Committed r175471: &lt;http://trac.webkit.org/changeset/175471&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240747</attachid>
            <date>2014-10-31 11:32:07 -0700</date>
            <delta_ts>2014-10-31 17:21:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>138253.patch</filename>
            <type>text/plain</type>
            <size>31778</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1NDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE0LTEwLTMxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzY29wZSBvcGVyYW5kIHRvIG9wX3Jlc29sdmVfc2NvcGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODI1MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHNjb3BlIG9wZXJhbmQgdG8g
b3BfcmVzb2x2ZV9zY29wZS4gIEFsdGhvdWdoIHRoZSBzY29wZSByZWdpc3RlciBpcyBmaWxsZWQg
aW4KKyAgICAgICAgd2l0aCB0aGUgU2NvcGVDaGFpbiByZWdpc3RlciB0aGlzIG9wZXJhbmQsIGlz
IG5vdCB1c2VkIGluIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBieXRlY29kZS4KKyAgICAgICAgVGhh
dCB3aWxsIGJlIGFkZHJlc3NlZCBpbiBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uOiBMZW5ndGhlbmVkIHRoZSB0aHJlZSBieXRlY29kZXMuCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUpOiBBZGRlZCBjb2RlIHRvIGR1bXAgdGhlIHNjb3BlIG9wZXJhbmQuCisK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOiAKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIFVwZGF0ZWQgdGhlIG9w
ZXJhbmQgaW5kZWNpZXMgZm9yIHRoZSBwcm9jZXNzaW5nIG9mIG9wX3Jlc29sdmVfc2NvcGUuCisK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVTY29wZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0T3duU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIEFkZGVkIHNjb3BlIHJlZ2lzdGVyIHRvIHRoZXNlIGVt
aXQgZnVuY3Rpb25zIGFuZCB0aGUgYnl0ZWNvZGVzIHRoZXkgZW1pdC4KKworICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAg
ICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
VHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByZWZpeE5v
ZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbGUpOgorICAg
ICAgICAoSlNDOjpFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUpOgor
ICAgICAgICBDcmVhdGVkIGEgUmVnaXN0ZXJJRCBmb3IgdGhlIFNjb3BlQ2hhaW4gcmVnaXN0ZXIg
YW5kIHVzZWQgaXQgdG8gZW1pdCB0aGUgdXBkYXRlZAorICAgICAgICBieXRlY29kZXMuCisKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNv
bHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3Bl
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICBVcGRhdGVkIHRoZSBvcGVyYW5kIGlu
ZGVjaWVzIGZvciB0aGUgcHJvY2Vzc2luZyBvZiBvcF9yZXNvbHZlX3Njb3BlLgorCiAyMDE0LTEw
LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgY291
cGxlIG9mIHdhcm5pbmdzIGluIEpTQyByZXBvcnRlZCBieSBjbGFuZyBzdGF0aWMgYW5hbHl6ZXIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24JKHJldmlzaW9uIDE3NTQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb25zdHJ1Y3RfdmFyYXJncyIsICJsZW5ndGgiIDog
OSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3RyY2F0IiwgImxlbmd0aCIgOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19wcmltaXRpdmUiLCAibGVuZ3RoIiA6IDMg
fSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3RoIiA6
IDYgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3Ro
IiA6IDcgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9mcm9tX3Njb3BlIiwgImxl
bmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGUiLCAi
bGVuZ3RoIiA6IDcgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29w
ZSIsICJsZW5ndGgiIDogMiB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3NTQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgzLDExICsx
NDgzLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBzY29wZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgUmVz
b2x2ZU1vZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKCgrK2l0KS0+
dS5vcGVyYW5kKTsKICAgICAgICAgICAgIGludCBkZXB0aCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
cmVzb2x2ZV9zY29wZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAldTwlc3wl
cz4sICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIo
aWQwKSkuZGF0YSgpLAorICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXU8JXN8
JXM+LCAlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoc2NvcGUpLmRh
dGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksCiAgICAgICAgICAgICAg
ICAgbW9kZUFuZFR5cGUub3BlcmFuZCgpLCByZXNvbHZlTW9kZU5hbWUobW9kZUFuZFR5cGUubW9k
ZSgpKSwgcmVzb2x2ZVR5cGVOYW1lKG1vZGVBbmRUeXBlLnR5cGUoKSksCiAgICAgICAgICAgICAg
ICAgZGVwdGgpOwogICAgICAgICAgICAgKytpdDsKQEAgLTE5MjQsMTggKzE5MjUsMTggQEAgQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7Ci0gICAgICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCA9IGlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIFJlc29s
dmVUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4ocGNbM10udS5vcGVyYW5kKTsK
KyAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFJl
c29sdmVUeXBlPihwY1s0XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gTG9j
YWxDbG9zdXJlVmFyKSB7Ci0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAzXS51Lm9w
ZXJhbmQgPSBDbG9zdXJlVmFyOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0u
dS5vcGVyYW5kID0gQ2xvc3VyZVZhcjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNv
bHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG5lZWRzQWN0aXZhdGlvbigpLCBzY29w
ZSwgaWRlbnQsIEdldCwgdHlwZSk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDNdLnUu
b3BlcmFuZCA9IG9wLnR5cGU7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3Bl
cmFuZCA9IG9wLmRlcHRoOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJh
bmQgPSBvcC50eXBlOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51Lm9wZXJhbmQg
PSBvcC5kZXB0aDsKICAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpCi0gICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LmxleGljYWxFbnZpcm9ubWVudC5zZXQo
KnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUubGV4aWNhbEVudmlyb25tZW50LnNldCgqdm0o
KSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjU0MSw3ICsyNTQyLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzJdLnUuanNDZWxsLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKLSAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJC
YXNlPEpTTGV4aWNhbEVudmlyb25tZW50PiYgbGV4aWNhbEVudmlyb25tZW50ID0gY3VySW5zdHJ1
Y3Rpb25bNV0udS5sZXhpY2FsRW52aXJvbm1lbnQ7CisgICAgICAgICAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxKU0xleGljYWxFbnZpcm9ubWVudD4mIGxleGljYWxFbnZpcm9ubWVudCA9IGN1cklu
c3RydWN0aW9uWzZdLnUubGV4aWNhbEVudmlyb25tZW50OwogICAgICAgICAgICAgICAgIGlmICgh
bGV4aWNhbEVudmlyb25tZW50IHx8IEhlYXA6OmlzTWFya2VkKGxleGljYWxFbnZpcm9ubWVudC5n
ZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTc1
NDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODQsNyArMTI4NCw3IEBAIFJlc29sdmVUeXBl
IEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlVHkKICAgICByZXR1cm4gR2xvYmFsUHJvcGVydHk7
CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVNjb3BlKFJl
Z2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVzb2x2ZVNjb3Bl
SW5mbyYgaW5mbykKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVNj
b3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIsIFJlc29sdmVTY29wZUluZm8mIGluZm8pCiB7CiAgICAgbV9jb2RlQmxvY2st
PmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIApA
QCAtMTI5Myw2ICsxMjkzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXNvbAogICAgICAgICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX3Jlc29sdmVfc2NvcGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGtpbGwoZHN0KSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmlu
ZGV4KCkpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlk
ZW50aWZpZXIpKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChMb2NhbENsb3N1
cmVWYXIpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwpAQCAtMTMwNyw2
ICsxMzA4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAg
IC8vIHJlc29sdmVfc2NvcGUgZHN0LCBpZCwgUmVzb2x2ZVR5cGUsIGRlcHRoCiAgICAgZW1pdE9w
Y29kZShvcF9yZXNvbHZlX3Njb3BlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChk
c3QpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVUeXBlKCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKQEAgLTEzMTUsMTAgKzEzMTcsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZXNvbAogfQogCiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0T3duU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBPd25TY29wZUxvb2t1cFJ1bGVzKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRPd25TY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBPd25TY29wZUxvb2t1cFJ1bGVzKQogewogICAgIGVtaXRP
cGNvZGUob3BfcmVzb2x2ZV9zY29wZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwo
ZHN0KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChMb2NhbENsb3N1cmVWYXIpOwogICAgIC8vIFRoaXMgc2hvdWxkIGJl
IG1fbG9jYWxTY29wZURlcHRoIGlmIHdlIGFyZW4ndCBkb2luZwpAQCAtMTkzOSw3ICsxOTQyLDgg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cgogICAgICAgICBpbnQg
YXJndW1lbnRzSW5kZXggPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIobV9jb2RlQmxvY2st
PmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpOwogICAgICAgICBpZiAobV9sZXhpY2FsRW52
aXJvbm1lbnRSZWdpc3RlciAmJiBtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSkgewogICAgICAg
ICAgICAgc2NyYXRjaFJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBlbWl0
R2V0T3duU2NvcGUoc2NyYXRjaFJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1l
bnRzLCBPd25TY29wZUZvclJldHVybik7CisgICAgICAgICAgICBSZWdpc3RlcklEIHNjb3BlUmVn
aXN0ZXIoSlNTdGFjazo6U2NvcGVDaGFpbik7CisgICAgICAgICAgICBlbWl0R2V0T3duU2NvcGUo
c2NyYXRjaFJlZ2lzdGVyLmdldCgpLCAmc2NvcGVSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmFy
Z3VtZW50cywgT3duU2NvcGVGb3JSZXR1cm4pOwogICAgICAgICAgICAgUmVzb2x2ZVNjb3BlSW5m
byBzY29wZUluZm8odW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG1fY29kZUJsb2NrLT5hcmd1
bWVudHNSZWdpc3RlcigpKS5vZmZzZXQoKSk7CiAgICAgICAgICAgICBlbWl0R2V0RnJvbVNjb3Bl
KHNjcmF0Y2hSZWdpc3Rlci5nZXQoKSwgc2NyYXRjaFJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5h
bWVzKCkuYXJndW1lbnRzLCBUaHJvd0lmTm90Rm91bmQsIHNjb3BlSW5mbyk7CiAgICAgICAgICAg
ICBhcmd1bWVudHNJbmRleCA9IHNjcmF0Y2hSZWdpc3Rlci0+aW5kZXgoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgJKHJldmlzaW9uIDE3NTQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDk5LDcgKzQ5OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlKCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRMb2NhbChSZWdpc3RlcklE
KiBkc3QsIGNvbnN0IElkZW50aWZpZXImLCBSZXNvbHZlU2NvcGVJbmZvJik7Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlm
aWVyJiwgUmVzb2x2ZVNjb3BlSW5mbyYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2
ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IElkZW50aWZp
ZXImLCBSZXNvbHZlU2NvcGVJbmZvJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGcm9t
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSWRlbnRpZmll
ciYsIFJlc29sdmVNb2RlLCBjb25zdCBSZXNvbHZlU2NvcGVJbmZvJik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVy
JiwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlc29sdmVNb2RlLCBjb25zdCBSZXNvbHZlU2NvcGVJbmZv
Jik7CiAKQEAgLTY2Niw3ICs2NjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gd2l0
aCB0aGUgbm92ZWwgc3RhdGUgb2YgaGF2aW5nIHBvcHBlZCBvZmYgYWxsIHRoZSBsb2NhbCBzY29w
ZQogICAgICAgICAvLyBub2RlcywgYnV0IG5vdCBhY3R1YWxseSBtb2RpZnkgYW55IGludGVybmFs
IHN0YWNrIGRlcHRoIHRyYWNraW5nLgogICAgICAgICBlbnVtIE93blNjb3BlTG9va3VwUnVsZXMg
eyBPd25TY29wZUZvclJldHVybiB9OwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0T3duU2Nv
cGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJiwgT3duU2NvcGVMb29rdXBSdWxl
cyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRPd25TY29wZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiwgT3duU2NvcGVMb29rdXBSdWxl
cyk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChj
b25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzU0MTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2OCw4ICsxNjgsOSBAQCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5CiAgICAgCiAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QgPSBtX3N0YXJ0ICsgbV9p
ZGVudC5sZW5ndGgoKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90LCBt
X3N0YXJ0LCBkaXZvdCk7CisgICAgUmVnaXN0ZXJJRCBzY29wZVJlZ2lzdGVyKEpTU3RhY2s6OlNj
b3BlQ2hhaW4pOwogICAgIFJlc29sdmVTY29wZUluZm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIG1faWRlbnQsIHJlc29sdmVTY29wZUluZm8pOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3Bl
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgJnNjb3BlUmVnaXN0ZXIsIG1faWRlbnQs
IHJlc29sdmVTY29wZUluZm8pOwogICAgIFJlZ2lzdGVySUQqIGZpbmFsRGVzdCA9IGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUoZmluYWxEZXN0LCBzY29wZS5nZXQoKSwgbV9pZGVudCwgVGhy
b3dJZk5vdEZvdW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKICAgICBpZiAoZ2VuZXJhdG9yLnZtKCkt
PnR5cGVQcm9maWxlcigpKSB7CkBAIC00OTAsOCArNDkxLDkgQEAgUmVnaXN0ZXJJRCogRXZhbEZ1
bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeQogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0
YXJ0KCkgKyA0OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRp
dm90U3RhcnQoKSwgbmV3RGl2b3QpOworICAgIFJlZ2lzdGVySUQgc2NvcGVSZWdpc3RlcihKU1N0
YWNrOjpTY29wZUNoYWluKTsKICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87
Ci0gICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsLCByZXNvbHZlU2NvcGVJbmZvKTsK
KyAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCAmc2NvcGVSZWdpc3RlciwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsLCByZXNv
bHZlU2NvcGVJbmZvKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShmdW5jLmdldCgp
LCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmV2YWwsIFRocm93SWZOb3RGb3VuZCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0Q2FsbEV2YWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5j
LmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKIH0KQEAgLTUzOSw4ICs1NDEsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlv
bkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAKICAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRp
dm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7CisgICAgUmVnaXN0ZXJJ
RCBzY29wZVJlZ2lzdGVyKEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwogICAgIFJlc29sdmVTY29wZUlu
Zm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50LCByZXNvbHZlU2NvcGVJbmZvKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCAmc2NvcGVSZWdpc3RlciwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgbV9pZGVudCwgVGhyb3dJZk5vdEZvdW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKICAgICBS
ZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1
bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmls
ZXIoKSkgewpAQCAtODIxLDggKzgyNCw5IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0
UmVzb2x2ZShCeXQKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCBzY29wZVJl
Z2lzdGVyKEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwogICAgIFJlc29sdmVTY29wZUluZm8gcmVzb2x2
ZVNjb3BlSW5mbzsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGlkZW50LCByZXNvbHZlU2Nv
cGVJbmZvKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZzY29wZVJlZ2lzdGVyLCBpZGVu
dCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5n
ZXQoKSwgaWRlbnQsIFRocm93SWZOb3RGb3VuZCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsK
ICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIGlkZW50LCB2YWx1ZS5n
ZXQoKSwgVGhyb3dJZk5vdEZvdW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKQEAgLTkwNyw4ICs5MTEs
OSBAQCBSZWdpc3RlcklEKiBEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
ZmFsc2UpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQgc2NvcGVSZWdpc3RlcihKU1N0
YWNrOjpTY29wZUNoYWluKTsKICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIG1faWRlbnQsIHJlc29sdmVTY29wZUlu
Zm8pOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCAmc2NvcGVSZWdpc3RlciwgbV9p
ZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGVsZXRl
QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGJhc2UuZ2V0KCkpLCBiYXNlLmdl
dCgpLCBtX2lkZW50KTsKIH0KIApAQCAtOTY1LDggKzk3MCw5IEBAIFJlZ2lzdGVySUQqIFR5cGVP
ZlJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VHlw
ZU9mKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsLmdldCgpKTsKICAgICB9
CiAKKyAgICBSZWdpc3RlcklEIHNjb3BlUmVnaXN0ZXIoSlNTdGFjazo6U2NvcGVDaGFpbik7CiAg
ICAgUmVzb2x2ZVNjb3BlSW5mbyByZXNvbHZlU2NvcGVJbmZvOwotICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCAmc2NvcGVSZWdpc3RlciwgbV9pZGVudCwgcmVzb2x2ZVNjb3Bl
SW5mbyk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgbV9pZGVudCwg
RG9Ob3RUaHJvd0lmTm90Rm91bmQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIGlmIChkc3QgPT0g
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDEyLDgg
KzEwMTgsOSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlCiAgICAg
fQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQgc2NvcGVSZWdpc3RlcihKU1N0YWNrOjpT
Y29wZUNoYWluKTsKICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87Ci0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBpZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCAmc2NvcGVSZWdpc3RlciwgaWRlbnQsIHJl
c29sdmVTY29wZUluZm8pOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCks
IGlkZW50LCBUaHJvd0lmTm90Rm91bmQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIGVtaXRJbmNP
ckRlYyhnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5v
dEZvdW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKQEAgLTE1MzAsOCArMTUzNyw5IEBAIFJlZ2lzdGVy
SUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICB9CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKKyAg
ICBSZWdpc3RlcklEIHNjb3BlUmVnaXN0ZXIoSlNTdGFjazo6U2NvcGVDaGFpbik7CiAgICAgUmVz
b2x2ZVNjb3BlSW5mbyByZXNvbHZlU2NvcGVJbmZvOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCAmc2NvcGVSZWdpc3RlciwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgbV9pZGVudCwgVGhyb3dJZk5vdEZvdW5kLCBy
ZXNvbHZlU2NvcGVJbmZvKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1pdFJl
YWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVy
YW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3Jp
cHRvcigpKSwgdGhpcyk7CiAgICAgUmVnaXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gZ2VuZXJhdG9y
LmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCBtX2lkZW50LCByZXN1bHQuZ2V0KCksIFRocm93
SWZOb3RGb3VuZCwgcmVzb2x2ZVNjb3BlSW5mbyk7CkBAIC0xNTY3LDggKzE1NzUsOSBAQCBSZWdp
c3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAKICAgICBpZiAoZ2VuZXJhdG9y
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCBzY29wZVJl
Z2lzdGVyKEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwogICAgIFJlc29sdmVTY29wZUluZm8gcmVzb2x2
ZVNjb3BlSW5mbzsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQsIHJlc29sdmVT
Y29wZUluZm8pOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJnNjb3BlUmVnaXN0ZXIsIG1f
aWRlbnQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkKICAgICAgICAgZHN0ID0gMDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9yaWdodCk7CkBAIC0xNzA4LDggKzE3MTcs
OSBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsCiAgICAgfQogCiAg
ICAgLy8gRklYTUU6IFRoaXMgd2lsbCByZXN1bHQgaW4gaW5jb3JyZWN0IGFzc2lnbm1lbnQgaWYg
bV9pZGVudCBleGlzdHMgaW4gYW4gaW50ZXJ2ZW5pbmcgd2l0aCBzY29wZS4KKyAgICBSZWdpc3Rl
cklEIHNjb3BlUmVnaXN0ZXIoSlNTdGFjazo6U2NvcGVDaGFpbik7CiAgICAgUmVzb2x2ZVNjb3Bl
SW5mbyByZXNvbHZlU2NvcGVJbmZvOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9pZGVu
dCwgcmVzb2x2ZVNjb3BlSW5mbyk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmc2NvcGVS
ZWdpc3RlciwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUuZ2V0KCksIERvTm90
VGhyb3dJZk5vdEZvdW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKIH0KIApAQCAtMTgwNyw4ICsxODE3
LDkgQEAgUmVnaXN0ZXJJRCogRW1wdHlWYXJFeHByZXNzaW9uOjplbWl0Qnl0ZQogICAgIGlmIChM
b2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChtX2lkZW50KSkKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZShsb2NhbC5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUhhc0dsb2Jh
bElELCBudWxscHRyKTsKICAgICBlbHNlIHsKKyAgICAgICAgUmVnaXN0ZXJJRCBzY29wZVJlZ2lz
dGVyKEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwogICAgICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29s
dmVTY29wZUluZm87Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9pZGVudCwgcmVz
b2x2ZVNjb3BlSW5mbyk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJnNjb3BlUmVn
aXN0ZXIsIG1faWRlbnQsIHJlc29sdmVTY29wZUluZm8pOwogICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBEb05vdFRocm93SWZOb3RGb3VuZCwgcmVz
b2x2ZVNjb3BlSW5mbyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUu
Z2V0KCksIHJlc29sdmVTY29wZUluZm8uaXNMb2NhbCgpID8gUHJvZmlsZVR5cGVCeXRlY29kZUdl
dEZyb21Mb2NhbFNjb3BlIDogUHJvZmlsZVR5cGVCeXRlY29kZUdldEZyb21TY29wZSwgJm1faWRl
bnQpOwogICAgIH0KQEAgLTIwMDEsOCArMjAxMiw5IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0TG9v
cEhlYWRlcihCeXRlY29kZUcKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAg
IFJlZ2lzdGVySUQgc2NvcGVSZWdpc3RlcihKU1N0YWNrOjpTY29wZUNoYWluKTsKICAgICAgICAg
ICAgIFJlc29sdmVTY29wZUluZm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICAgICAgICAgIFJlZ2lz
dGVySUQqIHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBpZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CisgICAgICAgICAgICBSZWdpc3Rl
cklEKiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgJnNjb3BlUmVnaXN0ZXIsIGlkZW50LCByZXNvbHZlU2NvcGVJbmZvKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29w
ZSwgaWRlbnQsIHByb3BlcnR5TmFtZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJ
Zk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIHJlc29sdmVTY29wZUluZm8pOwogICAg
ICAgICB9CkBAIC0yMTk4LDggKzIyMTAsOSBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICAgICAgUmVnaXN0ZXJJRCBzY29wZVJlZ2lzdGVyKEpTU3RhY2s6OlNjb3BlQ2hhaW4p
OwogICAgICAgICAgICAgICAgIFJlc29sdmVTY29wZUluZm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAg
ICAgICAgICAgICAgICBSZWdpc3RlcklEKiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaWRlbnQsIHJlc29sdmVTY29wZUluZm8pOwor
ICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmc2NvcGVSZWdpc3RlciwgaWRlbnQsIHJl
c29sdmVTY29wZUluZm8pOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUsIGlkZW50LCB2YWx1ZSwgZ2VuZXJhdG9y
LmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQs
IHJlc29sdmVTY29wZUluZm8pOwogICAgICAgICAgICAgfQpAQCAtMjgzOCw4ICsyODUxLDkgQEAg
dm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZQogICAgIH0KICAgICBpZiAo
Z2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0
ZXJJRCBzY29wZVJlZ2lzdGVyKEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwogICAgIFJlc29sdmVTY29w
ZUluZm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICBSZWdpc3RlcklEKiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9ib3VuZFByb3Bl
cnR5LCByZXNvbHZlU2NvcGVJbmZvKTsKKyAgICBSZWdpc3RlcklEKiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJnNjb3BlUmVnaXN0
ZXIsIG1fYm91bmRQcm9wZXJ0eSwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZSwgbV9ib3VuZFByb3BlcnR5LCB2YWx1
ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJv
d0lmTm90Rm91bmQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+
dHlwZVByb2ZpbGVyKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNzU0MTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3
NCw4ICszMTc0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogewogICAgICAgICAgICAgaW50IGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBSZXNvbHZlVHlw
ZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGRlcHRoID0gY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVU
eXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9w
ZXJhbmQpOworICAgICAgICAgICAgdW5zaWduZWQgZGVwdGggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
NV0udS5vcGVyYW5kOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBhbmQgcHV0X3Rv
X3Njb3BlIGRlcGVuZCBvbiB0aGlzIHdhdGNocG9pbnQgZm9yY2luZyBPU1IgZXhpdCwgc28gdGhl
eSBkb24ndCBhZGQgdGhlaXIgb3duIHdhdGNocG9pbnRzLgogICAgICAgICAgICAgaWYgKG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSkKQEAgLTMxOTEsNyArMzE5MSw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGNhc2Ug
TG9jYWxDbG9zdXJlVmFyOgogICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgICAgICAg
ICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewotICAgICAgICAgICAg
ICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bNV0udS5sZXhpY2FsRW52aXJvbm1lbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAg
SlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9IGN1cnJlbnRJbnN0cnVj
dGlvbls2XS51LmxleGljYWxFbnZpcm9ubWVudC5nZXQoKTsKICAgICAgICAgICAgICAgICBpZiAo
bGV4aWNhbEVudmlyb25tZW50CiAgICAgICAgICAgICAgICAgICAgICYmIGxleGljYWxFbnZpcm9u
bWVudC0+c3ltYm9sVGFibGUoKS0+bV9mdW5jdGlvbkVudGVyZWRPbmNlLmlzU3RpbGxWYWxpZCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRnVuY3Rpb25SZWVudHJ5V2F0Y2hw
b2ludCwgT3BJbmZvKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKSkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNp
b24gMTc1NDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChPcGNvZGVJRAogCiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CiAg
ICAgICAgIC8vIFdlIGRvbid0IGNvbXBpbGUgJ2NhdGNoJyBvciAnd2l0aCcsIHNvIHRoZXJlJ3Mg
bm8gcG9pbnQgaW4gY29tcGlsaW5nIHZhcmlhYmxlIHJlc29sdXRpb24gd2l0aGluIHRoZW0uCi0g
ICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKHBjWzNd
LnUub3BlcmFuZCkudHlwZSgpOworICAgICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IFJl
c29sdmVNb2RlQW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpLnR5cGUoKTsKICAgICAgICAgaWYgKHJl
c29sdmVUeXBlID09IER5bmFtaWMpCiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsK
ICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlz
aW9uIDE3NTQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNSw4ICs2MjUsOCBAQCB2b2lkIEpJVDo6
ZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGJvCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZl
X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7Ci0gICAgdW5zaWduZWQgZGVwdGggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kOworICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2
ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgIHVuc2lnbmVkIGRl
cHRoID0gY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZDsKIAogICAgIHN3aXRjaCAocmVz
b2x2ZVR5cGUpIHsKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgpAQCAtNjUzLDEzICs2NTMsMTMg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBpbnQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBSZXNvbHZlVHlwZSByZXNvbHZl
VHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKTsKKyAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29s
dmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogICAgIGlmIChyZXNv
bHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwg
cmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwotICAgIGludDMyX3QgaW5kZW50aWZpZXJJbmRleCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50MzJfdCBpbmRlbnRpZmllckluZGV4ID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blJlc29sdmVTY29wZSwgZHN0LCBpbmRlbnRpZmllckluZGV4KTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9u
IDE3NTQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDIsOCArNjAyLDggQEAgdm9pZCBKSVQ6OmVtaXRSZXNv
bHZlQ2xvc3VyZShpbnQgZHN0LCBibwogdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
OwotICAgIHVuc2lnbmVkIGRlcHRoID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsK
KyAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICB1bnNpZ25lZCBkZXB0aCA9IGN1
cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7CiAKICAgICBzd2l0Y2ggKHJlc29sdmVUeXBl
KSB7CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKQEAgLTYyOSwxMyArNjI5LDEzIEBAIHZvaWQg
SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3QKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBz
dGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7
CisgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4o
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKICAgICBpZiAocmVzb2x2ZVR5cGUg
PT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVU
eXBlID09IENsb3N1cmVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKLSAgICBpbnQzMl90IGluZGVudGlmaWVySW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgIGludDMyX3QgaW5kZW50aWZpZXJJbmRleCA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZl
U2NvcGUsIGRzdCwgaW5kZW50aWZpZXJJbmRleCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTc1NDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM1NSw3ICsxMzU1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2hhbmRsZV9leAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2Nv
cGUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpOwogICAgIExMSU5UX1JFVFVSTihKU1Njb3BlOjpyZXNvbHZlKGV4ZWMsIGV4
ZWMtPnNjb3BlKCksIGlkZW50KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lv
biAxNzU0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjE1OSw3ICsyMTU5LDcgQEAgZW5kCiAK
IG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCi0gICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDQsIHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1
LCB0MikKIAogICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCiAg
ICAgYnRpeiB0MiwgLnJlc29sdmVTY29wZUxvb3BFbmQKQEAgLTIxNzgsNDQgKzIxNzgsNDQgQEAg
ZW5kCiAKIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDQsIHQwKQogCiAjckdsb2JhbFByb3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0
eSwgLnJHbG9iYWxWYXIKICAgICBnZXRHbG9iYWxPYmplY3QoMSkKLSAgICBkaXNwYXRjaCg2KQor
ICAgIGRpc3BhdGNoKDcpCiAKIC5yR2xvYmFsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIs
IC5yQ2xvc3VyZVZhcgogICAgIGdldEdsb2JhbE9iamVjdCgxKQotICAgIGRpc3BhdGNoKDYpCisg
ICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFy
LCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHJlc29sdmVTY29w
ZSgpCi0gICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAg
ICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCiAgICAgZ2V0R2xvYmFsT2JqZWN0KDEpCi0g
ICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MsIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCiAgICAgZ2V0R2xvYmFsT2JqZWN0KDEpCi0gICAgZGlzcGF0Y2goNikK
KyAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgog
ICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJEeW5hbWlj
CiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQogICAgIHJlc29sdmVTY29wZSgpCi0g
ICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckR5bmFtaWM6CiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9zY29wZSkKLSAgICBkaXNwYXRjaCg2KQor
ICAgIGRpc3BhdGNoKDcpCiAKIAogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5k
LCBzbG93UGF0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNzU0MTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMTk5Miw3ICsxOTkyLDcgQEAgZW5kCiAKIG1hY3JvIHJlc29sdmVTY29wZSgpCiAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDQs
IHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKICAgICBsb2FkcCBTY29wZUNo
YWluW2Nmcl0sIHQwCiAgICAgYnRpeiB0MiwgLnJlc29sdmVTY29wZUxvb3BFbmQKIApAQCAtMjAw
OSw0NCArMjAwOSw0NCBAQCBlbmQKIAogX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDApCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEg
dDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZhcgogICAgIGdldEdsb2JhbE9iamVjdCgxKQot
ICAgIGRpc3BhdGNoKDYpCisgICAgZGlzcGF0Y2goNykKIAogLnJHbG9iYWxWYXI6CiAgICAgYmlu
ZXEgdDAsIEdsb2JhbFZhciwgLnJDbG9zdXJlVmFyCiAgICAgZ2V0R2xvYmFsT2JqZWN0KDEpCi0g
ICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6CiAgICAgYmlu
ZXEgdDAsIENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
CiAgICAgcmVzb2x2ZVNjb3BlKCkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAK
IC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKICAgICBnZXRH
bG9iYWxPYmplY3QoMSkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwog
ICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKICAgICBnZXRHbG9iYWxPYmplY3QoMSkK
LSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzLCAuckR5bmFtaWMKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCiAgICAg
cmVzb2x2ZVNjb3BlKCkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yRHlu
YW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKQot
ICAgIGRpc3BhdGNoKDYpCisgICAgZGlzcGF0Y2goNykKIAogCiBtYWNybyBsb2FkV2l0aFN0cnVj
dHVyZUNoZWNrKG9wZXJhbmQsIHNsb3dQYXRoKQo=
</data>
<flag name="review"
          id="265530"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240770</attachid>
            <date>2014-10-31 17:21:54 -0700</date>
            <delta_ts>2014-11-01 21:05:50 -0700</delta_ts>
            <desc>Patch with suggested changes</desc>
            <filename>138253-2.patch</filename>
            <type>text/plain</type>
            <size>30766</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1NDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDE0LTEwLTMxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzY29wZSBvcGVyYW5kIHRvIG9wX3Jlc29sdmVfc2NvcGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODI1MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHNjb3BlIG9wZXJhbmQgdG8g
b3BfcmVzb2x2ZV9zY29wZS4gIEFsdGhvdWdoIHRoZSBzY29wZSByZWdpc3RlciBpcyBmaWxsZWQg
aW4KKyAgICAgICAgd2l0aCB0aGUgU2NvcGVDaGFpbiByZWdpc3RlciB0aGlzIG9wZXJhbmQsIGlz
IG5vdCB1c2VkIGluIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBieXRlY29kZS4KKyAgICAgICAgVGhh
dCB3aWxsIGJlIGFkZHJlc3NlZCBpbiBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uOiBMZW5ndGhlbmVkIHRoZSB0aHJlZSBieXRlY29kZXMuCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUpOiBBZGRlZCBjb2RlIHRvIGR1bXAgdGhlIHNjb3BlIG9wZXJhbmQuCisK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOiAKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIFVwZGF0ZWQgdGhlIG9w
ZXJhbmQgaW5kZWNpZXMgZm9yIHRoZSBwcm9jZXNzaW5nIG9mIG9wX3Jlc29sdmVfc2NvcGUuCisK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVTY29wZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0T3duU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIEFkZGVkIHNjb3BlIHJlZ2lzdGVyIHRvIHRoZXNlIGVt
aXQgZnVuY3Rpb25zIGFuZCB0aGUgYnl0ZWNvZGVzIHRoZXkgZW1pdC4KKworICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAg
ICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
VHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByZWZpeE5v
ZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbGUpOgorICAg
ICAgICAoSlNDOjpFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUpOgor
ICAgICAgICBVc2UgdGhlIEJ5dGVjb2RlR2VuZXJhdG9yJ3Mgc2NvcGUgcmVnaXN0ZXIgdG8gZW1p
dCB0aGUgdXBkYXRlZCBieXRlY29kZXMuCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgor
ICAgICAgICBVcGRhdGVkIHRoZSBvcGVyYW5kIGluZGVjaWVzIGZvciB0aGUgcHJvY2Vzc2luZyBv
ZiBvcF9yZXNvbHZlX3Njb3BlLgorCiAyMDE0LTEwLTMxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJv
ZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzY29wZSBvcGVyYW5kIHRvIG9wX3B1c2hfd2l0
aF9zY29wZSwgb3BfcHVzaF9uYW1lX3Njb3BlIGFuZCBvcF9wb3Bfc2NvcGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDE3NTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jb25zdHJ1Y3RfdmFyYXJncyIsICJsZW5ndGgiIDogOSB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfc3RyY2F0IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF90b19wcmltaXRpdmUiLCAibGVuZ3RoIiA6IDMgfSwKLSAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3RoIiA6IDYgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3RoIiA6IDcgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9mcm9tX3Njb3BlIiwgImxlbmd0aCIgOiA4IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGUiLCAibGVuZ3RoIiA6IDcg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDE3NTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDExICsxNDg3LDEyIEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9y
ZXNvbHZlX3Njb3BlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBzY29wZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgUmVzb2x2ZU1vZGVBbmRU
eXBlIG1vZGVBbmRUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKCgrK2l0KS0+dS5vcGVyYW5kKTsK
ICAgICAgICAgICAgIGludCBkZXB0aCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzb2x2ZV9zY29w
ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAldTwlc3wlcz4sICVkIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgp
LAorICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXU8JXN8JXM+LCAlZCIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoc2NvcGUpLmRhdGEoKSwgaWROYW1l
KGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksCiAgICAgICAgICAgICAgICAgbW9kZUFuZFR5
cGUub3BlcmFuZCgpLCByZXNvbHZlTW9kZU5hbWUobW9kZUFuZFR5cGUubW9kZSgpKSwgcmVzb2x2
ZVR5cGVOYW1lKG1vZGVBbmRUeXBlLnR5cGUoKSksCiAgICAgICAgICAgICAgICAgZGVwdGgpOwog
ICAgICAgICAgICAgKytpdDsKQEAgLTE5MjgsMTggKzE5MjksMTggQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9y
ZXNvbHZlX3Njb3BlOiB7Ci0gICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIHR5cGUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4ocGNbM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgUmVzb2x2ZVR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihw
Y1s0XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gTG9jYWxDbG9zdXJlVmFy
KSB7Ci0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAzXS51Lm9wZXJhbmQgPSBDbG9z
dXJlVmFyOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0g
Q2xvc3VyZVZhcjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIG5lZWRzQWN0aXZhdGlvbigpLCBzY29wZSwgaWRlbnQsIEdl
dCwgdHlwZSk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDNdLnUub3BlcmFuZCA9IG9w
LnR5cGU7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IG9wLmRl
cHRoOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBvcC50eXBl
OworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51Lm9wZXJhbmQgPSBvcC5kZXB0aDsK
ICAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyA1XS51LmxleGljYWxFbnZpcm9ubWVudC5zZXQoKnZtKCksIG93bmVy
RXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDZdLnUubGV4aWNhbEVudmlyb25tZW50LnNldCgqdm0oKSwgb3duZXJFeGVj
dXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApAQCAtMjU0NSw3ICsyNTQ2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzJdLnUuanNDZWxs
LmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX3Jl
c29sdmVfc2NvcGU6IHsKLSAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTTGV4aWNh
bEVudmlyb25tZW50PiYgbGV4aWNhbEVudmlyb25tZW50ID0gY3VySW5zdHJ1Y3Rpb25bNV0udS5s
ZXhpY2FsRW52aXJvbm1lbnQ7CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0xl
eGljYWxFbnZpcm9ubWVudD4mIGxleGljYWxFbnZpcm9ubWVudCA9IGN1ckluc3RydWN0aW9uWzZd
LnUubGV4aWNhbEVudmlyb25tZW50OwogICAgICAgICAgICAgICAgIGlmICghbGV4aWNhbEVudmly
b25tZW50IHx8IEhlYXA6OmlzTWFya2VkKGxleGljYWxFbnZpcm9ubWVudC5nZXQoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTc1NDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyODcsNyArMTI4Nyw3IEBAIFJlc29sdmVUeXBlIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpyZXNvbHZlVHkKICAgICByZXR1cm4gR2xvYmFsUHJvcGVydHk7CiB9CiAKLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVNjb3BlKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVzb2x2ZVNjb3BlSW5mbyYgaW5mbykK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVNjb3BlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIs
IFJlc29sdmVTY29wZUluZm8mIGluZm8pCiB7CiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIApAQCAtMTI5Niw2ICsx
Mjk2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgICAg
ICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3Jlc29s
dmVfc2NvcGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7
CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOwogICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsK
ICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChMb2NhbENsb3N1cmVWYXIpOwogICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwpAQCAtMTMxMCw2ICsxMzExLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIC8vIHJlc29sdmVf
c2NvcGUgZHN0LCBpZCwgUmVzb2x2ZVR5cGUsIGRlcHRoCiAgICAgZW1pdE9wY29kZShvcF9yZXNv
bHZlX3Njb3BlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHJlc29sdmVUeXBlKCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKQEAgLTEz
MTgsMTAgKzEzMjAsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNv
bAogfQogCiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0T3duU2NvcGUo
UmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBPd25TY29wZUxv
b2t1cFJ1bGVzKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRPd25TY29w
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBPd25TY29wZUxvb2t1cFJ1bGVzKQogewogICAgIGVtaXRPcGNvZGUob3BfcmVz
b2x2ZV9zY29wZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChMb2NhbENsb3N1cmVWYXIpOwogICAgIC8vIFRoaXMgc2hvdWxkIGJlIG1fbG9jYWxTY29w
ZURlcHRoIGlmIHdlIGFyZW4ndCBkb2luZwpAQCAtMTk0Miw3ICsxOTQ1LDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cgogICAgICAgICBpbnQgYXJndW1lbnRzSW5k
ZXggPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIobV9jb2RlQmxvY2stPmFyZ3VtZW50c1Jl
Z2lzdGVyKCkpLm9mZnNldCgpOwogICAgICAgICBpZiAobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3RlciAmJiBtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSkgewogICAgICAgICAgICAgc2NyYXRj
aFJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBlbWl0R2V0T3duU2NvcGUo
c2NyYXRjaFJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBPd25TY29w
ZUZvclJldHVybik7CisgICAgICAgICAgICBlbWl0R2V0T3duU2NvcGUoc2NyYXRjaFJlZ2lzdGVy
LmdldCgpLCBzY29wZVJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIE93blNj
b3BlRm9yUmV0dXJuKTsKICAgICAgICAgICAgIFJlc29sdmVTY29wZUluZm8gc2NvcGVJbmZvKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIo
KSkub2Zmc2V0KCkpOwogICAgICAgICAgICAgZW1pdEdldEZyb21TY29wZShzY3JhdGNoUmVnaXN0
ZXIuZ2V0KCksIHNjcmF0Y2hSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cywgVGhyb3dJZk5vdEZvdW5kLCBzY29wZUluZm8pOwogICAgICAgICAgICAgYXJndW1lbnRzSW5k
ZXggPSBzY3JhdGNoUmVnaXN0ZXItPmluZGV4KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAxNzU0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwMSw3ICs1MDEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSgpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UmVzb2x2ZUNvbnN0YW50TG9jYWwoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJ
ZGVudGlmaWVyJiwgUmVzb2x2ZVNjb3BlSW5mbyYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UmVzb2x2ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYsIFJlc29sdmVT
Y29wZUluZm8mKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVTY29wZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiwgUmVzb2x2ZVNj
b3BlSW5mbyYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0RnJvbVNjb3BlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImLCBSZXNvbHZlTW9k
ZSwgY29uc3QgUmVzb2x2ZVNjb3BlSW5mbyYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0
VG9TY29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSWRlbnRpZmllciYsIFJlZ2lzdGVySUQq
IHZhbHVlLCBSZXNvbHZlTW9kZSwgY29uc3QgUmVzb2x2ZVNjb3BlSW5mbyYpOwogCkBAIC02Njgs
NyArNjY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHdpdGggdGhlIG5vdmVsIHN0
YXRlIG9mIGhhdmluZyBwb3BwZWQgb2ZmIGFsbCB0aGUgbG9jYWwgc2NvcGUKICAgICAgICAgLy8g
bm9kZXMsIGJ1dCBub3QgYWN0dWFsbHkgbW9kaWZ5IGFueSBpbnRlcm5hbCBzdGFjayBkZXB0aCB0
cmFja2luZy4KICAgICAgICAgZW51bSBPd25TY29wZUxvb2t1cFJ1bGVzIHsgT3duU2NvcGVGb3JS
ZXR1cm4gfTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldE93blNjb3BlKFJlZ2lzdGVySUQq
IGRzdCwgY29uc3QgSWRlbnRpZmllciYsIE93blNjb3BlTG9va3VwUnVsZXMpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0T3duU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
Y29wZSwgY29uc3QgSWRlbnRpZmllciYsIE93blNjb3BlTG9va3VwUnVsZXMpOwogCiAgICAgcHVi
bGljOgogICAgICAgICBKU1N0cmluZyogYWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmll
ciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTc1NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjks
NyArMTY5LDcgQEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeQogICAg
IEpTVGV4dFBvc2l0aW9uIGRpdm90ID0gbV9zdGFydCArIG1faWRlbnQubGVuZ3RoKCk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgbV9zdGFydCwgZGl2b3QpOwogICAg
IFJlc29sdmVTY29wZUluZm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIG1faWRlbnQsIHJlc29sdmVTY29wZUluZm8pOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9pZGVudCwgcmVz
b2x2ZVNjb3BlSW5mbyk7CiAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdEdldEZyb21TY29wZShmaW5hbERlc3QsIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lm
Tm90Rm91bmQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlw
ZVByb2ZpbGVyKCkpIHsKQEAgLTQ5MSw3ICs0OTEsNyBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rp
b25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0
YXJ0KCkgKyA0OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRp
dm90U3RhcnQoKSwgbmV3RGl2b3QpOwogICAgIFJlc29sdmVTY29wZUluZm8gcmVzb2x2ZVNjb3Bl
SW5mbzsKLSAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmV2YWwsIHJlc29sdmVTY29wZUlu
Zm8pOworICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkuZXZhbCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5ldmFsLCBUaHJvd0lmTm90Rm91bmQsIHJlc29sdmVTY29wZUluZm8p
OwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxFdmFsKGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiB9CkBAIC01NDAsNyArNTQwLDcgQEAgUmVn
aXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIEpTVGV4dFBvc2l0aW9u
IG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsK
ICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87Ci0gICAgZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCwgcmVz
b2x2ZVNjb3BlSW5mbyk7CisgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9pZGVudCwg
cmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5n
ZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCwgVGhyb3dJZk5vdEZv
dW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
aWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewpAQCAtODIyLDcgKzgyMiw3IEBA
IFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKIAogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87Ci0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBpZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBpZGVudCwgcmVzb2x2ZVNjb3BlSW5m
byk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgaWRlbnQsIFRocm93
SWZOb3RGb3VuZCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9s
ZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3IuZW1p
dFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZv
dW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKQEAgLTkwOCw3ICs5MDgsNyBAQCBSZWdpc3RlcklEKiBE
ZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVzb2x2ZVNj
b3BlSW5mbyByZXNvbHZlU2NvcGVJbmZvOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBtX2lkZW50LCByZXNvbHZlU2NvcGVJbmZvKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5m
byk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGVsZXRlQnlJZChnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIGJhc2UuZ2V0KCkpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKIH0KIApA
QCAtOTY2LDcgKzk2Niw3IEBAIFJlZ2lzdGVySUQqIFR5cGVPZlJlc29sdmVOb2RlOjplbWl0Qnl0
ZWMKICAgICB9CiAKICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87Ci0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBtX2lkZW50LCByZXNvbHZlU2NvcGVJbmZvKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVy
KCksIG1faWRlbnQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCksIG1faWRlbnQsIERvTm90VGhyb3dJZk5vdEZvdW5kLCByZXNvbHZlU2Nv
cGVJbmZvKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdFJlc29sdmUoQnl0ZQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlc29sdmVTY29wZUluZm8g
cmVzb2x2ZVNjb3BlSW5mbzsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGlkZW50
LCByZXNvbHZlU2NvcGVJbmZvKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGdl
bmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIGlkZW50LCByZXNvbHZlU2NvcGVJbmZvKTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBpZGVudCwgVGhyb3dJZk5vdEZvdW5k
LCByZXNvbHZlU2NvcGVJbmZvKTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZS5n
ZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdl
dCgpLCBpZGVudCwgdmFsdWUuZ2V0KCksIFRocm93SWZOb3RGb3VuZCwgcmVzb2x2ZVNjb3BlSW5m
byk7CkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGU6OmVtaXRCCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBk
aXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29w
ZUluZm87Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50LCByZXNvbHZlU2NvcGVJ
bmZvKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVy
KCksIG1faWRlbnQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCwgcmVzb2x2ZVNjb3BlSW5m
byk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdu
bWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0
KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3Vs
dFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSksIHRoaXMp
OwogICAgIFJlZ2lzdGVySUQqIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29w
ZShzY29wZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0LmdldCgpLCBUaHJvd0lmTm90Rm91bmQsIHJl
c29sdmVTY29wZUluZm8pOwpAQCAtMTU2OCw3ICsxNTY4LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWdu
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlYwogICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50LCByZXNvbHZlU2NvcGVJbmZvKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIG1f
aWRlbnQsIHJlc29sdmVTY29wZUluZm8pOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkKICAgICAgICAgZHN0ID0gMDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9yaWdodCk7CkBAIC0xNzA5LDcgKzE3MDks
NyBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsCiAKICAgICAvLyBG
SVhNRTogVGhpcyB3aWxsIHJlc3VsdCBpbiBpbmNvcnJlY3QgYXNzaWdubWVudCBpZiBtX2lkZW50
IGV4aXN0cyBpbiBhbiBpbnRlcnZlbmluZyB3aXRoIHNjb3BlLgogICAgIFJlc29sdmVTY29wZUlu
Zm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQs
IHJlc29sdmVTY29wZUluZm8pOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9y
LnNjb3BlUmVnaXN0ZXIoKSwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUuZ2V0
KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKIH0KIApAQCAtMTgw
OCw3ICsxODA4LDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlWYXJFeHByZXNzaW9uOjplbWl0Qnl0ZQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLmdldCgpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlSGFzR2xvYmFsSUQsIG51bGxwdHIpOwogICAgIGVsc2UgewogICAgICAgICBSZXNv
bHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgbV9pZGVudCwgcmVzb2x2ZVNjb3BlSW5mbyk7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9pZGVudCwgcmVzb2x2ZVNjb3Bl
SW5mbyk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIG1faWRl
bnQsIERvTm90VGhyb3dJZk5vdEZvdW5kLCByZXNvbHZlU2NvcGVJbmZvKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgcmVzb2x2ZVNjb3BlSW5mby5pc0xv
Y2FsKCkgPyBQcm9maWxlVHlwZUJ5dGVjb2RlR2V0RnJvbUxvY2FsU2NvcGUgOiBQcm9maWxlVHlw
ZUJ5dGVjb2RlR2V0RnJvbVNjb3BlLCAmbV9pZGVudCk7CiAgICAgfQpAQCAtMjAwMiw3ICsyMDAy
LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlRwogICAgICAgICAg
ICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgICAgICBSZXNvbHZlU2NvcGVJbmZvIHJlc29sdmVTY29wZUluZm87Ci0gICAgICAg
ICAgICBSZWdpc3RlcklEKiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgaWRlbnQsIHJlc29sdmVTY29wZUluZm8pOworICAgICAgICAg
ICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIGlkZW50LCByZXNv
bHZlU2NvcGVJbmZvKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0VG9TY29wZShzY29wZSwgaWRlbnQsIHByb3BlcnR5TmFtZSwgZ2VuZXJhdG9yLmlz
U3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIHJl
c29sdmVTY29wZUluZm8pOwogICAgICAgICB9CkBAIC0yMTk5LDcgKzIxOTksNyBAQCB2b2lkIEZv
ck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgICAgICAgICAgaWYgKGdl
bmVyYXRvci5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgICAgIFJlc29sdmVTY29wZUluZm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICAgICAg
ICAgICAgICBSZWdpc3RlcklEKiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaWRlbnQsIHJlc29sdmVTY29wZUluZm8pOworICAgICAg
ICAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBpZGVu
dCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZSwgaWRlbnQsIHZhbHVlLCBnZW5l
cmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RG
b3VuZCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgICAgICAgICB9CkBAIC0yODM5LDcgKzI4Mzks
NyBAQCB2b2lkIEJpbmRpbmdOb2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lCiAgICAgaWYgKGdl
bmVyYXRvci5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlc29sdmVT
Y29wZUluZm8gcmVzb2x2ZVNjb3BlSW5mbzsKLSAgICBSZWdpc3RlcklEKiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9ib3VuZFBy
b3BlcnR5LCByZXNvbHZlU2NvcGVJbmZvKTsKKyAgICBSZWdpc3RlcklEKiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9y
LnNjb3BlUmVnaXN0ZXIoKSwgbV9ib3VuZFByb3BlcnR5LCByZXNvbHZlU2NvcGVJbmZvKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLCBtX2JvdW5k
UHJvcGVydHksIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgcmVzb2x2ZVNjb3BlSW5mbyk7CiAgICAgaWYgKGdl
bmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3NTQyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTc0LDggKzMxNzQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CiAgICAgICAg
ICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgdW5zaWduZWQgZGVw
dGggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOworICAgICAgICAgICAgUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgICAgICB1bnNpZ25lZCBkZXB0aCA9IGN1cnJl
bnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7CiAKICAgICAgICAgICAgIC8vIGdldF9mcm9tX3Nj
b3BlIGFuZCBwdXRfdG9fc2NvcGUgZGVwZW5kIG9uIHRoaXMgd2F0Y2hwb2ludCBmb3JjaW5nIE9T
UiBleGl0LCBzbyB0aGV5IGRvbid0IGFkZCB0aGVpciBvd24gd2F0Y2hwb2ludHMuCiAgICAgICAg
ICAgICBpZiAobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKQpAQCAtMzE5MSw3
ICszMTkxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVW
YXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7
Ci0gICAgICAgICAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVu
dCA9IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LmxleGljYWxFbnZpcm9ubWVudC5nZXQoKTsKKyAg
ICAgICAgICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0g
Y3VycmVudEluc3RydWN0aW9uWzZdLnUubGV4aWNhbEVudmlyb25tZW50LmdldCgpOwogICAgICAg
ICAgICAgICAgIGlmIChsZXhpY2FsRW52aXJvbm1lbnQKICAgICAgICAgICAgICAgICAgICAgJiYg
bGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5tX2Z1bmN0aW9uRW50ZXJlZE9uY2Uu
aXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGdW5jdGlv
blJlZW50cnlXYXRjaHBvaW50LCBPcEluZm8obGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJs
ZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCShyZXZpc2lvbiAxNzU0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCBDYXBh
YmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAKICAgICBjYXNlIG9wX3Jlc29s
dmVfc2NvcGU6IHsKICAgICAgICAgLy8gV2UgZG9uJ3QgY29tcGlsZSAnY2F0Y2gnIG9yICd3aXRo
Jywgc28gdGhlcmUncyBubyBwb2ludCBpbiBjb21waWxpbmcgdmFyaWFibGUgcmVzb2x1dGlvbiB3
aXRoaW4gdGhlbS4KLSAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBSZXNvbHZlTW9k
ZUFuZFR5cGUocGNbM10udS5vcGVyYW5kKS50eXBlKCk7CisgICAgICAgIFJlc29sdmVUeXBlIHJl
c29sdmVUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKHBjWzRdLnUub3BlcmFuZCkudHlwZSgpOwog
ICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gRHluYW1pYykKICAgICAgICAgICAgIHJldHVybiBD
YW5ub3RDb21waWxlOwogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAkocmV2aXNpb24gMTc1NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI1LDggKzYyNSw4
IEBAIHZvaWQgSklUOjplbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgYm8KIHZvaWQgSklUOjpl
bWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBSZXNv
bHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICB1bnNpZ25lZCBkZXB0aCA9IGN1cnJlbnRJbnN0
cnVjdGlvbls0XS51Lm9wZXJhbmQ7CisgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7Cisg
ICAgdW5zaWduZWQgZGVwdGggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kOwogCiAg
ICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CkBAIC02
NTMsMTMgKzY1MywxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIFJlc29s
dmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwog
CiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09
IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQogICAgICAgICByZXR1cm47
CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgaW50MzJfdCBpbmRlbnRpZmllckluZGV4
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQzMl90IGluZGVudGlm
aWVySW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCBkc3QsIGluZGVudGlmaWVySW5kZXgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkocmV2aXNpb24gMTc1NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMiw4ICs2MDIsOCBAQCB2b2lk
IEpJVDo6ZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGJvCiB2b2lkIEpJVDo6ZW1pdF9vcF9y
ZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgUmVzb2x2ZVR5cGUg
cmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCk7Ci0gICAgdW5zaWduZWQgZGVwdGggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kOworICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8
UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgIHVuc2ln
bmVkIGRlcHRoID0gY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZDsKIAogICAgIHN3aXRj
aCAocmVzb2x2ZVR5cGUpIHsKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgpAQCAtNjI5LDEzICs2
MjksMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdAogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBSZXNvbHZlVHlwZSBy
ZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKTsKKyAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogICAgIGlm
IChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxW
YXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGludDMyX3QgaW5kZW50aWZpZXJJbmRleCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50MzJfdCBpbmRlbnRpZmllckluZGV4
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblJlc29sdmVTY29wZSwgZHN0LCBpbmRlbnRpZmllckluZGV4KTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAxNzU0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaGFuZGxlX2V4CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcmVzb2x2ZV9zY29wZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgTExJTlRfUkVUVVJOKEpTU2NvcGU6OnJl
c29sdmUoZXhlYywgZXhlYy0+c2NvcGUoKSwgaWRlbnQpKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20JKHJldmlzaW9uIDE3NTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTU5LDcgKzIx
NTksNyBAQCBlbmQKIAogbWFjcm8gcmVzb2x2ZVNjb3BlKCkKICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDIpCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDUsIHQyKQogCiAgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZz
ZXRbY2ZyXSwgdDAKICAgICBidGl6IHQyLCAucmVzb2x2ZVNjb3BlTG9vcEVuZApAQCAtMjE3OCw0
NCArMjE3OCw0NCBAQCBlbmQKIAogX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oNCwgdDApCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAs
IEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZhcgogICAgIGdldEdsb2JhbE9iamVjdCgxKQotICAg
IGRpc3BhdGNoKDYpCisgICAgZGlzcGF0Y2goNykKIAogLnJHbG9iYWxWYXI6CiAgICAgYmluZXEg
dDAsIEdsb2JhbFZhciwgLnJDbG9zdXJlVmFyCiAgICAgZ2V0R2xvYmFsT2JqZWN0KDEpCi0gICAg
ZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6CiAgICAgYmluZXEg
dDAsIENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAg
ICAgcmVzb2x2ZVNjb3BlKCkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5y
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKICAgICBnZXRHbG9i
YWxPYmplY3QoMSkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yR2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAg
IHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKICAgICBnZXRHbG9iYWxPYmplY3QoMSkKLSAg
ICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAuckR5bmFtaWMKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCiAgICAgcmVz
b2x2ZVNjb3BlKCkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yRHluYW1p
YzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKQotICAg
IGRpc3BhdGNoKDYpCisgICAgZGlzcGF0Y2goNykKIAogCiBtYWNybyBsb2FkV2l0aFN0cnVjdHVy
ZUNoZWNrKG9wZXJhbmQsIHNsb3dQYXRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE3NTQy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDcgKzE5OTIsNyBAQCBlbmQKIAogbWFjcm8gcmVz
b2x2ZVNjb3BlKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKLSAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oNCwgdDIpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQyKQogICAg
IGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDAKICAgICBidGl6IHQyLCAucmVzb2x2ZVNjb3BlTG9v
cEVuZAogCkBAIC0yMDA5LDQ0ICsyMDA5LDQ0IEBAIGVuZAogCiBfbGxpbnRfb3BfcmVzb2x2ZV9z
Y29wZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMs
IHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0MCkKIAogI3JHbG9iYWxQcm9wZXJ0
eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5yR2xvYmFsVmFyCiAgICAgZ2V0R2xv
YmFsT2JqZWN0KDEpCi0gICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckdsb2Jh
bFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyLCAuckNsb3N1cmVWYXIKICAgICBnZXRHbG9i
YWxPYmplY3QoMSkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3Vy
ZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3MKICAgICByZXNvbHZlU2NvcGUoKQotICAgIGRpc3BhdGNoKDYpCisgICAg
ZGlzcGF0Y2goNykKIAogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAg
ICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9i
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5h
bWljKQogICAgIGdldEdsb2JhbE9iamVjdCgxKQotICAgIGRpc3BhdGNoKDYpCisgICAgZGlzcGF0
Y2goNykKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQw
LCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQogICAgIGdldEds
b2JhbE9iamVjdCgxKQotICAgIGRpc3BhdGNoKDYpCisgICAgZGlzcGF0Y2goNykKIAogLnJDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1pYwogICAgIHZhckluamVjdGlvbkNoZWNrKC5y
RHluYW1pYykKICAgICByZXNvbHZlU2NvcGUoKQotICAgIGRpc3BhdGNoKDYpCisgICAgZGlzcGF0
Y2goNykKIAogLnJEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jl
c29sdmVfc2NvcGUpCi0gICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAKIG1hY3Jv
IGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1BhdGgpCg==
</data>
<flag name="review"
          id="265564"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240804</attachid>
            <date>2014-11-01 21:05:50 -0700</date>
            <delta_ts>2014-11-03 09:32:07 -0800</delta_ts>
            <desc>Update patch with changes suggested in comment 4</desc>
            <filename>138253-3.patch</filename>
            <type>text/plain</type>
            <size>16790</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1NDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE0LTExLTAxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzY29wZSBvcGVyYW5kIHRvIG9wX3Jlc29sdmVfc2NvcGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODI1MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHNjb3BlIG9wZXJhbmQgdG8g
b3BfcmVzb2x2ZV9zY29wZS4gIEFsdGhvdWdoIHRoZSBzY29wZSByZWdpc3RlciBpcyBmaWxsZWQg
aW4gd2l0aAorICAgICAgICB0aGUgU2NvcGVDaGFpbiByZWdpc3RlciwgdGhpcyBvcGVyYW5kIGlz
IG5vdCB1c2VkIGluIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBieXRlY29kZS4KKyAgICAgICAgVGhh
dCB3aWxsIGJlIGFkZHJlc3NlZCBpbiBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uOiBMZW5ndGhlbmVkIHRoZSB0aHJlZSBieXRlY29kZXMuCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUpOiBBZGRlZCBjb2RlIHRvIGR1bXAgdGhlIHNjb3BlIG9wZXJhbmQuCisK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOiAKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIFVwZGF0ZWQgdGhlIG9w
ZXJhbmQgaW5kZWNpZXMgZm9yIHRoZSBwcm9jZXNzaW5nIG9mIG9wX3Jlc29sdmVfc2NvcGUuCisK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVTY29wZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0T3duU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybik6CisgICAgICAgIEFkZGVkIHNjb3BlIHJlZ2lzdGVy
IHRvIHRoZXNlIGVtaXQgZnVuY3Rpb25zIGFuZCB0aGUgYnl0ZWNvZGVzIHRoZXkgZW1pdC4KKwor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2Nv
cGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgIFVwZGF0ZWQgdGhlIG9wZXJhbmQg
aW5kZWNpZXMgZm9yIHRoZSBwcm9jZXNzaW5nIG9mIG9wX3Jlc29sdmVfc2NvcGUuCisKIDIwMTQt
MTAtMzEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHNjb3BlIG9wZXJhbmQgdG8gb3BfcHVzaF93aXRoX3Njb3BlLCBvcF9wdXNoX25hbWVfc2NvcGUg
YW5kIG9wX3BvcF9zY29wZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgkocmV2aXNpb24gMTc1NDI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsNyArMTA0LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvbnN0cnVjdF92YXJh
cmdzIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zdHJjYXQi
LCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX3ByaW1pdGl2
ZSIsICJsZW5ndGgiIDogMyB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzb2x2ZV9z
Y29wZSIsICJsZW5ndGgiIDogNiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzb2x2
ZV9zY29wZSIsICJsZW5ndGgiIDogNyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0
X2Zyb21fc2NvcGUiLCAibGVuZ3RoIiA6IDggfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3B1dF90b19zY29wZSIsICJsZW5ndGgiIDogNyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfcHVzaF93aXRoX3Njb3BlIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTc1NDI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0ODcsMTEgKzE0ODcsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHNjb3BlID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPSBSZXNvbHZlTW9k
ZUFuZFR5cGUoKCsraXQpLT51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaW50IGRlcHRoID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJyZXNvbHZlX3Njb3BlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICV1PCVzfCVzPiwgJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaWROYW1l
KGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksCisgICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMsICVzLCAldTwlc3wlcz4sICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShzY29wZSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEo
KSwKICAgICAgICAgICAgICAgICBtb2RlQW5kVHlwZS5vcGVyYW5kKCksIHJlc29sdmVNb2RlTmFt
ZShtb2RlQW5kVHlwZS5tb2RlKCkpLCByZXNvbHZlVHlwZU5hbWUobW9kZUFuZFR5cGUudHlwZSgp
KSwKICAgICAgICAgICAgICAgICBkZXB0aCk7CiAgICAgICAgICAgICArK2l0OwpAQCAtMTkyOCwx
OCArMTkyOSwxOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAg
ICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKLSAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwot
ICAgICAgICAgICAgUmVzb2x2ZVR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihw
Y1szXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBp
ZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSB0eXBl
ID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KHBjWzRdLnUub3BlcmFuZCk7CiAgICAgICAgICAg
ICBpZiAodHlwZSA9PSBMb2NhbENsb3N1cmVWYXIpIHsKLSAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIDNdLnUub3BlcmFuZCA9IENsb3N1cmVWYXI7CisgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBDbG9zdXJlVmFyOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Nj
b3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbmVlZHNB
Y3RpdmF0aW9uKCksIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlKTsKLSAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgM10udS5vcGVyYW5kID0gb3AudHlwZTsKLSAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgNF0udS5vcGVyYW5kID0gb3AuZGVwdGg7CisgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDRdLnUub3BlcmFuZCA9IG9wLnR5cGU7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIDVdLnUub3BlcmFuZCA9IG9wLmRlcHRoOwogICAgICAgICAgICAgaWYgKG9wLmxleGljYWxF
bnZpcm9ubWVudCkKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUubGV4aWNh
bEVudmlyb25tZW50LnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJv
bm1lbnQpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5sZXhpY2FsRW52
aXJvbm1lbnQuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVu
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNTQ1LDcgKzI1NDYsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuY2xlYXIoKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogewotICAgICAgICAgICAg
ICAgIFdyaXRlQmFycmllckJhc2U8SlNMZXhpY2FsRW52aXJvbm1lbnQ+JiBsZXhpY2FsRW52aXJv
bm1lbnQgPSBjdXJJbnN0cnVjdGlvbls1XS51LmxleGljYWxFbnZpcm9ubWVudDsKKyAgICAgICAg
ICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTTGV4aWNhbEVudmlyb25tZW50PiYgbGV4aWNhbEVu
dmlyb25tZW50ID0gY3VySW5zdHJ1Y3Rpb25bNl0udS5sZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAg
ICAgICAgICAgICAgaWYgKCFsZXhpY2FsRW52aXJvbm1lbnQgfHwgSGVhcDo6aXNNYXJrZWQobGV4
aWNhbEVudmlyb25tZW50LmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCShyZXZpc2lvbiAxNzU0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5Niw2ICsxMjk2
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgICAgICBp
ZiAoIWVudHJ5LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3Jlc29sdmVf
c2NvcGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7Cisg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlm
aWVyKSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoTG9jYWxDbG9zdXJlVmFy
KTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKQEAgLTEzMTAsNiArMTMx
MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICAvLyBy
ZXNvbHZlX3Njb3BlIGRzdCwgaWQsIFJlc29sdmVUeXBlLCBkZXB0aAogICAgIGVtaXRPcGNvZGUo
b3BfcmVzb2x2ZV9zY29wZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVR5cGUoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwpAQCAtMTMyMiw2ICsxMzI0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRPdwogewogICAgIGVtaXRPcGNvZGUob3BfcmVzb2x2ZV9zY29wZSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
TG9jYWxDbG9zdXJlVmFyKTsKICAgICAvLyBUaGlzIHNob3VsZCBiZSBtX2xvY2FsU2NvcGVEZXB0
aCBpZiB3ZSBhcmVuJ3QgZG9pbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNzU0MjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE3NCw4ICszMTc0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogCiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogewogICAgICAgICAgICAgaW50IGRz
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBSZXNvbHZl
VHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGRlcHRoID0gY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29s
dmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgdW5zaWduZWQgZGVwdGggPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bNV0udS5vcGVyYW5kOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBhbmQgcHV0
X3RvX3Njb3BlIGRlcGVuZCBvbiB0aGlzIHdhdGNocG9pbnQgZm9yY2luZyBPU1IgZXhpdCwgc28g
dGhleSBkb24ndCBhZGQgdGhlaXIgb3duIHdhdGNocG9pbnRzLgogICAgICAgICAgICAgaWYgKG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSkKQEAgLTMxOTEsNyArMzE5MSw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGNh
c2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgICAg
ICAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewotICAgICAgICAg
ICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bNV0udS5sZXhpY2FsRW52aXJvbm1lbnQuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9IGN1cnJlbnRJbnN0
cnVjdGlvbls2XS51LmxleGljYWxFbnZpcm9ubWVudC5nZXQoKTsKICAgICAgICAgICAgICAgICBp
ZiAobGV4aWNhbEVudmlyb25tZW50CiAgICAgICAgICAgICAgICAgICAgICYmIGxleGljYWxFbnZp
cm9ubWVudC0+c3ltYm9sVGFibGUoKS0+bV9mdW5jdGlvbkVudGVyZWRPbmNlLmlzU3RpbGxWYWxp
ZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRnVuY3Rpb25SZWVudHJ5V2F0
Y2hwb2ludCwgT3BJbmZvKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2
aXNpb24gMTc1NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogCiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7
CiAgICAgICAgIC8vIFdlIGRvbid0IGNvbXBpbGUgJ2NhdGNoJyBvciAnd2l0aCcsIHNvIHRoZXJl
J3Mgbm8gcG9pbnQgaW4gY29tcGlsaW5nIHZhcmlhYmxlIHJlc29sdXRpb24gd2l0aGluIHRoZW0u
Ci0gICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKHBj
WzNdLnUub3BlcmFuZCkudHlwZSgpOworICAgICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9
IFJlc29sdmVNb2RlQW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpLnR5cGUoKTsKICAgICAgICAgaWYg
KHJlc29sdmVUeXBlID09IER5bmFtaWMpCiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGls
ZTsKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJl
dmlzaW9uIDE3NTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNSw4ICs2MjUsOCBAQCB2b2lkIEpJ
VDo6ZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGJvCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNv
bHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRz
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgUmVzb2x2ZVR5cGUgcmVz
b2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCk7Ci0gICAgdW5zaWduZWQgZGVwdGggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kOworICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgIHVuc2lnbmVk
IGRlcHRoID0gY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZDsKIAogICAgIHN3aXRjaCAo
cmVzb2x2ZVR5cGUpIHsKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgpAQCAtNjUzLDEzICs2NTMs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBpbnQgZHN0
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBSZXNvbHZlVHlwZSByZXNv
bHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKTsKKyAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJl
c29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogICAgIGlmIChy
ZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIg
fHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwotICAgIGludDMyX3QgaW5kZW50aWZpZXJJbmRleCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50MzJfdCBpbmRlbnRpZmllckluZGV4ID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblJlc29sdmVTY29wZSwgZHN0LCBpbmRlbnRpZmllckluZGV4KTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlz
aW9uIDE3NTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDIsOCArNjAyLDggQEAgdm9pZCBKSVQ6OmVtaXRS
ZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBibwogdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBl
ID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpOwotICAgIHVuc2lnbmVkIGRlcHRoID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZDsKKyAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBl
PihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICB1bnNpZ25lZCBkZXB0aCA9
IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7CiAKICAgICBzd2l0Y2ggKHJlc29sdmVU
eXBlKSB7CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKQEAgLTYyOSwxMyArNjI5LDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3QKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgaW50IGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlw
ZT4oY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKICAgICBpZiAocmVzb2x2ZVR5
cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29s
dmVUeXBlID09IENsb3N1cmVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKLSAgICBpbnQzMl90IGluZGVudGlmaWVySW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOworICAgIGludDMyX3QgaW5kZW50aWZpZXJJbmRleCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZXNv
bHZlU2NvcGUsIGRzdCwgaW5kZW50aWZpZXJJbmRleCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTc1NDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM1NSw3ICsxMzU1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2hhbmRsZV9leAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVf
c2NvcGUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpOwogICAgIExMSU5UX1JFVFVSTihKU1Njb3BlOjpyZXNvbHZlKGV4ZWMs
IGV4ZWMtPnNjb3BlKCksIGlkZW50KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZp
c2lvbiAxNzU0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjE1OSw3ICsyMTU5LDcgQEAgZW5k
CiAKIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCi0g
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDQsIHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
big1LCB0MikKIAogICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQw
CiAgICAgYnRpeiB0MiwgLnJlc29sdmVTY29wZUxvb3BFbmQKQEAgLTIxNzgsNDQgKzIxNzgsNDQg
QEAgZW5kCiAKIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDQsIHQwKQogCiAjckdsb2JhbFByb3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9w
ZXJ0eSwgLnJHbG9iYWxWYXIKICAgICBnZXRHbG9iYWxPYmplY3QoMSkKLSAgICBkaXNwYXRjaCg2
KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yR2xvYmFsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxW
YXIsIC5yQ2xvc3VyZVZhcgogICAgIGdldEdsb2JhbE9iamVjdCgxKQotICAgIGRpc3BhdGNoKDYp
CisgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJl
VmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHJlc29sdmVT
Y29wZSgpCi0gICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MK
ICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCiAgICAgZ2V0R2xvYmFsT2JqZWN0KDEp
Ci0gICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rp
b25DaGVjayguckR5bmFtaWMpCiAgICAgZ2V0R2xvYmFsT2JqZWN0KDEpCi0gICAgZGlzcGF0Y2go
NikKKyAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJEeW5h
bWljCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQogICAgIHJlc29sdmVTY29wZSgp
Ci0gICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckR5bmFtaWM6CiAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV9zY29wZSkKLSAgICBkaXNwYXRjaCg2
KQorICAgIGRpc3BhdGNoKDcpCiAKIAogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVy
YW5kLCBzbG93UGF0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNzU0MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTk5Miw3ICsxOTkyLDcgQEAgZW5kCiAKIG1hY3JvIHJlc29sdmVTY29wZSgp
CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDQsIHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKICAgICBsb2FkcCBTY29w
ZUNoYWluW2Nmcl0sIHQwCiAgICAgYnRpeiB0MiwgLnJlc29sdmVTY29wZUxvb3BFbmQKIApAQCAt
MjAwOSw0NCArMjAwOSw0NCBAQCBlbmQKIAogX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDApCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmlu
ZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZhcgogICAgIGdldEdsb2JhbE9iamVjdCgx
KQotICAgIGRpc3BhdGNoKDYpCisgICAgZGlzcGF0Y2goNykKIAogLnJHbG9iYWxWYXI6CiAgICAg
YmluZXEgdDAsIEdsb2JhbFZhciwgLnJDbG9zdXJlVmFyCiAgICAgZ2V0R2xvYmFsT2JqZWN0KDEp
Ci0gICAgZGlzcGF0Y2goNikKKyAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6CiAgICAg
YmluZXEgdDAsIENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzCiAgICAgcmVzb2x2ZVNjb3BlKCkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcp
CiAKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQw
LCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKICAgICBn
ZXRHbG9iYWxPYmplY3QoMSkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5y
R2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKICAgICBnZXRHbG9iYWxPYmplY3Qo
MSkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzLCAuckR5bmFtaWMKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCiAg
ICAgcmVzb2x2ZVNjb3BlKCkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDcpCiAKIC5y
RHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3Bl
KQotICAgIGRpc3BhdGNoKDYpCisgICAgZGlzcGF0Y2goNykKIAogCiBtYWNybyBsb2FkV2l0aFN0
cnVjdHVyZUNoZWNrKG9wZXJhbmQsIHNsb3dQYXRoKQo=
</data>
<flag name="review"
          id="265598"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>