<?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>169591</bug_id>
          
          <creation_ts>2017-03-14 00:03:03 -0700</creation_ts>
          <short_desc>Adapt CARingBuffer to be usable across processes</short_desc>
          <delta_ts>2017-03-14 13:46:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>169609</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>achristensen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1287534</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-03-14 00:03:03 -0700</bug_when>
    <thetext>Adapt CARingBuffer to be usable across processes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287535</commentid>
    <comment_count>1</comment_count>
      <attachid>304361</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-03-14 00:12:51 -0700</bug_when>
    <thetext>Created attachment 304361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287536</commentid>
    <comment_count>2</comment_count>
      <attachid>304362</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-03-14 00:16:15 -0700</bug_when>
    <thetext>Created attachment 304362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287675</commentid>
    <comment_count>3</comment_count>
      <attachid>304362</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-14 10:51:12 -0700</bug_when>
    <thetext>Comment on attachment 304362
Patch

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

&gt; Source/WebCore/platform/audio/mac/CARingBuffer.h:96
&gt; +    std::unique_ptr&lt;CARingBufferStorage&gt; m_buffers;

This is what UniqueRef is for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287776</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-03-14 13:46:01 -0700</bug_when>
    <thetext>Committed r213935: &lt;http://trac.webkit.org/changeset/213935&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304361</attachid>
            <date>2017-03-14 00:12:51 -0700</date>
            <delta_ts>2017-03-14 00:16:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169591-20170314001250.patch</filename>
            <type>text/plain</type>
            <size>20517</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE5YmMxZGEyZDNjZjFi
NmRiMzdhNzUzODNlYTlkYWUxY2NmOTU5Yi4uMDc1MTg5MzlmODQzZThmZDA3MWNjYWQ0NzU1NTBh
MTNjMjI3Y2VlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTAzLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkYXB0IENBUmluZ0J1ZmZl
ciB0byBiZSB1c2FibGUgYWNyb3NzIHByb2Nlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB1c2VkIHdpdGggYSBTaGFyZWRNZW1vcnkgYmFj
a2luZyBzdG9yZSwgc3RvcmluZyB0aGUgcG9pbnRlcnMgdG8gY2hhbm5lbCBkYXRhIGF0IHRoZSBi
ZWdpbm5pbmcKKyAgICAgICAgb2YgdGhlIGNoYW5uZWwgZGF0YSBpdHNlbGYgaXMgcHJvYmxlbWF0
aWM6IHdoZW4gdGhlIFNoYXJlZE1lbW9yeSBpcyBtYXBwZWQgb24gdGhlIGZhciBzaWRlIG9mIHRo
ZQorICAgICAgICBwcm9jZXNzIGJvdW5kYXJ5LCBpdCB3aWxsIG5vdCBleGlzdCBhdCB0aGUgc2Ft
ZSBtZW1vcnkgbG9jYXRpb24gYXMgaXQgZGlkIG9uIHRoZSBuZWFyIHNpZGUuIEluc3RlYWQKKyAg
ICAgICAgb2Ygc3RvcmluZyB0aGVzZSBwb2ludGVycyBpbnNpZGUgdGhlIGNoYW5uZWwgZGF0YSwg
c3RvcmUgdGhlbSBpbiBhIHNtYWxsICh1c3VhbGx5IDEgb3IgMiBlbnRyeSkgdmVjdG9yCisgICAg
ICAgIHJlY3JlYXRlZCB3aGVuIHRoZSBiYWNraW5nIHN0b3JlIGlzIChyZS0pYWxsb2NhdGVkLgor
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OkNBUmluZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQVJpbmdCdWZmZXI6OmFsbG9jYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZl
cjo6ZGVhbGxvY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpaZXJvUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmVBQkwpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hBQkwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQVJp
bmdCdWZmZXI6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpDQVJp
bmdCdWZmZXI6OmZldGNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmg6CisKIDIwMTctMDMtMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSBjbGFzc2VzIHVzZWQgYnkgTWVkaWEgU3RyZWFtIGVuY29kZS9kZWNvZGUg
ZnJpZW5kbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMzViM2NiZjQwNGFkMGZmZGQyZTk0YTUyNDMwYzExNTEw
ZTdlZDM5Li5jNzMwMGFiNzVjYzIyMDFmZjhjYjg0N2MxZGM5YTY3MDlmOTU4NDgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMDMtMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgQ0FSaW5nQnVmZmVyIHRvIGJlIHVzYWJsZSBhY3Jv
c3MgcHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjk1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBuZXcgY2xhc3Mgd2hpY2ggd3JhcHMgYSBTaGFyZWRNZW1vcnkgb2JqZWN0IGFu
ZCB1c2VzIHRoYXQgc2hhcmVkIG1lbW9yeSBhcyB0aGUKKyAgICAgICAgYmFja2luZyBzdG9yZSBv
ZiBhIENBUmluZ0J1ZmZlci4gVGhpcyBiYWNraW5nIHN0b3JlIGNhbiBiZSBzZXQgdG8gInJlYWQg
b25seSIsIHdoaWNoCisgICAgICAgIHByZXZlbnRzIHRoZSBiYWNraW5nIGZyb20gYmVpbmcgZGUt
IG9yIHJlLWFsbG9jYXRlZC4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVy
U3RvcmFnZTo6c2V0U3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlOjpzZXRSZWFkT25seSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlOjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlOjpkZWFsbG9jYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OlNo
YXJlZFJpbmdCdWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2U6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVy
U3RvcmFnZTo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlOjpyZWFkT25seSk6CisKIDIwMTctMDMtMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBjbGFzc2VzIHVzZWQgYnkgTWVkaWEgU3RyZWFtIGVuY29k
ZS9kZWNvZGUgZnJpZW5kbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMzBhOGM0MDM0ZmY4ZWNlZjU2NDQ2Y2M0YTY3NWQw
MjE5ODZjNDljMi4uMjFkYTVmYmIwYTkyYjllOWI4Zjc4YmQwMzk3NTFmOTc1OGM0MGZiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5j
cHAKQEAgLTM5LDM3ICszOSwzNyBAQCBjb25zdCB1aW50MzJfdCBrR2VuZXJhbFJpbmdUaW1lQm91
bmRzUXVldWVNYXNrID0ga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlU2l6ZQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDQVJpbmdCdWZmZXI6OkNBUmluZ0J1ZmZlcigpCi0gICAgOiBtX3RpbWVC
b3VuZHNRdWV1ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQorICAgIDogbV9idWZm
ZXJzKHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcj4oKSkKKyAgICAs
IG1fdGltZUJvdW5kc1F1ZXVlKGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZVNpemUpCiB7CiB9
CiAKLXZvaWQgQ0FSaW5nQnVmZmVyOjphbGxvY2F0ZShjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCitDQVJpbmdCdWZmZXI6OkNBUmluZ0J1
ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8Q0FSaW5nQnVmZmVyU3RvcmFnZT4mJiBzdG9yYWdlKQorICAg
IDogbV9idWZmZXJzKFdURk1vdmUoc3RvcmFnZSkpCisgICAgLCBtX3RpbWVCb3VuZHNRdWV1ZShr
R2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQogewotICAgIG1fZGVzY3JpcHRpb24gPSBm
b3JtYXQ7Ci0gICAgYWxsb2NhdGUoZm9ybWF0Lm51bWJlck9mQ2hhbm5lbFN0cmVhbXMoKSwgZm9y
bWF0LmJ5dGVzUGVyRnJhbWUoKSwgZnJhbWVDb3VudCk7CiB9CiAKLXZvaWQgQ0FSaW5nQnVmZmVy
OjphbGxvY2F0ZSh1aW50MzJfdCBjaGFubmVsQ291bnQsIHNpemVfdCBieXRlc1BlckZyYW1lLCBz
aXplX3QgZnJhbWVDb3VudCkKK3ZvaWQgQ0FSaW5nQnVmZmVyOjphbGxvY2F0ZShjb25zdCBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCiB7CisgICAg
bV9kZXNjcmlwdGlvbiA9IGZvcm1hdDsKICAgICBkZWFsbG9jYXRlKCk7CiAKICAgICBmcmFtZUNv
dW50ID0gV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKGZyYW1lQ291bnQpOwogCi0gICAgbV9jaGFu
bmVsQ291bnQgPSBjaGFubmVsQ291bnQ7Ci0gICAgbV9ieXRlc1BlckZyYW1lID0gYnl0ZXNQZXJG
cmFtZTsKKyAgICBtX2NoYW5uZWxDb3VudCA9IGZvcm1hdC5udW1iZXJPZkNoYW5uZWxTdHJlYW1z
KCk7CisgICAgbV9ieXRlc1BlckZyYW1lID0gZm9ybWF0LmJ5dGVzUGVyRnJhbWUoKTsKICAgICBt
X2ZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgIG1fZnJhbWVDb3VudE1hc2sgPSBmcmFtZUNv
dW50IC0gMTsKLSAgICBtX2NhcGFjaXR5Qnl0ZXMgPSBieXRlc1BlckZyYW1lICogZnJhbWVDb3Vu
dDsKKyAgICBtX2NhcGFjaXR5Qnl0ZXMgPSBtX2J5dGVzUGVyRnJhbWUgKiBmcmFtZUNvdW50Owog
Ci0gICAgc2l6ZV90IHBvaW50ZXJzU2l6ZSA9IGNoYW5uZWxDb3VudCAqIHNpemVvZihCeXRlKik7
Ci0gICAgc2l6ZV90IGFsbG9jU2l6ZSA9IHBvaW50ZXJzU2l6ZSArIChtX2NhcGFjaXR5Qnl0ZXMg
KiBjaGFubmVsQ291bnQpOwotICAgIG1fYnVmZmVycyA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYWxs
b2NTaXplLCAxKTsKKyAgICBtX2J1ZmZlcnMtPmFsbG9jYXRlKG1fY2FwYWNpdHlCeXRlcyAqIG1f
Y2hhbm5lbENvdW50KTsKIAotICAgIEJ5dGUqKiBwb2ludGVycyA9IHN0YXRpY19jYXN0PEJ5dGUq
Kj4obV9idWZmZXJzLT5kYXRhKCkpOwotICAgIEJ5dGUqIGNoYW5uZWxEYXRhID0gc3RhdGljX2Nh
c3Q8Qnl0ZSo+KG1fYnVmZmVycy0+ZGF0YSgpKSArIHBvaW50ZXJzU2l6ZTsKKyAgICBtX3BvaW50
ZXJzLnJlc2l6ZShtX2NoYW5uZWxDb3VudCk7CisgICAgQnl0ZSogY2hhbm5lbERhdGEgPSBzdGF0
aWNfY2FzdDxCeXRlKj4obV9idWZmZXJzLT5kYXRhKCkpOwogCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNoYW5uZWxDb3VudDsgKytpKSB7Ci0gICAgICAgIHBvaW50ZXJzW2ldID0gY2hh
bm5lbERhdGE7CisgICAgZm9yIChhdXRvJiBwb2ludGVyIDogbV9wb2ludGVycykgeworICAgICAg
ICBwb2ludGVyID0gY2hhbm5lbERhdGE7CiAgICAgICAgIGNoYW5uZWxEYXRhICs9IG1fY2FwYWNp
dHlCeXRlczsKICAgICB9CiAKQEAgLTc4LDY4ICs3OCw2NCBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6
YWxsb2NhdGUodWludDMyX3QgY2hhbm5lbENvdW50LCBzaXplX3QgYnl0ZXNQZXJGcmFtZSwgc2l6
ZV90CiAKIHZvaWQgQ0FSaW5nQnVmZmVyOjpkZWFsbG9jYXRlKCkKIHsKLSAgICBpZiAobV9idWZm
ZXJzKQotICAgICAgICBtX2J1ZmZlcnMgPSBudWxscHRyOwotCisgICAgbV9idWZmZXJzLT5kZWFs
bG9jYXRlKCk7CisgICAgbV9wb2ludGVycy5jbGVhcigpOwogICAgIG1fY2hhbm5lbENvdW50ID0g
MDsKICAgICBtX2NhcGFjaXR5Qnl0ZXMgPSAwOwogICAgIG1fZnJhbWVDb3VudCA9IDA7CiB9CiAK
LXN0YXRpYyB2b2lkIFplcm9SYW5nZShCeXRlKiogYnVmZmVycywgaW50IGNoYW5uZWxDb3VudCwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IG5ieXRlcykKK3N0YXRpYyB2b2lkIFplcm9SYW5nZShWZWN0
b3I8Qnl0ZSo+JiBwb2ludGVycywgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG5ieXRlcykKIHsKLSAg
ICB3aGlsZSAoLS1jaGFubmVsQ291bnQgPj0gMCkgewotICAgICAgICBtZW1zZXQoKmJ1ZmZlcnMg
KyBvZmZzZXQsIDAsIG5ieXRlcyk7Ci0gICAgICAgICsrYnVmZmVyczsKLSAgICB9CisgICAgZm9y
IChhdXRvJiBwb2ludGVyIDogcG9pbnRlcnMpCisgICAgICAgIG1lbXNldChwb2ludGVyICsgb2Zm
c2V0LCAwLCBuYnl0ZXMpOwogfQogCi1zdGF0aWMgdm9pZCBTdG9yZUFCTChCeXRlKiogYnVmZmVy
cywgc2l6ZV90IGRlc3RPZmZzZXQsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90
IHNyY09mZnNldCwgc2l6ZV90IG5ieXRlcykKK3N0YXRpYyB2b2lkIFN0b3JlQUJMKFZlY3RvcjxC
eXRlKj4mIHBvaW50ZXJzLCBzaXplX3QgZGVzdE9mZnNldCwgY29uc3QgQXVkaW9CdWZmZXJMaXN0
KiBsaXN0LCBzaXplX3Qgc3JjT2Zmc2V0LCBzaXplX3QgbmJ5dGVzKQogewotICAgIGludCBjaGFu
bmVsQ291bnQgPSBsaXN0LT5tTnVtYmVyQnVmZmVyczsKKyAgICBBU1NFUlQobGlzdC0+bU51bWJl
ckJ1ZmZlcnMgPT0gcG9pbnRlcnMuc2l6ZSgpKTsKICAgICBjb25zdCBBdWRpb0J1ZmZlciogc3Jj
ID0gbGlzdC0+bUJ1ZmZlcnM7Ci0gICAgd2hpbGUgKC0tY2hhbm5lbENvdW50ID49IDApIHsKKyAg
ICBmb3IgKGF1dG8mIHBvaW50ZXIgOiBwb2ludGVycykgewogICAgICAgICBpZiAoc3JjT2Zmc2V0
ID4gc3JjLT5tRGF0YUJ5dGVTaXplKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1l
bWNweSgqYnVmZmVycyArIGRlc3RPZmZzZXQsIHN0YXRpY19jYXN0PEJ5dGUqPihzcmMtPm1EYXRh
KSArIHNyY09mZnNldCwgc3RkOjptaW48c2l6ZV90PihuYnl0ZXMsIHNyYy0+bURhdGFCeXRlU2l6
ZSAtIHNyY09mZnNldCkpOwotICAgICAgICArK2J1ZmZlcnM7CisgICAgICAgIG1lbWNweShwb2lu
dGVyICsgZGVzdE9mZnNldCwgc3RhdGljX2Nhc3Q8Qnl0ZSo+KHNyYy0+bURhdGEpICsgc3JjT2Zm
c2V0LCBzdGQ6Om1pbjxzaXplX3Q+KG5ieXRlcywgc3JjLT5tRGF0YUJ5dGVTaXplIC0gc3JjT2Zm
c2V0KSk7CiAgICAgICAgICsrc3JjOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgRmV0Y2hBQkwo
QXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgZGVzdE9mZnNldCwgQnl0ZSoqIGJ1ZmZlcnMs
IHNpemVfdCBzcmNPZmZzZXQsIHNpemVfdCBuYnl0ZXMsIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb246
OlBDTUZvcm1hdCBmb3JtYXQsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlIG1vZGUpCitzdGF0aWMg
dm9pZCBGZXRjaEFCTChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBkZXN0T2Zmc2V0LCBW
ZWN0b3I8Qnl0ZSo+JiBwb2ludGVycywgc2l6ZV90IHNyY09mZnNldCwgc2l6ZV90IG5ieXRlcywg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6UENNRm9ybWF0IGZvcm1hdCwgQ0FSaW5nQnVmZmVyOjpG
ZXRjaE1vZGUgbW9kZSkKIHsKLSAgICBpbnQgY2hhbm5lbENvdW50ID0gbGlzdC0+bU51bWJlckJ1
ZmZlcnM7CisgICAgQVNTRVJUKGxpc3QtPm1OdW1iZXJCdWZmZXJzID09IHBvaW50ZXJzLnNpemUo
KSk7CiAgICAgQXVkaW9CdWZmZXIqIGRlc3QgPSBsaXN0LT5tQnVmZmVyczsKLSAgICB3aGlsZSAo
LS1jaGFubmVsQ291bnQgPj0gMCkgeworICAgIGZvciAoYXV0byYgcG9pbnRlciA6IHBvaW50ZXJz
KSB7CiAgICAgICAgIGlmIChkZXN0T2Zmc2V0ID4gZGVzdC0+bURhdGFCeXRlU2l6ZSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIG5ieXRlcyA9IHN0ZDo6bWluPHNpemVfdD4obmJ5
dGVzLCBkZXN0LT5tRGF0YUJ5dGVTaXplIC0gZGVzdE9mZnNldCk7CiAgICAgICAgIGlmIChtb2Rl
ID09IENBUmluZ0J1ZmZlcjo6Q29weSkKLSAgICAgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxC
eXRlKj4oZGVzdC0+bURhdGEpICsgZGVzdE9mZnNldCwgKmJ1ZmZlcnMgKyBzcmNPZmZzZXQsIG5i
eXRlcyk7CisgICAgICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Qnl0ZSo+KGRlc3QtPm1EYXRh
KSArIGRlc3RPZmZzZXQsIHBvaW50ZXIgKyBzcmNPZmZzZXQsIG5ieXRlcyk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAgICAgICAgIGNhc2UgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjo6SW50MTY6IHsKICAgICAgICAgICAgICAgICBpbnQxNl90KiBk
ZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGludDE2X3QqPihkZXN0LT5tRGF0YSk7Ci0gICAgICAg
ICAgICAgICAgaW50MTZfdCogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxpbnQxNl90Kj4oKmJ1
ZmZlcnMgKyBzcmNPZmZzZXQpOworICAgICAgICAgICAgICAgIGludDE2X3QqIHNvdXJjZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50MTZfdCo+KHBvaW50ZXIgKyBzcmNPZmZzZXQpOwogICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmJ5dGVzIC8gc2l6ZW9mKGludDE2X3QpOyBp
KyspCiAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldICs9IHNvdXJjZVtpXTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjo6SW50MzI6IHsKICAgICAgICAgICAgICAgICBpbnQzMl90KiBk
ZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGludDMyX3QqPihkZXN0LT5tRGF0YSk7Ci0gICAgICAg
ICAgICAgICAgdkRTUF92YWRkaShkZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxpbnQz
Ml90Kj4oKmJ1ZmZlcnMgKyBzcmNPZmZzZXQpLCAxLCBkZXN0aW5hdGlvbiwgMSwgbmJ5dGVzIC8g
c2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgICAgICAgICB2RFNQX3ZhZGRpKGRlc3RpbmF0aW9u
LCAxLCByZWludGVycHJldF9jYXN0PGludDMyX3QqPihwb2ludGVyICsgc3JjT2Zmc2V0KSwgMSwg
ZGVzdGluYXRpb24sIDEsIG5ieXRlcyAvIHNpemVvZihpbnQzMl90KSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb246OkZsb2F0MzI6IHsKICAgICAgICAgICAgICAgICBmbG9hdCogZGVzdGluYXRpb24g
PSBzdGF0aWNfY2FzdDxmbG9hdCo+KGRlc3QtPm1EYXRhKTsKLSAgICAgICAgICAgICAgICB2RFNQ
X3ZhZGQoZGVzdGluYXRpb24sIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPigqYnVmZmVycyAr
IHNyY09mZnNldCksIDEsIGRlc3RpbmF0aW9uLCAxLCBuYnl0ZXMgLyBzaXplb2YoZmxvYXQpKTsK
KyAgICAgICAgICAgICAgICB2RFNQX3ZhZGQoZGVzdGluYXRpb24sIDEsIHJlaW50ZXJwcmV0X2Nh
c3Q8ZmxvYXQqPihwb2ludGVyICsgc3JjT2Zmc2V0KSwgMSwgZGVzdGluYXRpb24sIDEsIG5ieXRl
cyAvIHNpemVvZihmbG9hdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2FzZSBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpGbG9hdDY0OiB7CiAg
ICAgICAgICAgICAgICAgZG91YmxlKiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGRvdWJsZSo+
KGRlc3QtPm1EYXRhKTsKLSAgICAgICAgICAgICAgICB2RFNQX3ZhZGREKGRlc3RpbmF0aW9uLCAx
LCByZWludGVycHJldF9jYXN0PGRvdWJsZSo+KCpidWZmZXJzICsgc3JjT2Zmc2V0KSwgMSwgZGVz
dGluYXRpb24sIDEsIG5ieXRlcyAvIHNpemVvZihkb3VibGUpKTsKKyAgICAgICAgICAgICAgICB2
RFNQX3ZhZGREKGRlc3RpbmF0aW9uLCAxLCByZWludGVycHJldF9jYXN0PGRvdWJsZSo+KHBvaW50
ZXIgKyBzcmNPZmZzZXQpLCAxLCBkZXN0aW5hdGlvbiwgMSwgbmJ5dGVzIC8gc2l6ZW9mKGRvdWJs
ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2FzZSBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpOb25lOgpAQCAtMTQ3LDcgKzE0Myw2IEBAIHN0
YXRpYyB2b2lkIEZldGNoQUJMKEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGRlc3RPZmZz
ZXQsIEJ5dGUqKiBidWZmZXJzLCBzCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgKytidWZmZXJzOwogICAgICAgICArK2Rlc3Q7CiAgICAg
fQogfQpAQCAtMjAwLDcgKzE5NSw2IEBAIENBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5nQnVmZmVy
OjpzdG9yZShjb25zdCBBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBmcmFtCiAgICAgfQog
CiAgICAgLy8gV3JpdGUgdGhlIG5ldyBmcmFtZXMuCi0gICAgQnl0ZSoqIGJ1ZmZlcnMgPSBzdGF0
aWNfY2FzdDxCeXRlKio+KG1fYnVmZmVycy0+ZGF0YSgpKTsKICAgICBzaXplX3Qgb2Zmc2V0MDsK
ICAgICBzaXplX3Qgb2Zmc2V0MTsKICAgICB1aW50NjRfdCBjdXJFbmQgPSBjdXJyZW50RW5kRnJh
bWUoKTsKQEAgLTIxMCwxMCArMjA0LDEwIEBAIENBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5nQnVm
ZmVyOjpzdG9yZShjb25zdCBBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBmcmFtCiAgICAg
ICAgIG9mZnNldDAgPSBmcmFtZU9mZnNldChjdXJFbmQpOwogICAgICAgICBvZmZzZXQxID0gZnJh
bWVPZmZzZXQoc3RhcnRGcmFtZSk7CiAgICAgICAgIGlmIChvZmZzZXQwIDwgb2Zmc2V0MSkKLSAg
ICAgICAgICAgIFplcm9SYW5nZShidWZmZXJzLCBtX2NoYW5uZWxDb3VudCwgb2Zmc2V0MCwgb2Zm
c2V0MSAtIG9mZnNldDApOworICAgICAgICAgICAgWmVyb1JhbmdlKG1fcG9pbnRlcnMsIG9mZnNl
dDAsIG9mZnNldDEgLSBvZmZzZXQwKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBaZXJv
UmFuZ2UoYnVmZmVycywgbV9jaGFubmVsQ291bnQsIG9mZnNldDAsIG1fY2FwYWNpdHlCeXRlcyAt
IG9mZnNldDApOwotICAgICAgICAgICAgWmVyb1JhbmdlKGJ1ZmZlcnMsIG1fY2hhbm5lbENvdW50
LCAwLCBvZmZzZXQxKTsKKyAgICAgICAgICAgIFplcm9SYW5nZShtX3BvaW50ZXJzLCBvZmZzZXQw
LCBtX2NhcGFjaXR5Qnl0ZXMgLSBvZmZzZXQwKTsKKyAgICAgICAgICAgIFplcm9SYW5nZShtX3Bv
aW50ZXJzLCAwLCBvZmZzZXQxKTsKICAgICAgICAgfQogICAgICAgICBvZmZzZXQwID0gb2Zmc2V0
MTsKICAgICB9IGVsc2UKQEAgLTIyMSwxMSArMjE1LDExIEBAIENBUmluZ0J1ZmZlcjo6RXJyb3Ig
Q0FSaW5nQnVmZmVyOjpzdG9yZShjb25zdCBBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBm
cmFtCiAKICAgICBvZmZzZXQxID0gZnJhbWVPZmZzZXQoZW5kRnJhbWUpOwogICAgIGlmIChvZmZz
ZXQwIDwgb2Zmc2V0MSkKLSAgICAgICAgU3RvcmVBQkwoYnVmZmVycywgb2Zmc2V0MCwgbGlzdCwg
MCwgb2Zmc2V0MSAtIG9mZnNldDApOworICAgICAgICBTdG9yZUFCTChtX3BvaW50ZXJzLCBvZmZz
ZXQwLCBsaXN0LCAwLCBvZmZzZXQxIC0gb2Zmc2V0MCk7CiAgICAgZWxzZSB7CiAgICAgICAgIHNp
emVfdCBuYnl0ZXMgPSBtX2NhcGFjaXR5Qnl0ZXMgLSBvZmZzZXQwOwotICAgICAgICBTdG9yZUFC
TChidWZmZXJzLCBvZmZzZXQwLCBsaXN0LCAwLCBuYnl0ZXMpOwotICAgICAgICBTdG9yZUFCTChi
dWZmZXJzLCAwLCBsaXN0LCBuYnl0ZXMsIG9mZnNldDEpOworICAgICAgICBTdG9yZUFCTChtX3Bv
aW50ZXJzLCBvZmZzZXQwLCBsaXN0LCAwLCBuYnl0ZXMpOworICAgICAgICBTdG9yZUFCTChtX3Bv
aW50ZXJzLCAwLCBsaXN0LCBuYnl0ZXMsIG9mZnNldDEpOwogICAgIH0KIAogICAgIC8vIE5vdyB1
cGRhdGUgdGhlIGVuZCB0aW1lLgpAQCAtMjQ4LDcgKzI0Miw2IEBAIHZvaWQgQ0FSaW5nQnVmZmVy
OjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50NjRfdCBlbmRU
aW1lKQogCiB2b2lkIENBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90
ICZzdGFydFRpbWUsIHVpbnQ2NF90ICZlbmRUaW1lKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fY3VycmVudEZyYW1lQm91bmRzTG9jayk7CiAgICAgdWludDMyX3QgY3VyUHRyID0gbV90aW1l
Qm91bmRzUXVldWVQdHIubG9hZCgpOwogICAgIHVpbnQzMl90IGluZGV4ID0gY3VyUHRyICYga0dl
bmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFzazsKICAgICBDQVJpbmdCdWZmZXI6OlRpbWVCb3Vu
ZHMmIGJvdW5kcyA9IG1fdGltZUJvdW5kc1F1ZXVlW2luZGV4XTsKQEAgLTMxNiwxOSArMzA5LDE4
IEBAIENBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5nQnVmZmVyOjpmZXRjaChBdWRpb0J1ZmZlckxp
c3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1CiAgICAgaWYgKGRlc3RFbmRTaXplID4gMCkKICAg
ICAgICAgWmVyb0FCTChsaXN0LCBkZXN0U3RhcnRCeXRlT2Zmc2V0ICsgYnl0ZVNpemUsIGRlc3RF
bmRTaXplICogbV9ieXRlc1BlckZyYW1lKTsKIAotICAgIEJ5dGUgKipidWZmZXJzID0gc3RhdGlj
X2Nhc3Q8Qnl0ZSoqPihtX2J1ZmZlcnMtPmRhdGEoKSk7CiAgICAgc2l6ZV90IG9mZnNldDAgPSBm
cmFtZU9mZnNldChzdGFydFJlYWQpOwogICAgIHNpemVfdCBvZmZzZXQxID0gZnJhbWVPZmZzZXQo
ZW5kUmVhZCk7CiAgICAgc2l6ZV90IG5ieXRlczsKICAgICAKICAgICBpZiAob2Zmc2V0MCA8IG9m
ZnNldDEpIHsKICAgICAgICAgbmJ5dGVzID0gb2Zmc2V0MSAtIG9mZnNldDA7Ci0gICAgICAgIEZl
dGNoQUJMKGxpc3QsIGRlc3RTdGFydEJ5dGVPZmZzZXQsIGJ1ZmZlcnMsIG9mZnNldDAsIG5ieXRl
cywgbV9kZXNjcmlwdGlvbi5mb3JtYXQoKSwgbW9kZSk7CisgICAgICAgIEZldGNoQUJMKGxpc3Qs
IGRlc3RTdGFydEJ5dGVPZmZzZXQsIG1fcG9pbnRlcnMsIG9mZnNldDAsIG5ieXRlcywgbV9kZXNj
cmlwdGlvbi5mb3JtYXQoKSwgbW9kZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbmJ5dGVzID0g
bV9jYXBhY2l0eUJ5dGVzIC0gb2Zmc2V0MDsKLSAgICAgICAgRmV0Y2hBQkwobGlzdCwgZGVzdFN0
YXJ0Qnl0ZU9mZnNldCwgYnVmZmVycywgb2Zmc2V0MCwgbmJ5dGVzLCBtX2Rlc2NyaXB0aW9uLmZv
cm1hdCgpLCBtb2RlKTsKKyAgICAgICAgRmV0Y2hBQkwobGlzdCwgZGVzdFN0YXJ0Qnl0ZU9mZnNl
dCwgbV9wb2ludGVycywgb2Zmc2V0MCwgbmJ5dGVzLCBtX2Rlc2NyaXB0aW9uLmZvcm1hdCgpLCBt
b2RlKTsKICAgICAgICAgaWYgKG9mZnNldDEpCi0gICAgICAgICAgICBGZXRjaEFCTChsaXN0LCBk
ZXN0U3RhcnRCeXRlT2Zmc2V0ICsgbmJ5dGVzLCBidWZmZXJzLCAwLCBvZmZzZXQxLCBtX2Rlc2Ny
aXB0aW9uLmZvcm1hdCgpLCBtb2RlKTsKKyAgICAgICAgICAgIEZldGNoQUJMKGxpc3QsIGRlc3RT
dGFydEJ5dGVPZmZzZXQgKyBuYnl0ZXMsIG1fcG9pbnRlcnMsIDAsIG9mZnNldDEsIG1fZGVzY3Jp
cHRpb24uZm9ybWF0KCksIG1vZGUpOwogICAgICAgICBuYnl0ZXMgKz0gb2Zmc2V0MTsKICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FS
aW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmgKaW5kZXggYWFkZjFkODRlMmQwMzY4OWU4M2Q4Y2ViMWQxNzgyYjcxNGQxZjFkNi4uOTE1
ODJlZDE1MWQ0NTY2YTEzYTZlYzRhNTI3ZTgxMTYyZmFlZWJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaApAQCAtMzcsOSArMzcsMjkg
QEAgdHlwZWRlZiBzdHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5DQVJpbmdCdWZmZXJTdG9yYWdlKCkgPSBkZWZhdWx0OworICAgIHZpcnR1
YWwgdm9pZCBhbGxvY2F0ZShzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVhbGxvY2F0
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7Cit9OworCitjbGFzcyBDQVJp
bmdCdWZmZXJTdG9yYWdlVmVjdG9yIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3JhZ2UgeworcHVi
bGljOgorICAgIH5DQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZhdWx0OworCitwcml2
YXRlOgorICAgIHZvaWQgYWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCkgZmluYWwgeyBtX2J1ZmZl
ci5ncm93KGJ5dGVDb3VudCk7IH0KKyAgICB2b2lkIGRlYWxsb2NhdGUoKSBmaW5hbCB7IG1fYnVm
ZmVyLmNsZWFyKCk7IH0KKyAgICB2b2lkKiBkYXRhKCkgZmluYWwgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YSgpOyB9CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOworfTsKKwogY2xhc3MgQ0FS
aW5nQnVmZmVyIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDQVJpbmdCdWZmZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBDQVJpbmdCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPENBUmluZ0J1
ZmZlclN0b3JhZ2U+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5DQVJpbmdCdWZmZXIoKQogICAg
IHsKICAgICAgICAgZGVhbGxvY2F0ZSgpOwpAQCAtNjEsMjAgKzgxLDIwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCAmc3RhcnRUaW1lLCB1aW50NjRfdCAmZW5k
VGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3VuZHModWlu
dDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOwogCiAgICAgdWludDMyX3QgY2hh
bm5lbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsQ291bnQ7IH0KIAogcHJpdmF0ZToK
LSAgICB2b2lkIGFsbG9jYXRlKHVpbnQzMl90IG1fY2hhbm5lbENvdW50LCBzaXplX3QgYnl0ZXNQ
ZXJGcmFtZSwgc2l6ZV90IGZyYW1lQ291bnQpOwogICAgIHNpemVfdCBmcmFtZU9mZnNldCh1aW50
NjRfdCBmcmFtZU51bWJlcikgeyByZXR1cm4gKGZyYW1lTnVtYmVyICYgbV9mcmFtZUNvdW50TWFz
aykgKiBtX2J5dGVzUGVyRnJhbWU7IH0KIAogICAgIHZvaWQgY2xpcFRpbWVCb3VuZHModWludDY0
X3QmIHN0YXJ0UmVhZCwgdWludDY0X3QmIGVuZFJlYWQpOwogCiAgICAgdWludDY0X3QgY3VycmVu
dFN0YXJ0RnJhbWUoKSBjb25zdDsKICAgICB1aW50NjRfdCBjdXJyZW50RW5kRnJhbWUoKSBjb25z
dDsKLSAgICB2b2lkIHNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1
aW50NjRfdCBlbmRGcmFtZSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyczsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FSaW5nQnVmZmVyU3RvcmFnZT4gbV9idWZmZXJzOworICAg
IFZlY3RvcjxCeXRlKj4gbV9wb2ludGVyczsKICAgICB1aW50MzJfdCBtX2NoYW5uZWxDb3VudCB7
IDAgfTsKICAgICBzaXplX3QgbV9ieXRlc1BlckZyYW1lIHsgMCB9OwogICAgIHVpbnQzMl90IG1f
ZnJhbWVDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2Nv
YS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29j
b2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMDY5NDVlZmY3NzJi
ZTAzODM2MzhhZGM3ZDgyYmI4NzdiY2MxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaCIKKworI2lmIFVTRShNRURJQVRPT0xCT1gpCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpzZXRTdG9yYWdlKFJl
ZlB0cjxTaGFyZWRNZW1vcnk+JiYgc3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoc3RvcmFnZSB8fCAh
bV9yZWFkT25seSk7CisgICAgbV9zdG9yYWdlID0gV1RGTW92ZShzdG9yYWdlKTsKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdG9yYWdlQ2hhbmdlZChtX3N0b3JhZ2UuZ2V0
KCkpOworfQorCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpzZXRSZWFkT25seShib29s
IHJlYWRPbmx5KQoreworICAgIEFTU0VSVChtX3N0b3JhZ2UgfHwgIXJlYWRPbmx5KTsKKyAgICBt
X3JlYWRPbmx5ID0gcmVhZE9ubHk7Cit9CisKK3ZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6
OmFsbG9jYXRlKHNpemVfdCBieXRlQ291bnQpCit7CisgICAgaWYgKCFtX3JlYWRPbmx5KQorICAg
ICAgICBzZXRTdG9yYWdlKFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnl0ZUNvdW50KSk7Cit9CisK
K3ZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OmRlYWxsb2NhdGUoKQoreworICAgIGlmICgh
bV9yZWFkT25seSkKKyAgICAgICAgc2V0U3RvcmFnZShudWxscHRyKTsKK30KKwordm9pZCogU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2U6OmRhdGEoKQoreworICAgIHJldHVybiBtX3N0b3JhZ2UgPyBt
X3N0b3JhZ2UtPmRhdGEoKSA6IG51bGxwdHI7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5MzRlOTA3Zjg5N2YzN2ZlMGUwOGY5MGY2ZjE5ZTM0M2YyMGY1ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2UuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBVU0UoTUVESUFUT09MQk9YKQorCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlIDogcHVibGljIFdlYkNvcmU6OkNBUmluZ0J1ZmZl
clN0b3JhZ2UgeworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
dG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqKSA9IDA7CisgICAgfTsKKworICAgIFNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlKENsaWVudCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVu
dCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2NsaWVudCA9IG51
bGxwdHI7IH0KKworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHN0b3JhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2U7IH0KKyAgICB2b2lkIHNldFN0b3JhZ2UoUmVmUHRyPFNoYXJlZE1lbW9y
eT4mJik7CisKKyAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seTsg
fQorICAgIHZvaWQgc2V0UmVhZE9ubHkoYm9vbCk7CisKKyAgICAvLyBXZWJDb3JlOjpDQVJpbmdC
dWZmZXJTdG9yYWdlCisgICAgdm9pZCBhbGxvY2F0ZShzaXplX3QpIGZpbmFsOworICAgIHZvaWQg
ZGVhbGxvY2F0ZSgpIGZpbmFsOworICAgIHZvaWQqIGRhdGEoKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICBDbGllbnQqIG1fY2xpZW50OworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc3RvcmFn
ZTsKKyAgICBib29sIG1fcmVhZE9ubHkgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304362</attachid>
            <date>2017-03-14 00:16:15 -0700</date>
            <delta_ts>2017-03-14 10:51:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169591-20170314001614.patch</filename>
            <type>text/plain</type>
            <size>25513</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE5YmMxZGEyZDNjZjFi
NmRiMzdhNzUzODNlYTlkYWUxY2NmOTU5Yi4uMDc1MTg5MzlmODQzZThmZDA3MWNjYWQ0NzU1NTBh
MTNjMjI3Y2VlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTAzLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkYXB0IENBUmluZ0J1ZmZl
ciB0byBiZSB1c2FibGUgYWNyb3NzIHByb2Nlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB1c2VkIHdpdGggYSBTaGFyZWRNZW1vcnkgYmFj
a2luZyBzdG9yZSwgc3RvcmluZyB0aGUgcG9pbnRlcnMgdG8gY2hhbm5lbCBkYXRhIGF0IHRoZSBi
ZWdpbm5pbmcKKyAgICAgICAgb2YgdGhlIGNoYW5uZWwgZGF0YSBpdHNlbGYgaXMgcHJvYmxlbWF0
aWM6IHdoZW4gdGhlIFNoYXJlZE1lbW9yeSBpcyBtYXBwZWQgb24gdGhlIGZhciBzaWRlIG9mIHRo
ZQorICAgICAgICBwcm9jZXNzIGJvdW5kYXJ5LCBpdCB3aWxsIG5vdCBleGlzdCBhdCB0aGUgc2Ft
ZSBtZW1vcnkgbG9jYXRpb24gYXMgaXQgZGlkIG9uIHRoZSBuZWFyIHNpZGUuIEluc3RlYWQKKyAg
ICAgICAgb2Ygc3RvcmluZyB0aGVzZSBwb2ludGVycyBpbnNpZGUgdGhlIGNoYW5uZWwgZGF0YSwg
c3RvcmUgdGhlbSBpbiBhIHNtYWxsICh1c3VhbGx5IDEgb3IgMiBlbnRyeSkgdmVjdG9yCisgICAg
ICAgIHJlY3JlYXRlZCB3aGVuIHRoZSBiYWNraW5nIHN0b3JlIGlzIChyZS0pYWxsb2NhdGVkLgor
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OkNBUmluZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQVJpbmdCdWZmZXI6OmFsbG9jYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZl
cjo6ZGVhbGxvY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpaZXJvUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmVBQkwpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hBQkwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQVJp
bmdCdWZmZXI6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpDQVJp
bmdCdWZmZXI6OmZldGNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmg6CisKIDIwMTctMDMtMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSBjbGFzc2VzIHVzZWQgYnkgTWVkaWEgU3RyZWFtIGVuY29kZS9kZWNvZGUg
ZnJpZW5kbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMzViM2NiZjQwNGFkMGZmZGQyZTk0YTUyNDMwYzExNTEw
ZTdlZDM5Li40ZTg3ZTQyN2NiYmZhNjc2ODc3N2U1Njc4NGMzMjkxMjY0NGNjOGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDMtMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgQ0FSaW5nQnVmZmVyIHRvIGJlIHVzYWJsZSBhY3Jv
c3MgcHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjk1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBuZXcgY2xhc3Mgd2hpY2ggd3JhcHMgYSBTaGFyZWRNZW1vcnkgb2JqZWN0IGFu
ZCB1c2VzIHRoYXQgc2hhcmVkIG1lbW9yeSBhcyB0aGUKKyAgICAgICAgYmFja2luZyBzdG9yZSBv
ZiBhIENBUmluZ0J1ZmZlci4gVGhpcyBiYWNraW5nIHN0b3JlIGNhbiBiZSBzZXQgdG8gInJlYWQg
b25seSIsIHdoaWNoCisgICAgICAgIHByZXZlbnRzIHRoZSBiYWNraW5nIGZyb20gYmVpbmcgZGUt
IG9yIHJlLWFsbG9jYXRlZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OnNl
dFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2V0
UmVhZE9ubHkpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6YWxs
b2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGVhbGxv
Y2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpkYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OnN0
b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6cmVhZE9u
bHkpOgorCiAyMDE3LTAzLTEzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgY2xhc3NlcyB1c2VkIGJ5IE1lZGlhIFN0cmVhbSBlbmNvZGUvZGVjb2RlIGZy
aWVuZGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FS
aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdC
dWZmZXIuY3BwCmluZGV4IDMwYThjNDAzNGZmOGVjZWY1NjQ0NmNjNGE2NzVkMDIxOTg2YzQ5YzIu
LjIxZGE1ZmJiMGE5MmI5ZTliOGY3OGJkMDM5NzUxZjk3NThjNDBmYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCkBAIC0zOSwz
NyArMzksMzcgQEAgY29uc3QgdWludDMyX3Qga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFz
ayA9IGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZVNpemUKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQ0FSaW5nQnVmZmVyOjpDQVJpbmdCdWZmZXIoKQotICAgIDogbV90aW1lQm91bmRzUXVldWUo
a0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlU2l6ZSkKKyAgICA6IG1fYnVmZmVycyhzdGQ6Om1h
a2VfdW5pcXVlPENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I+KCkpCisgICAgLCBtX3RpbWVCb3Vu
ZHNRdWV1ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQogewogfQogCi12b2lkIENB
UmluZ0J1ZmZlcjo6YWxsb2NhdGUoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3Jt
YXQsIHNpemVfdCBmcmFtZUNvdW50KQorQ0FSaW5nQnVmZmVyOjpDQVJpbmdCdWZmZXIoc3RkOjp1
bmlxdWVfcHRyPENBUmluZ0J1ZmZlclN0b3JhZ2U+JiYgc3RvcmFnZSkKKyAgICA6IG1fYnVmZmVy
cyhXVEZNb3ZlKHN0b3JhZ2UpKQorICAgICwgbV90aW1lQm91bmRzUXVldWUoa0dlbmVyYWxSaW5n
VGltZUJvdW5kc1F1ZXVlU2l6ZSkKIHsKLSAgICBtX2Rlc2NyaXB0aW9uID0gZm9ybWF0OwotICAg
IGFsbG9jYXRlKGZvcm1hdC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCksIGZvcm1hdC5ieXRlc1Bl
ckZyYW1lKCksIGZyYW1lQ291bnQpOwogfQogCi12b2lkIENBUmluZ0J1ZmZlcjo6YWxsb2NhdGUo
dWludDMyX3QgY2hhbm5lbENvdW50LCBzaXplX3QgYnl0ZXNQZXJGcmFtZSwgc2l6ZV90IGZyYW1l
Q291bnQpCit2b2lkIENBUmluZ0J1ZmZlcjo6YWxsb2NhdGUoY29uc3QgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBmb3JtYXQsIHNpemVfdCBmcmFtZUNvdW50KQogeworICAgIG1fZGVzY3JpcHRp
b24gPSBmb3JtYXQ7CiAgICAgZGVhbGxvY2F0ZSgpOwogCiAgICAgZnJhbWVDb3VudCA9IFdURjo6
cm91bmRVcFRvUG93ZXJPZlR3byhmcmFtZUNvdW50KTsKIAotICAgIG1fY2hhbm5lbENvdW50ID0g
Y2hhbm5lbENvdW50OwotICAgIG1fYnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRnJhbWU7CisgICAg
bV9jaGFubmVsQ291bnQgPSBmb3JtYXQubnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOworICAgIG1f
Ynl0ZXNQZXJGcmFtZSA9IGZvcm1hdC5ieXRlc1BlckZyYW1lKCk7CiAgICAgbV9mcmFtZUNvdW50
ID0gZnJhbWVDb3VudDsKICAgICBtX2ZyYW1lQ291bnRNYXNrID0gZnJhbWVDb3VudCAtIDE7Ci0g
ICAgbV9jYXBhY2l0eUJ5dGVzID0gYnl0ZXNQZXJGcmFtZSAqIGZyYW1lQ291bnQ7CisgICAgbV9j
YXBhY2l0eUJ5dGVzID0gbV9ieXRlc1BlckZyYW1lICogZnJhbWVDb3VudDsKIAotICAgIHNpemVf
dCBwb2ludGVyc1NpemUgPSBjaGFubmVsQ291bnQgKiBzaXplb2YoQnl0ZSopOwotICAgIHNpemVf
dCBhbGxvY1NpemUgPSBwb2ludGVyc1NpemUgKyAobV9jYXBhY2l0eUJ5dGVzICogY2hhbm5lbENv
dW50KTsKLSAgICBtX2J1ZmZlcnMgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGFsbG9jU2l6ZSwgMSk7
CisgICAgbV9idWZmZXJzLT5hbGxvY2F0ZShtX2NhcGFjaXR5Qnl0ZXMgKiBtX2NoYW5uZWxDb3Vu
dCk7CiAKLSAgICBCeXRlKiogcG9pbnRlcnMgPSBzdGF0aWNfY2FzdDxCeXRlKio+KG1fYnVmZmVy
cy0+ZGF0YSgpKTsKLSAgICBCeXRlKiBjaGFubmVsRGF0YSA9IHN0YXRpY19jYXN0PEJ5dGUqPiht
X2J1ZmZlcnMtPmRhdGEoKSkgKyBwb2ludGVyc1NpemU7CisgICAgbV9wb2ludGVycy5yZXNpemUo
bV9jaGFubmVsQ291bnQpOworICAgIEJ5dGUqIGNoYW5uZWxEYXRhID0gc3RhdGljX2Nhc3Q8Qnl0
ZSo+KG1fYnVmZmVycy0+ZGF0YSgpKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
aGFubmVsQ291bnQ7ICsraSkgewotICAgICAgICBwb2ludGVyc1tpXSA9IGNoYW5uZWxEYXRhOwor
ICAgIGZvciAoYXV0byYgcG9pbnRlciA6IG1fcG9pbnRlcnMpIHsKKyAgICAgICAgcG9pbnRlciA9
IGNoYW5uZWxEYXRhOwogICAgICAgICBjaGFubmVsRGF0YSArPSBtX2NhcGFjaXR5Qnl0ZXM7CiAg
ICAgfQogCkBAIC03OCw2OCArNzgsNjQgQEAgdm9pZCBDQVJpbmdCdWZmZXI6OmFsbG9jYXRlKHVp
bnQzMl90IGNoYW5uZWxDb3VudCwgc2l6ZV90IGJ5dGVzUGVyRnJhbWUsIHNpemVfdAogCiB2b2lk
IENBUmluZ0J1ZmZlcjo6ZGVhbGxvY2F0ZSgpCiB7Ci0gICAgaWYgKG1fYnVmZmVycykKLSAgICAg
ICAgbV9idWZmZXJzID0gbnVsbHB0cjsKLQorICAgIG1fYnVmZmVycy0+ZGVhbGxvY2F0ZSgpOwor
ICAgIG1fcG9pbnRlcnMuY2xlYXIoKTsKICAgICBtX2NoYW5uZWxDb3VudCA9IDA7CiAgICAgbV9j
YXBhY2l0eUJ5dGVzID0gMDsKICAgICBtX2ZyYW1lQ291bnQgPSAwOwogfQogCi1zdGF0aWMgdm9p
ZCBaZXJvUmFuZ2UoQnl0ZSoqIGJ1ZmZlcnMsIGludCBjaGFubmVsQ291bnQsIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBuYnl0ZXMpCitzdGF0aWMgdm9pZCBaZXJvUmFuZ2UoVmVjdG9yPEJ5dGUqPiYg
cG9pbnRlcnMsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBuYnl0ZXMpCiB7Ci0gICAgd2hpbGUgKC0t
Y2hhbm5lbENvdW50ID49IDApIHsKLSAgICAgICAgbWVtc2V0KCpidWZmZXJzICsgb2Zmc2V0LCAw
LCBuYnl0ZXMpOwotICAgICAgICArK2J1ZmZlcnM7Ci0gICAgfQorICAgIGZvciAoYXV0byYgcG9p
bnRlciA6IHBvaW50ZXJzKQorICAgICAgICBtZW1zZXQocG9pbnRlciArIG9mZnNldCwgMCwgbmJ5
dGVzKTsKIH0KIAotc3RhdGljIHZvaWQgU3RvcmVBQkwoQnl0ZSoqIGJ1ZmZlcnMsIHNpemVfdCBk
ZXN0T2Zmc2V0LCBjb25zdCBBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBzcmNPZmZzZXQs
IHNpemVfdCBuYnl0ZXMpCitzdGF0aWMgdm9pZCBTdG9yZUFCTChWZWN0b3I8Qnl0ZSo+JiBwb2lu
dGVycywgc2l6ZV90IGRlc3RPZmZzZXQsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6
ZV90IHNyY09mZnNldCwgc2l6ZV90IG5ieXRlcykKIHsKLSAgICBpbnQgY2hhbm5lbENvdW50ID0g
bGlzdC0+bU51bWJlckJ1ZmZlcnM7CisgICAgQVNTRVJUKGxpc3QtPm1OdW1iZXJCdWZmZXJzID09
IHBvaW50ZXJzLnNpemUoKSk7CiAgICAgY29uc3QgQXVkaW9CdWZmZXIqIHNyYyA9IGxpc3QtPm1C
dWZmZXJzOwotICAgIHdoaWxlICgtLWNoYW5uZWxDb3VudCA+PSAwKSB7CisgICAgZm9yIChhdXRv
JiBwb2ludGVyIDogcG9pbnRlcnMpIHsKICAgICAgICAgaWYgKHNyY09mZnNldCA+IHNyYy0+bURh
dGFCeXRlU2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtZW1jcHkoKmJ1ZmZl
cnMgKyBkZXN0T2Zmc2V0LCBzdGF0aWNfY2FzdDxCeXRlKj4oc3JjLT5tRGF0YSkgKyBzcmNPZmZz
ZXQsIHN0ZDo6bWluPHNpemVfdD4obmJ5dGVzLCBzcmMtPm1EYXRhQnl0ZVNpemUgLSBzcmNPZmZz
ZXQpKTsKLSAgICAgICAgKytidWZmZXJzOworICAgICAgICBtZW1jcHkocG9pbnRlciArIGRlc3RP
ZmZzZXQsIHN0YXRpY19jYXN0PEJ5dGUqPihzcmMtPm1EYXRhKSArIHNyY09mZnNldCwgc3RkOjpt
aW48c2l6ZV90PihuYnl0ZXMsIHNyYy0+bURhdGFCeXRlU2l6ZSAtIHNyY09mZnNldCkpOwogICAg
ICAgICArK3NyYzsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIEZldGNoQUJMKEF1ZGlvQnVmZmVy
TGlzdCogbGlzdCwgc2l6ZV90IGRlc3RPZmZzZXQsIEJ5dGUqKiBidWZmZXJzLCBzaXplX3Qgc3Jj
T2Zmc2V0LCBzaXplX3QgbmJ5dGVzLCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpQQ01Gb3JtYXQg
Zm9ybWF0LCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZSBtb2RlKQorc3RhdGljIHZvaWQgRmV0Y2hB
QkwoQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgZGVzdE9mZnNldCwgVmVjdG9yPEJ5dGUq
PiYgcG9pbnRlcnMsIHNpemVfdCBzcmNPZmZzZXQsIHNpemVfdCBuYnl0ZXMsIEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb246OlBDTUZvcm1hdCBmb3JtYXQsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlIG1v
ZGUpCiB7Ci0gICAgaW50IGNoYW5uZWxDb3VudCA9IGxpc3QtPm1OdW1iZXJCdWZmZXJzOworICAg
IEFTU0VSVChsaXN0LT5tTnVtYmVyQnVmZmVycyA9PSBwb2ludGVycy5zaXplKCkpOwogICAgIEF1
ZGlvQnVmZmVyKiBkZXN0ID0gbGlzdC0+bUJ1ZmZlcnM7Ci0gICAgd2hpbGUgKC0tY2hhbm5lbENv
dW50ID49IDApIHsKKyAgICBmb3IgKGF1dG8mIHBvaW50ZXIgOiBwb2ludGVycykgewogICAgICAg
ICBpZiAoZGVzdE9mZnNldCA+IGRlc3QtPm1EYXRhQnl0ZVNpemUpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBuYnl0ZXMgPSBzdGQ6Om1pbjxzaXplX3Q+KG5ieXRlcywgZGVzdC0+
bURhdGFCeXRlU2l6ZSAtIGRlc3RPZmZzZXQpOwogICAgICAgICBpZiAobW9kZSA9PSBDQVJpbmdC
dWZmZXI6OkNvcHkpCi0gICAgICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Qnl0ZSo+KGRlc3Qt
Pm1EYXRhKSArIGRlc3RPZmZzZXQsICpidWZmZXJzICsgc3JjT2Zmc2V0LCBuYnl0ZXMpOworICAg
ICAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PEJ5dGUqPihkZXN0LT5tRGF0YSkgKyBkZXN0T2Zm
c2V0LCBwb2ludGVyICsgc3JjT2Zmc2V0LCBuYnl0ZXMpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb246OkludDE2OiB7CiAgICAgICAgICAgICAgICAgaW50MTZfdCogZGVzdGluYXRpb24g
PSBzdGF0aWNfY2FzdDxpbnQxNl90Kj4oZGVzdC0+bURhdGEpOwotICAgICAgICAgICAgICAgIGlu
dDE2X3QqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MTZfdCo+KCpidWZmZXJzICsgc3Jj
T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpbnQxNl90KiBzb3VyY2UgPSByZWludGVycHJldF9j
YXN0PGludDE2X3QqPihwb2ludGVyICsgc3JjT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG5ieXRlcyAvIHNpemVvZihpbnQxNl90KTsgaSsrKQogICAgICAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSArPSBzb3VyY2VbaV07CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb246OkludDMyOiB7CiAgICAgICAgICAgICAgICAgaW50MzJfdCogZGVzdGluYXRpb24g
PSBzdGF0aWNfY2FzdDxpbnQzMl90Kj4oZGVzdC0+bURhdGEpOwotICAgICAgICAgICAgICAgIHZE
U1BfdmFkZGkoZGVzdGluYXRpb24sIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KCpidWZm
ZXJzICsgc3JjT2Zmc2V0KSwgMSwgZGVzdGluYXRpb24sIDEsIG5ieXRlcyAvIHNpemVvZihpbnQz
Ml90KSk7CisgICAgICAgICAgICAgICAgdkRTUF92YWRkaShkZXN0aW5hdGlvbiwgMSwgcmVpbnRl
cnByZXRfY2FzdDxpbnQzMl90Kj4ocG9pbnRlciArIHNyY09mZnNldCksIDEsIGRlc3RpbmF0aW9u
LCAxLCBuYnl0ZXMgLyBzaXplb2YoaW50MzJfdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpG
bG9hdDMyOiB7CiAgICAgICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nh
c3Q8ZmxvYXQqPihkZXN0LT5tRGF0YSk7Ci0gICAgICAgICAgICAgICAgdkRTUF92YWRkKGRlc3Rp
bmF0aW9uLCAxLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oKmJ1ZmZlcnMgKyBzcmNPZmZzZXQp
LCAxLCBkZXN0aW5hdGlvbiwgMSwgbmJ5dGVzIC8gc2l6ZW9mKGZsb2F0KSk7CisgICAgICAgICAg
ICAgICAgdkRTUF92YWRkKGRlc3RpbmF0aW9uLCAxLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4o
cG9pbnRlciArIHNyY09mZnNldCksIDEsIGRlc3RpbmF0aW9uLCAxLCBuYnl0ZXMgLyBzaXplb2Yo
ZmxvYXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6RmxvYXQ2NDogewogICAgICAgICAgICAg
ICAgIGRvdWJsZSogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxkb3VibGUqPihkZXN0LT5tRGF0
YSk7Ci0gICAgICAgICAgICAgICAgdkRTUF92YWRkRChkZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnBy
ZXRfY2FzdDxkb3VibGUqPigqYnVmZmVycyArIHNyY09mZnNldCksIDEsIGRlc3RpbmF0aW9uLCAx
LCBuYnl0ZXMgLyBzaXplb2YoZG91YmxlKSk7CisgICAgICAgICAgICAgICAgdkRTUF92YWRkRChk
ZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxkb3VibGUqPihwb2ludGVyICsgc3JjT2Zm
c2V0KSwgMSwgZGVzdGluYXRpb24sIDEsIG5ieXRlcyAvIHNpemVvZihkb3VibGUpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbjo6Tm9uZToKQEAgLTE0Nyw3ICsxNDMsNiBAQCBzdGF0aWMgdm9pZCBG
ZXRjaEFCTChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBkZXN0T2Zmc2V0LCBCeXRlKiog
YnVmZmVycywgcwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgICsrYnVmZmVyczsKICAgICAgICAgKytkZXN0OwogICAgIH0KIH0KQEAgLTIw
MCw3ICsxOTUsNiBAQCBDQVJpbmdCdWZmZXI6OkVycm9yIENBUmluZ0J1ZmZlcjo6c3RvcmUoY29u
c3QgQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgZnJhbQogICAgIH0KIAogICAgIC8vIFdy
aXRlIHRoZSBuZXcgZnJhbWVzLgotICAgIEJ5dGUqKiBidWZmZXJzID0gc3RhdGljX2Nhc3Q8Qnl0
ZSoqPihtX2J1ZmZlcnMtPmRhdGEoKSk7CiAgICAgc2l6ZV90IG9mZnNldDA7CiAgICAgc2l6ZV90
IG9mZnNldDE7CiAgICAgdWludDY0X3QgY3VyRW5kID0gY3VycmVudEVuZEZyYW1lKCk7CkBAIC0y
MTAsMTAgKzIwNCwxMCBAQCBDQVJpbmdCdWZmZXI6OkVycm9yIENBUmluZ0J1ZmZlcjo6c3RvcmUo
Y29uc3QgQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgZnJhbQogICAgICAgICBvZmZzZXQw
ID0gZnJhbWVPZmZzZXQoY3VyRW5kKTsKICAgICAgICAgb2Zmc2V0MSA9IGZyYW1lT2Zmc2V0KHN0
YXJ0RnJhbWUpOwogICAgICAgICBpZiAob2Zmc2V0MCA8IG9mZnNldDEpCi0gICAgICAgICAgICBa
ZXJvUmFuZ2UoYnVmZmVycywgbV9jaGFubmVsQ291bnQsIG9mZnNldDAsIG9mZnNldDEgLSBvZmZz
ZXQwKTsKKyAgICAgICAgICAgIFplcm9SYW5nZShtX3BvaW50ZXJzLCBvZmZzZXQwLCBvZmZzZXQx
IC0gb2Zmc2V0MCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgWmVyb1JhbmdlKGJ1ZmZl
cnMsIG1fY2hhbm5lbENvdW50LCBvZmZzZXQwLCBtX2NhcGFjaXR5Qnl0ZXMgLSBvZmZzZXQwKTsK
LSAgICAgICAgICAgIFplcm9SYW5nZShidWZmZXJzLCBtX2NoYW5uZWxDb3VudCwgMCwgb2Zmc2V0
MSk7CisgICAgICAgICAgICBaZXJvUmFuZ2UobV9wb2ludGVycywgb2Zmc2V0MCwgbV9jYXBhY2l0
eUJ5dGVzIC0gb2Zmc2V0MCk7CisgICAgICAgICAgICBaZXJvUmFuZ2UobV9wb2ludGVycywgMCwg
b2Zmc2V0MSk7CiAgICAgICAgIH0KICAgICAgICAgb2Zmc2V0MCA9IG9mZnNldDE7CiAgICAgfSBl
bHNlCkBAIC0yMjEsMTEgKzIxNSwxMSBAQCBDQVJpbmdCdWZmZXI6OkVycm9yIENBUmluZ0J1ZmZl
cjo6c3RvcmUoY29uc3QgQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgZnJhbQogCiAgICAg
b2Zmc2V0MSA9IGZyYW1lT2Zmc2V0KGVuZEZyYW1lKTsKICAgICBpZiAob2Zmc2V0MCA8IG9mZnNl
dDEpCi0gICAgICAgIFN0b3JlQUJMKGJ1ZmZlcnMsIG9mZnNldDAsIGxpc3QsIDAsIG9mZnNldDEg
LSBvZmZzZXQwKTsKKyAgICAgICAgU3RvcmVBQkwobV9wb2ludGVycywgb2Zmc2V0MCwgbGlzdCwg
MCwgb2Zmc2V0MSAtIG9mZnNldDApOwogICAgIGVsc2UgewogICAgICAgICBzaXplX3QgbmJ5dGVz
ID0gbV9jYXBhY2l0eUJ5dGVzIC0gb2Zmc2V0MDsKLSAgICAgICAgU3RvcmVBQkwoYnVmZmVycywg
b2Zmc2V0MCwgbGlzdCwgMCwgbmJ5dGVzKTsKLSAgICAgICAgU3RvcmVBQkwoYnVmZmVycywgMCwg
bGlzdCwgbmJ5dGVzLCBvZmZzZXQxKTsKKyAgICAgICAgU3RvcmVBQkwobV9wb2ludGVycywgb2Zm
c2V0MCwgbGlzdCwgMCwgbmJ5dGVzKTsKKyAgICAgICAgU3RvcmVBQkwobV9wb2ludGVycywgMCwg
bGlzdCwgbmJ5dGVzLCBvZmZzZXQxKTsKICAgICB9CiAKICAgICAvLyBOb3cgdXBkYXRlIHRoZSBl
bmQgdGltZS4KQEAgLTI0OCw3ICsyNDIsNiBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6c2V0Q3VycmVu
dEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKIAogdm9p
ZCBDQVJpbmdCdWZmZXI6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCAmc3RhcnRUaW1l
LCB1aW50NjRfdCAmZW5kVGltZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2N1cnJlbnRG
cmFtZUJvdW5kc0xvY2spOwogICAgIHVpbnQzMl90IGN1clB0ciA9IG1fdGltZUJvdW5kc1F1ZXVl
UHRyLmxvYWQoKTsKICAgICB1aW50MzJfdCBpbmRleCA9IGN1clB0ciAmIGtHZW5lcmFsUmluZ1Rp
bWVCb3VuZHNRdWV1ZU1hc2s7CiAgICAgQ0FSaW5nQnVmZmVyOjpUaW1lQm91bmRzJiBib3VuZHMg
PSBtX3RpbWVCb3VuZHNRdWV1ZVtpbmRleF07CkBAIC0zMTYsMTkgKzMwOSwxOCBAQCBDQVJpbmdC
dWZmZXI6OkVycm9yIENBUmluZ0J1ZmZlcjo6ZmV0Y2goQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBz
aXplX3QgbkZyYW1lcywgdQogICAgIGlmIChkZXN0RW5kU2l6ZSA+IDApCiAgICAgICAgIFplcm9B
QkwobGlzdCwgZGVzdFN0YXJ0Qnl0ZU9mZnNldCArIGJ5dGVTaXplLCBkZXN0RW5kU2l6ZSAqIG1f
Ynl0ZXNQZXJGcmFtZSk7CiAKLSAgICBCeXRlICoqYnVmZmVycyA9IHN0YXRpY19jYXN0PEJ5dGUq
Kj4obV9idWZmZXJzLT5kYXRhKCkpOwogICAgIHNpemVfdCBvZmZzZXQwID0gZnJhbWVPZmZzZXQo
c3RhcnRSZWFkKTsKICAgICBzaXplX3Qgb2Zmc2V0MSA9IGZyYW1lT2Zmc2V0KGVuZFJlYWQpOwog
ICAgIHNpemVfdCBuYnl0ZXM7CiAgICAgCiAgICAgaWYgKG9mZnNldDAgPCBvZmZzZXQxKSB7CiAg
ICAgICAgIG5ieXRlcyA9IG9mZnNldDEgLSBvZmZzZXQwOwotICAgICAgICBGZXRjaEFCTChsaXN0
LCBkZXN0U3RhcnRCeXRlT2Zmc2V0LCBidWZmZXJzLCBvZmZzZXQwLCBuYnl0ZXMsIG1fZGVzY3Jp
cHRpb24uZm9ybWF0KCksIG1vZGUpOworICAgICAgICBGZXRjaEFCTChsaXN0LCBkZXN0U3RhcnRC
eXRlT2Zmc2V0LCBtX3BvaW50ZXJzLCBvZmZzZXQwLCBuYnl0ZXMsIG1fZGVzY3JpcHRpb24uZm9y
bWF0KCksIG1vZGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG5ieXRlcyA9IG1fY2FwYWNpdHlC
eXRlcyAtIG9mZnNldDA7Ci0gICAgICAgIEZldGNoQUJMKGxpc3QsIGRlc3RTdGFydEJ5dGVPZmZz
ZXQsIGJ1ZmZlcnMsIG9mZnNldDAsIG5ieXRlcywgbV9kZXNjcmlwdGlvbi5mb3JtYXQoKSwgbW9k
ZSk7CisgICAgICAgIEZldGNoQUJMKGxpc3QsIGRlc3RTdGFydEJ5dGVPZmZzZXQsIG1fcG9pbnRl
cnMsIG9mZnNldDAsIG5ieXRlcywgbV9kZXNjcmlwdGlvbi5mb3JtYXQoKSwgbW9kZSk7CiAgICAg
ICAgIGlmIChvZmZzZXQxKQotICAgICAgICAgICAgRmV0Y2hBQkwobGlzdCwgZGVzdFN0YXJ0Qnl0
ZU9mZnNldCArIG5ieXRlcywgYnVmZmVycywgMCwgb2Zmc2V0MSwgbV9kZXNjcmlwdGlvbi5mb3Jt
YXQoKSwgbW9kZSk7CisgICAgICAgICAgICBGZXRjaEFCTChsaXN0LCBkZXN0U3RhcnRCeXRlT2Zm
c2V0ICsgbmJ5dGVzLCBtX3BvaW50ZXJzLCAwLCBvZmZzZXQxLCBtX2Rlc2NyaXB0aW9uLmZvcm1h
dCgpLCBtb2RlKTsKICAgICAgICAgbmJ5dGVzICs9IG9mZnNldDE7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCmluZGV4
IGFhZGYxZDg0ZTJkMDM2ODllODNkOGNlYjFkMTc4MmI3MTRkMWYxZDYuLjkxNTgyZWQxNTFkNDU2
NmExM2E2ZWM0YTUyN2U4MTE2MmZhZWViZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKQEAgLTM3LDkgKzM3LDI5IEBAIHR5cGVkZWYg
c3RydWN0IEF1ZGlvQnVmZmVyTGlzdCBBdWRpb0J1ZmZlckxpc3Q7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+Q0FSaW5nQnVmZmVyU3RvcmFnZSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWxs
b2NhdGUoc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlYWxsb2NhdGUoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkKiBkYXRhKCkgPSAwOworfTsKKworY2xhc3MgQ0FSaW5nQnVmZmVyU3Rv
cmFnZVZlY3RvciA6IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKK3B1YmxpYzoKKyAgICB+
Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICB2
b2lkIGFsbG9jYXRlKHNpemVfdCBieXRlQ291bnQpIGZpbmFsIHsgbV9idWZmZXIuZ3JvdyhieXRl
Q291bnQpOyB9CisgICAgdm9pZCBkZWFsbG9jYXRlKCkgZmluYWwgeyBtX2J1ZmZlci5jbGVhcigp
OyB9CisgICAgdm9pZCogZGF0YSgpIGZpbmFsIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQor
ICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKK307CisKIGNsYXNzIENBUmluZ0J1ZmZlciB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ0FSaW5nQnVmZmVyKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgQ0FSaW5nQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxDQVJpbmdCdWZmZXJTdG9yYWdl
PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Q0FSaW5nQnVmZmVyKCkKICAgICB7CiAgICAgICAg
IGRlYWxsb2NhdGUoKTsKQEAgLTYxLDIwICs4MSwyMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmbHVzaCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDdXJyZW50
RnJhbWVCb3VuZHModWludDY0X3QgJnN0YXJ0VGltZSwgdWludDY0X3QgJmVuZFRpbWUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKIAogICAgIHVpbnQzMl90IGNoYW5uZWxDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbENvdW50OyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBh
bGxvY2F0ZSh1aW50MzJfdCBtX2NoYW5uZWxDb3VudCwgc2l6ZV90IGJ5dGVzUGVyRnJhbWUsIHNp
emVfdCBmcmFtZUNvdW50KTsKICAgICBzaXplX3QgZnJhbWVPZmZzZXQodWludDY0X3QgZnJhbWVO
dW1iZXIpIHsgcmV0dXJuIChmcmFtZU51bWJlciAmIG1fZnJhbWVDb3VudE1hc2spICogbV9ieXRl
c1BlckZyYW1lOyB9CiAKICAgICB2b2lkIGNsaXBUaW1lQm91bmRzKHVpbnQ2NF90JiBzdGFydFJl
YWQsIHVpbnQ2NF90JiBlbmRSZWFkKTsKIAogICAgIHVpbnQ2NF90IGN1cnJlbnRTdGFydEZyYW1l
KCkgY29uc3Q7CiAgICAgdWludDY0X3QgY3VycmVudEVuZEZyYW1lKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5k
RnJhbWUpOwogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcnM7CisgICAgc3RkOjp1
bmlxdWVfcHRyPENBUmluZ0J1ZmZlclN0b3JhZ2U+IG1fYnVmZmVyczsKKyAgICBWZWN0b3I8Qnl0
ZSo+IG1fcG9pbnRlcnM7CiAgICAgdWludDMyX3QgbV9jaGFubmVsQ291bnQgeyAwIH07CiAgICAg
c2l6ZV90IG1fYnl0ZXNQZXJGcmFtZSB7IDAgfTsKICAgICB1aW50MzJfdCBtX2ZyYW1lQ291bnQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1NoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzA2OTQ1ZWZmNzcyYmUwMzgzNjM4YWRj
N2Q4MmJiODc3YmNjMTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlLmgiCisKKyNpZiBVU0UoTUVESUFUT09MQk9YKQorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2V0U3RvcmFnZShSZWZQdHI8U2hhcmVk
TWVtb3J5PiYmIHN0b3JhZ2UpCit7CisgICAgQVNTRVJUKHN0b3JhZ2UgfHwgIW1fcmVhZE9ubHkp
OworICAgIG1fc3RvcmFnZSA9IFdURk1vdmUoc3RvcmFnZSk7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+c3RvcmFnZUNoYW5nZWQobV9zdG9yYWdlLmdldCgpKTsKK30KKwor
dm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2V0UmVhZE9ubHkoYm9vbCByZWFkT25seSkK
K3sKKyAgICBBU1NFUlQobV9zdG9yYWdlIHx8ICFyZWFkT25seSk7CisgICAgbV9yZWFkT25seSA9
IHJlYWRPbmx5OworfQorCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjphbGxvY2F0ZShz
aXplX3QgYnl0ZUNvdW50KQoreworICAgIGlmICghbV9yZWFkT25seSkKKyAgICAgICAgc2V0U3Rv
cmFnZShTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ5dGVDb3VudCkpOworfQorCit2b2lkIFNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlOjpkZWFsbG9jYXRlKCkKK3sKKyAgICBpZiAoIW1fcmVhZE9ubHkp
CisgICAgICAgIHNldFN0b3JhZ2UobnVsbHB0cik7Cit9CisKK3ZvaWQqIFNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlOjpkYXRhKCkKK3sKKyAgICByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5k
YXRhKCkgOiBudWxscHRyOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
OTM0ZTkwN2Y4OTdmMzdmZTBlMDhmOTBmNmYxOWUzNDNmMjBmNWVmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKE1F
RElBVE9PTEJPWCkKKworI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0FSaW5nQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZSA6IHB1YmxpYyBXZWJDb3JlOjpDQVJpbmdCdWZmZXJTdG9yYWdlIHsK
K3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVh
bCB+Q2xpZW50KCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUNoYW5n
ZWQoU2hhcmVkTWVtb3J5KikgPSAwOworICAgIH07CisKKyAgICBTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZShDbGllbnQqIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9jbGllbnQgPSBudWxscHRyOyB9CisK
KyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
YWdlOyB9CisgICAgdm9pZCBzZXRTdG9yYWdlKFJlZlB0cjxTaGFyZWRNZW1vcnk+JiYpOworCisg
ICAgYm9vbCByZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KKyAgICB2b2lk
IHNldFJlYWRPbmx5KGJvb2wpOworCisgICAgLy8gV2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3RvcmFn
ZQorICAgIHZvaWQgYWxsb2NhdGUoc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRlYWxsb2NhdGUo
KSBmaW5hbDsKKyAgICB2b2lkKiBkYXRhKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgQ2xpZW50
KiBtX2NsaWVudDsKKyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3N0b3JhZ2U7CisgICAgYm9v
bCBtX3JlYWRPbmx5IHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODkxZDIwNWNi
MDhkNzJmNWZmMjc3MzIwMTVkZTg5ODFjNTUyYzIxYi4uMTkyM2M4NjRlMDE2MTlkOTUwYjE4ZWI1
OTUxMTliMGQwZmMxNTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg3NCw2ICsxODc0LDggQEAKIAkJQ0QwMDNBNTMxOUQ0
OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDAzQTUxMTlENDlCNUQwMDVBQkNF
MCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCUNEMTlBMjZEMUExM0U4
MkEwMDhENjUwRSAvKiBXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE5QTI2OTFBMTNFODIwMDA4RDY1
MEUgLyogV2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwICovOyB9OwogCQlDRDE5QTI2RTFB
MTNFODM0MDA4RDY1MEUgLyogV2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlBMjZBMUExM0U4MjEwMDhE
NjUwRSAvKiBXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovOyB9OworCQlDRDRCNEQ5QzFF
NzY1RTAwMDBEMjcwOTIgLyogU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0QjREOUExRTc2NUUwMDAwRDI3
MDkyIC8qIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmNwcCAqLzsgfTsKKwkJQ0Q0QjREOUQxRTc2
NUUwMDAwRDI3MDkyIC8qIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDRCNEQ5QjFFNzY1RTAwMDBEMjcwOTIg
LyogU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCAqLzsgfTsKIAkJQ0Q1QzY2QTAxMzRCOUQzODAw
NEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUUxMzRCOUQzNjAw
NEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwICovOyB9Owog
CQlDRDVDNjZBMTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q1QzY2OUYxMzRCOUQzNzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQuaCAqLzsgfTsKIAkJQ0Q2MTc4MTQxRTZERTlBMDAwRkRBNTdEIC8qIFdlYlVzZXJNZWRp
YUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENENjE3ODEyMUU2REU5QTAwMEZEQTU3RCAvKiBXZWJVc2VyTWVkaWFDbGllbnRNYWMubW0g
Ki87IH07CkBAIC00MTU1LDYgKzQxNTcsOCBAQAogCQlDRDAwM0E1MTE5RDQ5QjVEMDA1QUJDRTAg
LyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg7IHBhdGggPSBNZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QxOUEyNjkxQTEzRTgyMDAwOEQ2NTBFIC8qIFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkRpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxOUEyNkExQTEz
RTgyMTAwOEQ2NTBFIC8qIFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENEI0RDlBMUU3NjVFMDAwMEQyNzA5MiAvKiBTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENEI0RDlCMUU3NjVFMDAwMEQyNzA5MiAvKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDVDNjY5RTEzNEI5RDM2MDA0
RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVu
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1QzY2OUYxMzRCOUQz
NzAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDYxNzgxMjFFNkRFOUEwMDBG
REE1N0QgLyogV2ViVXNlck1lZGlhQ2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV2ViVXNlck1lZGlhQ2xpZW50TWFjLm1tOyBwYXRoID0gY29jb2Ev
V2ViVXNlck1lZGlhQ2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTY2MCw2ICs1NjY0LDggQEAKIAkJCQkzN0JGMkYwNTE5NDdERUI0MDA3MjNDNDggLyogV0tOU1VS
TFJlcXVlc3QubW0gKi8sCiAJCQkJMzc4RTFBM0YxODFFREEwMTAwMzEwMDdBIC8qIFdLT2JqZWN0
LmggKi8sCiAJCQkJMzc0NDM2ODcxODIwRTcyNDAwNDk1NzlGIC8qIFdLT2JqZWN0Lm1tICovLAor
CQkJCUNENEI0RDlBMUU3NjVFMDAwMEQyNzA5MiAvKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5j
cHAgKi8sCisJCQkJQ0Q0QjREOUIxRTc2NUUwMDAwRDI3MDkyIC8qIFNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNvY29hOwogCQkJcGF0aCA9IENvY29hOwpA
QCAtODM2Miw2ICs4MzY4LDcgQEAKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDEyNDM1MUU2REY2
NTIwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDRCNEQ5RDFFNzY1RTAwMDBEMjcwOTIgLyog
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0
QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDI5RUNEMDE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFERTE2NDg1OTg0MDAyOTBE
NjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovLApAQCAtMTAz
NjgsNiArMTAzNzUsNyBAQAogCQkJCTM3MTgzRDU2MTgyRjRFNzAwMDgwQzgxMSAvKiBXS05TVVJM
RXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCRjJGMDcxOTQ3REVCNDAwNzIzQzQ4IC8q
IFdLTlNVUkxSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc2MDExMjRGRjAyNzAw
NjhGMjBBIC8qIFdLTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNENEI0RDlDMUU3NjVF
MDAwMEQyNzA5MiAvKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0Q1RUJCODE3NDZBMTVCMDAwQzFDNDUgLyogV0tPYmpDVHlwZVdyYXBwZXJSZWYubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzNzQ0MzY4ODE4MjBFNzI0MDA0OTU3OUYgLyogV0tPYmplY3Qu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUNDNTBGMTFDQkMzODFEMDAzQzdEMDMgLyogV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="325893"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>