<?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>68903</bug_id>
          
          <creation_ts>2011-09-27 07:46:58 -0700</creation_ts>
          <short_desc>IndexedDB: Use LevelDB also for in-memory databases</short_desc>
          <delta_ts>2011-09-29 05:28:25 -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>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>473928</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-09-27 07:46:58 -0700</bug_when>
    <thetext>IndexedDB: Use LevelDB also for in-memory databases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473936</commentid>
    <comment_count>1</comment_count>
      <attachid>108850</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-09-27 08:06:43 -0700</bug_when>
    <thetext>Created attachment 108850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474529</commentid>
    <comment_count>2</comment_count>
      <attachid>108850</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-09-27 23:29:57 -0700</bug_when>
    <thetext>Comment on attachment 108850
Patch

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

LGTM

I&apos;m a little concerned that making our tests run in memory might mask problems that occur as a result of something in the default env implementation.  Though I suppose our browser tests would pick up some of those.

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:113
&gt; +    const String name = path.isNull() ? &quot;/in-mem-db&quot; : path;

&quot;in-mem-db&quot; isn&apos;t magic, right?  Nothing in leveldb looks for that string, it&apos;s just a dummy?

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.h:66
&gt; +    OwnPtr&lt;leveldb::Comparator&gt; m_comparatorAdapter;

Did you move this to match the order that the destructor deletes these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474639</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-09-28 03:31:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 108850 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108850&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; I&apos;m a little concerned that making our tests run in memory might mask problems that occur as a result of something in the default env implementation.  Though I suppose our browser tests would pick up some of those.

I&apos;m not too concerned about that. Like you said, the browser tests should cover it.

We should look into running leveldb&apos;s own test suite as part of chromium&apos;s tests, but that&apos;s out-of-scope for this bug.

&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:113
&gt; &gt; +    const String name = path.isNull() ? &quot;/in-mem-db&quot; : path;
&gt; 
&gt; &quot;in-mem-db&quot; isn&apos;t magic, right?  Nothing in leveldb looks for that string, it&apos;s just a dummy?

No magic, just a dummy name.

&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.h:66
&gt; &gt; +    OwnPtr&lt;leveldb::Comparator&gt; m_comparatorAdapter;
&gt; 
&gt; Did you move this to match the order that the destructor deletes these?

Yes, even though it doesn&apos;t matter because we clear them in the right order in the destructor, it bothered me to see them in the wrong order here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474676</commentid>
    <comment_count>4</comment_count>
      <attachid>108850</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-28 05:03:32 -0700</bug_when>
    <thetext>Comment on attachment 108850
Patch

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

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:110
&gt; +    if (env)

Do you need this check? What&apos;s the default value of Options::env ?

&gt;&gt;&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:113
&gt;&gt;&gt; +    const String name = path.isNull() ? &quot;/in-mem-db&quot; : path;
&gt;&gt; 
&gt;&gt; &quot;in-mem-db&quot; isn&apos;t magic, right?  Nothing in leveldb looks for that string, it&apos;s just a dummy?
&gt; 
&gt; No magic, just a dummy name.

This seems a little odd. It looks like leveldb uses Options::env to determine whether the DB should be in-memory. But here we make a decision based on path. This means we&apos;re making an implicit assumption about the values of env and path passed to this method. Can&apos;t we test env for in-memory-ness, then ASSERT(!path.isNull()) if it&apos;s not? Also, add a comment that this method ignores path if the DB is in-memory.

On a related note, why do you assign a value to path for an in memory DB? If leveldb::DB::Open() ignores it, why can&apos;t you pass NULL? At least add a comment.

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:150
&gt; +    OwnPtr&lt;LevelDBDatabase&gt; result = adoptPtr(new LevelDBDatabase);

Is there any point in using an OwnPtr here? There&apos;s only one code path and we always release it. Same applies to existing code in open() I think.

&gt; Source/WebCore/storage/IDBSQLiteBackingStore.cpp:1015
&gt; +    String path = &quot;:memory:&quot;;

Is this a magic token for SQLite? If so, I&apos;m surprised there isn&apos;t an SQLite constant for it. Probably warrants a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474711</commentid>
    <comment_count>5</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-09-28 06:35:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:110
&gt; &gt; +    if (env)
&gt; 
&gt; Do you need this check? What&apos;s the default value of Options::env ?

The default of Options::env is Env::Default(). I guess I could just pass that in explicitly.

&gt; &gt;&gt;&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:113
&gt; &gt;&gt;&gt; +    const String name = path.isNull() ? &quot;/in-mem-db&quot; : path;
&gt; &gt;&gt; 
&gt; &gt;&gt; &quot;in-mem-db&quot; isn&apos;t magic, right?  Nothing in leveldb looks for that string, it&apos;s just a dummy?
&gt; &gt; 
&gt; &gt; No magic, just a dummy name.
&gt; 
&gt; This seems a little odd. It looks like leveldb uses Options::env to determine whether the DB should be in-memory. But here we make a decision based on path. This means we&apos;re making an implicit assumption about the values of env and path passed to this method. Can&apos;t we test env for in-memory-ness, then ASSERT(!path.isNull()) if it&apos;s not? Also, add a comment that this method ignores path if the DB is in-memory.

You&apos;re right, that is weird. I think we can just scrap this line actually.

&gt; 
&gt; On a related note, why do you assign a value to path for an in memory DB? If leveldb::DB::Open() ignores it, why can&apos;t you pass NULL? At least add a comment.

Technically, it&apos;s not really ignored (it will be used as a path in the in-memory filesystem that the Env implements), but passing in an empty path works, so let&apos;s do that.

&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:150
&gt; &gt; +    OwnPtr&lt;LevelDBDatabase&gt; result = adoptPtr(new LevelDBDatabase);
&gt; 
&gt; Is there any point in using an OwnPtr here? There&apos;s only one code path and we always release it. Same applies to existing code in open() I think.

After https://bugs.webkit.org/show_bug.cgi?id=59656, I got the impression that &quot;naked new&quot; was bad, and sticking things in OwnPtr was the way to do things?

&gt; 
&gt; &gt; Source/WebCore/storage/IDBSQLiteBackingStore.cpp:1015
&gt; &gt; +    String path = &quot;:memory:&quot;;
&gt; 
&gt; Is this a magic token for SQLite? If so, I&apos;m surprised there isn&apos;t an SQLite constant for it. Probably warrants a comment.

Yes, that&apos;s a magic token for SQLite. I&apos;ll add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474712</commentid>
    <comment_count>6</comment_count>
      <attachid>109018</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-09-28 06:35:30 -0700</bug_when>
    <thetext>Created attachment 109018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475335</commentid>
    <comment_count>7</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-09-29 02:48:34 -0700</bug_when>
    <thetext>Steve, would you like to take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475347</commentid>
    <comment_count>8</comment_count>
      <attachid>109018</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-29 03:14:08 -0700</bug_when>
    <thetext>Comment on attachment 109018
Patch

&gt; After https://bugs.webkit.org/show_bug.cgi?id=59656, I got the impression that &quot;naked new&quot; was bad, and
&gt; sticking things in OwnPtr was the way to do things?
Yes, you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475383</commentid>
    <comment_count>9</comment_count>
      <attachid>109018</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 05:28:20 -0700</bug_when>
    <thetext>Comment on attachment 109018
Patch

Clearing flags on attachment: 109018

Committed r96322: &lt;http://trac.webkit.org/changeset/96322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475384</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 05:28:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108850</attachid>
            <date>2011-09-27 08:06:43 -0700</date>
            <delta_ts>2011-09-28 06:35:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68903-20110927160641.patch</filename>
            <type>text/plain</type>
            <size>14887</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYwODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MjBjOTRkNjMyNThmYWRi
ZjhmNjEyZjk1ZTAwNjhkYmU5MzQ5MzFkLi4xNzQyYjIxZWZhZGRmMjYzYWE4YTI2MmJmNjU3Njdj
NTc0MDhiNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMjcgIEhhbnMg
V2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFVzZSBM
ZXZlbERCIGFsc28gZm9yIGluLW1lbW9yeSBkYXRhYmFzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExldmVsREJEYXRhYmFzZTo6b3BlbkluTWVt
b3J5KCkgd2hpY2ggdXNlcyBsZXZlbGRiOjpOZXdNZW1FbnYoKQorICAgICAgICB0byBjcmVhdGUg
aW4tbWVtb3J5IExldmVsREIgZGF0YWJhc2VzLgorCisgICAgICAgIFVzZSB0aGlzIGluIElEQkxl
dmVMREJCYWNraW5nU3RvcmU6Om9wZW4oKSB3aGVuIHRoZSBjYWxsZXIgcGFzc2VzIGluCisgICAg
ICAgIGFuIGVtcHR5IGZpbGUgcGF0aC4KKyAgICAgICAgVGhpcyBoYXBwZW5zIGluIENocm9taXVt
J3MgaW5jb2duaXRvIG1vZGUsIGFuZCB3aGVuIHJ1bm5pbmcgbGF5b3V0CisgICAgICAgIHRlc3Rz
LgorCisgICAgICAgIEZpeCBJREJTUUxpdGVCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZUV4aXN0
cygpIHNvIGl0IGRvZXNuJ3QgY3JlYXRlCisgICAgICAgIGZpbGVzIHdoZW4gcGFzc2VkIGluIGFu
IGVtcHR5IGZpbGUgcGF0aCwgYnV0IHVzZXMgdGhlIGluLW1lbW9yeSBtb2RlCisgICAgICAgIGlu
c3RlYWQuCisKKyAgICAgICAgRXhpc3RpbmcgbGF5b3V0IHRlc3RzIHdpbGwgYWxsIGJlIHJ1biBp
bi1tZW1vcnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6On5MZXZlbERCRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6b3BlbkRCKToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJE
YXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6Om9wZW5J
bk1lbW9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgICogc3RvcmFn
ZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU1FMaXRl
QmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVFeGlzdHMpOgorCiAyMDExLTA5LTI3ICBSYWtlc2gg
S04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgogCiAgICAgICAgIDxpbnB1dD4gd2l0aCBhdXRv
Zm9jdXMgZG9lc24ndCBsb3NlIGZvY3VzIHdoZW4gaXQgaGFzIGEgY2VydGFpbiBvbmJsdXIgbGlz
dGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRh
dGFiYXNlLmNwcAppbmRleCA5MzVkN2VkNWUwMWY0YTFiZGY4ZjlhODkwM2E3ZDVhM2VkOTFhNDU1
Li5hZTc5M2U1YjFhODY1MDlhNzNlYjVjZjBkOTVmZjc1MDhhYWNjNWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCkBAIC0z
Myw4ICszMywxMCBAQAogI2luY2x1ZGUgIkxldmVsREJTbGljZS5oIgogI2luY2x1ZGUgIkxldmVs
REJXcml0ZUJhdGNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPGhlbHBlcnMv
bWVtZW52L21lbWVudi5oPgogI2luY2x1ZGUgPGxldmVsZGIvY29tcGFyYXRvci5oPgogI2luY2x1
ZGUgPGxldmVsZGIvZGIuaD4KKyNpbmNsdWRlIDxsZXZlbGRiL2Vudi5oPgogI2luY2x1ZGUgPGxl
dmVsZGIvc2xpY2UuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KQEAgLTk2LDE4ICs5OCwyOCBAQCBMZXZlbERCRGF0YWJhc2U6On5MZXZlbERCRGF0YWJh
c2UoKQogICAgIC8vIG1fZGIncyBkZXN0cnVjdG9yIHVzZXMgbV9jb21wYXJhdG9yQWRhcHRlcjsg
b3JkZXIgb2YgZGVsZXRpb24gaXMgaW1wb3J0YW50LgogICAgIG1fZGIuY2xlYXIoKTsKICAgICBt
X2NvbXBhcmF0b3JBZGFwdGVyLmNsZWFyKCk7CisgICAgbV9lbnYuY2xlYXIoKTsKIH0KIAotUGFz
c093blB0cjxMZXZlbERCRGF0YWJhc2U+IExldmVsREJEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcikKK3N0YXRp
YyBsZXZlbGRiOjpTdGF0dXMgb3BlbkRCKGxldmVsZGI6OkNvbXBhcmF0b3IqIGNvbXBhcmF0b3Is
IGxldmVsZGI6OkVudiogZW52LCBjb25zdCBTdHJpbmcmIHBhdGgsIGxldmVsZGI6OkRCKiogZGIp
CiB7Ci0gICAgT3duUHRyPENvbXBhcmF0b3JBZGFwdGVyPiBjb21wYXJhdG9yQWRhcHRlciA9IGFk
b3B0UHRyKG5ldyBDb21wYXJhdG9yQWRhcHRlcihjb21wYXJhdG9yKSk7Ci0KICAgICBsZXZlbGRi
OjpPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5jb21wYXJhdG9yID0gY29tcGFyYXRvckFk
YXB0ZXIuZ2V0KCk7CisgICAgb3B0aW9ucy5jb21wYXJhdG9yID0gY29tcGFyYXRvcjsKICAgICBv
cHRpb25zLmNyZWF0ZV9pZl9taXNzaW5nID0gdHJ1ZTsKICAgICBvcHRpb25zLnBhcmFub2lkX2No
ZWNrcyA9IHRydWU7CisgICAgaWYgKGVudikKKyAgICAgICAgb3B0aW9ucy5lbnYgPSBlbnY7CisK
KyAgICBjb25zdCBTdHJpbmcgbmFtZSA9IHBhdGguaXNOdWxsKCkgPyAiL2luLW1lbS1kYiIgOiBw
YXRoOworICAgIHJldHVybiBsZXZlbGRiOjpEQjo6T3BlbihvcHRpb25zLCBuYW1lLnV0ZjgoKS5k
YXRhKCksIGRiKTsKK30KKworUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IExldmVsREJEYXRh
YmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRv
ciogY29tcGFyYXRvcikKK3sKKyAgICBPd25QdHI8Q29tcGFyYXRvckFkYXB0ZXI+IGNvbXBhcmF0
b3JBZGFwdGVyID0gYWRvcHRQdHIobmV3IENvbXBhcmF0b3JBZGFwdGVyKGNvbXBhcmF0b3IpKTsK
KwogICAgIGxldmVsZGI6OkRCKiBkYjsKLSAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IGxl
dmVsZGI6OkRCOjpPcGVuKG9wdGlvbnMsIGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCksICZkYik7Cisg
ICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBvcGVuREIoY29tcGFyYXRvckFkYXB0ZXIuZ2V0
KCksIDAsIGZpbGVOYW1lLCAmZGIpOwogCiAgICAgaWYgKCFzLm9rKCkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBMZXZlbERCIGRhdGFiYXNlIGZyb20gJXM6ICVzIiwgZmls
ZU5hbWUuYXNjaWkoKS5kYXRhKCksIHMuVG9TdHJpbmcoKS5jX3N0cigpKTsKQEAgLTEyMiw2ICsx
MzQsMjggQEAgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IExldmVsREJEYXRhYmFzZTo6b3Bl
bihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdAogICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCitQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpv
cGVuSW5NZW1vcnkoY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IpCit7CisgICAg
T3duUHRyPENvbXBhcmF0b3JBZGFwdGVyPiBjb21wYXJhdG9yQWRhcHRlciA9IGFkb3B0UHRyKG5l
dyBDb21wYXJhdG9yQWRhcHRlcihjb21wYXJhdG9yKSk7CisgICAgT3duUHRyPGxldmVsZGI6OkVu
dj4gaW5NZW1vcnlFbnYgPSBhZG9wdFB0cihsZXZlbGRiOjpOZXdNZW1FbnYobGV2ZWxkYjo6RW52
OjpEZWZhdWx0KCkpKTsKKworICAgIGxldmVsZGI6OkRCKiBkYjsKKyAgICBjb25zdCBsZXZlbGRi
OjpTdGF0dXMgcyA9IG9wZW5EQihjb21wYXJhdG9yQWRhcHRlci5nZXQoKSwgaW5NZW1vcnlFbnYu
Z2V0KCksIFN0cmluZygpLCAmZGIpOworCisgICAgaWYgKCFzLm9rKCkpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBpbi1tZW1vcnkgTGV2ZWxEQiBkYXRhYmFzZTogJXMiLCBz
LlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBMZXZlbERC
RGF0YWJhc2UpOworICAgIHJlc3VsdC0+bV9lbnYgPSBpbk1lbW9yeUVudi5yZWxlYXNlKCk7Cisg
ICAgcmVzdWx0LT5tX2RiID0gYWRvcHRQdHIoZGIpOworICAgIHJlc3VsdC0+bV9jb21wYXJhdG9y
QWRhcHRlciA9IGNvbXBhcmF0b3JBZGFwdGVyLnJlbGVhc2UoKTsKKyAgICByZXN1bHQtPm1fY29t
cGFyYXRvciA9IGNvbXBhcmF0b3I7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30K
KwogYm9vbCBMZXZlbERCRGF0YWJhc2U6OnB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29u
c3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKIHsKICAgICBsZXZlbGRiOjpXcml0ZU9wdGlvbnMgd3Jp
dGVPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9M
ZXZlbERCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QkRhdGFiYXNlLmgKaW5kZXggY2JlZWVkZmI3NjgxMGI0N2YwN2I2NzhjZDExZjZjY2IzM2Y4YjQz
Ny4uYzZjZTIxYzAzZDk3OWI5ZTNmOTU0MmFlNGU5MWMwNmVkZjE4Y2MzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC0zNiw2
ICszNiw3IEBACiBuYW1lc3BhY2UgbGV2ZWxkYiB7CiBjbGFzcyBDb21wYXJhdG9yOwogY2xhc3Mg
REI7CitjbGFzcyBFbnY7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDYgKzQ5LDcg
QEAgY2xhc3MgTGV2ZWxEQldyaXRlQmF0Y2g7CiBjbGFzcyBMZXZlbERCRGF0YWJhc2UgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gb3Blbihjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciopOworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gb3BlbkluTWVtb3J5KGNvbnN0IExldmVsREJDb21w
YXJhdG9yKik7CiAgICAgfkxldmVsREJEYXRhYmFzZSgpOwogCiAgICAgYm9vbCBwdXQoY29uc3Qg
TGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUpOwpAQCAtNjAsOSAr
NjIsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBMZXZlbERCRGF0YWJhc2UoKTsKIAorICAg
IE93blB0cjxsZXZlbGRiOjpFbnY+IG1fZW52OworICAgIE93blB0cjxsZXZlbGRiOjpDb21wYXJh
dG9yPiBtX2NvbXBhcmF0b3JBZGFwdGVyOwogICAgIE93blB0cjxsZXZlbGRiOjpEQj4gbV9kYjsK
ICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9jb21wYXJhdG9yOwotICAgIE93blB0cjxs
ZXZlbGRiOjpDb21wYXJhdG9yPiBtX2NvbXBhcmF0b3JBZGFwdGVyOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
NGFmMzNlNDQwZjFlOGM0NTdhZjk3NDhiNjk3ZWEwZTc1NzkxNmZiNC4uZDdlM2M5ZDQ3MmEyM2Y0
NTY1NDQxY2FiMTJiZTkyMDI1Yzk0YTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzYsMjAgKzEzNiwyMiBAQCBQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1
cml0eU9yaWdpbiogc2VjdXJpdAogewogICAgIFN0cmluZyBwYXRoQmFzZSA9IHBhdGhCYXNlQXJn
OwogCi0gICAgaWYgKHBhdGhCYXNlLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgLy8gRklYTUU6IFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgY2FzZSBmb3IgaW5jb2du
aXRvIGFuZCBEdW1wUmVuZGVyVHJlZS4KLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPigpOwotICAgIH0KKyAgICBPd25QdHI8TGV2ZWxEQkNvbXBhcmF0b3I+IGNvbXBh
cmF0b3IgPSBhZG9wdFB0cihuZXcgQ29tcGFyYXRvcigpKTsKKyAgICBPd25QdHI8TGV2ZWxEQkRh
dGFiYXNlPiBkYjsKIAotICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHBhdGhCYXNlKSkgewot
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgSW5kZXhlZERCIGRhdGFiYXNlIHBh
dGggJXMiLCBwYXRoQmFzZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlPigpOworICAgIGlmIChwYXRoQmFzZS5pc0VtcHR5KCkpCisgICAg
ICAgIGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuSW5NZW1vcnkoY29tcGFyYXRvci5nZXQoKSk7
CisgICAgZWxzZSB7CisgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHBhdGhCYXNlKSkg
eworICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEluZGV4ZWREQiBkYXRh
YmFzZSBwYXRoICVzIiwgcGF0aEJhc2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+KCk7CisgICAgICAgIH0KKyAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IHVzZSB0aGUgc2FtZSBMZXZlbERCIGRhdGFiYXNl
IGZvciBhbGwgb3JpZ2lucy4KKyAgICAgICAgU3RyaW5nIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocGF0aEJhc2UsIHNlY3VyaXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSAr
ICIuaW5kZXhlZGRiLmxldmVsZGIiKTsKKworICAgICAgICBkYiA9IExldmVsREJEYXRhYmFzZTo6
b3BlbihwYXRoLCBjb21wYXJhdG9yLmdldCgpKTsKICAgICB9Ci0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBldmVudHVhbGx5IHVzZSB0aGUgc2FtZSBMZXZlbERCIGRhdGFiYXNlIGZvciBhbGwgb3Jp
Z2lucy4KLSAgICBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoQmFz
ZSwgc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpICsgIi5pbmRleGVkZGIubGV2
ZWxkYiIpOwogCi0gICAgT3duUHRyPExldmVsREJDb21wYXJhdG9yPiBjb21wYXJhdG9yID0gYWRv
cHRQdHIobmV3IENvbXBhcmF0b3IoKSk7Ci0gICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIg
PSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgY29tcGFyYXRvci5nZXQoKSk7CiAgICAgaWYg
KCFkYikKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5jcHAKaW5k
ZXggM2ViODdlY2FiZTBkOTQ3NzA5MTM5OWJkOTk5MTYyOWNhNjdjMjIzZi4uNWM3NmIyN2M5ZjM1
MjExZjIzYzcwZjUyMmVjZjViMWNhODkxYWRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCU1FMaXRlQmFja2luZ1N0b3JlLmNwcApAQCAtMTAxMiw3ICsxMDEyLDkgQEAgUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCU1FMaXRlQmFja2luZ1N0b3JlOjpv
cGVuSW5kZXhDdXJzb3IoaW50NjQKIAogYm9vbCBJREJTUUxpdGVCYWNraW5nU3RvcmU6OmJhY2tp
bmdTdG9yZUV4aXN0cyhTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSkKIHsKLSAgICBTdHJpbmcgcGF0aCA9IHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoQmFzZSwgc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpICsgIi5pbmRleGVkZGIiKTsKKyAgICBTdHJpbmcgcGF0aCA9ICI6bWVtb3J5
OiI7CisgICAgaWYgKCFwYXRoQmFzZS5pc0VtcHR5KCkpCisgICAgICAgIHBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aEJhc2UsIHNlY3VyaXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50
aWZpZXIoKSArICIuaW5kZXhlZGRiIik7CiAgICAgU1FMaXRlRGF0YWJhc2UgZGI7CiAgICAgaWYg
KCFkYi5vcGVuKHBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGI4NDk5MmExNzcxMzIxZmE2MDZhMThlMDg1OGYxZjY4YzZhOGNmMDguLjBm
MGY5ODdkMTk1NjhjMWRmMDBkNGI3OGNkNGFmYWNjNTJkOWJhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjcgIEhhbnMgV2VubmJvcmcgIDxo
YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFVzZSBMZXZlbERCIGFsc28g
Zm9yIGluLW1lbW9yeSBkYXRhYmFzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRG9uJ3QgZmFsbCBiYWNrIHRvIFNRTGl0ZSBvciB1c2UgYSB0ZW1wb3Jh
cnkgZGlyIGZvciBpbi1tZW1vcnkKKyAgICAgICAgZGF0YWJhc2VzIChJbmNvZ25pdG8gYW5kIGxh
eW91dCB0ZXN0cyk7IExldmVsREIgc3VwcG9ydHMgaW4tbWVtb3J5CisgICAgICAgIGRhdGFiYXNl
cyBub3cuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRmFjdG9yeS5oOgorICAgICAgICAqIHNy
Yy9XZWJJREJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJ
bXBsOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUlt
cGw6Om9wZW4pOgorCiAyMDExLTA5LTI2ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIE1ha2UgQ0NUaHJlYWRQcm94eSBkcmF3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKaW5kZXggYjFhNzA4YmM0ZmIz
Y2M1NjY0NWY2ZTQ0YTFkYzViYTg5M2JjOTFjNy4uOWM2NWYyZGUzZTJlYzcyYTNmNzBlYWQwYzU4
MmZjZWRlMWE0NTJhNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkZhY3RvcnkuaApAQCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGZvciBE
dW1wUmVuZGVyVHJlZSB0ZXN0cy4KICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE92
ZXJyaWRlQmFja2luZ1N0b3JlVHlwZShCYWNraW5nU3RvcmVUeXBlKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldFRlbXBvcmFyeURhdGFiYXNlRm9sZGVyKGNvbnN0IFdlYlN0cmlu
ZyYgcGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCA2NjYwODdiODg2NTc1
OTdlMTZlNDU2ZDA4MjUwMzE3OWJlNjIxNGY3Li40MGJlYzBkYzU0NTYzZWM3NDNhMzUzODhmNDM4
NTkwODUxZWE4ZTI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJGYWN0b3J5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RmFjdG9yeUltcGwuY3BwCkBAIC00NSw3ICs0NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBXZWJJREJGYWN0b3J5OjpCYWNraW5nU3Rv
cmVUeXBlIG92ZXJyaWRkZW5CYWNraW5nU3RvcmVUeXBlID0gV2ViSURCRmFjdG9yeTo6RGVmYXVs
dEJhY2tpbmdTdG9yZTsKLXN0YXRpYyBXZWJTdHJpbmcgdGVtcERhdGFiYXNlRm9sZGVyOwogCiBX
ZWJJREJGYWN0b3J5KiBXZWJJREJGYWN0b3J5OjpjcmVhdGUoKQogewpAQCAtNTcsMTEgKzU2LDYg
QEAgdm9pZCBXZWJJREJGYWN0b3J5OjpzZXRPdmVycmlkZUJhY2tpbmdTdG9yZVR5cGUoQmFja2lu
Z1N0b3JlVHlwZSB0eXBlKQogICAgIG92ZXJyaWRkZW5CYWNraW5nU3RvcmVUeXBlID0gdHlwZTsK
IH0KIAotdm9pZCBXZWJJREJGYWN0b3J5OjpzZXRUZW1wb3JhcnlEYXRhYmFzZUZvbGRlcihjb25z
dCBXZWJTdHJpbmcmIHBhdGgpCi17Ci0gICAgdGVtcERhdGFiYXNlRm9sZGVyID0gcGF0aDsKLX0K
LQogV2ViSURCRmFjdG9yeUltcGw6OldlYklEQkZhY3RvcnlJbXBsKCkKICAgICA6IG1faWRiRmFj
dG9yeUJhY2tlbmQoSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVhdGUoKSkKIHsKQEAgLTgzLDE2
ICs3Nyw2IEBAIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlCiAgICAgaWYgKGJhY2tpbmdTdG9yZVR5
cGUgPT0gRGVmYXVsdEJhY2tpbmdTdG9yZSkKICAgICAgICAgYmFja2luZ1N0b3JlVHlwZSA9IExl
dmVsREJCYWNraW5nU3RvcmU7CiAKLSAgICBpZiAoZGF0YURpci5pc0VtcHR5KCkgJiYgYmFja2lu
Z1N0b3JlVHlwZSA9PSBMZXZlbERCQmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIGlmICghdGVtcERh
dGFiYXNlRm9sZGVyLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gTGF5b3V0IHRlc3RzIHBy
b3ZpZGUgYSB0ZW1wb3JhcnkgZm9sZGVyLgotICAgICAgICAgICAgcGF0aCA9IHRlbXBEYXRhYmFz
ZUZvbGRlcjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZvciBpbmNvZ25pdG8g
bW9kZSwgZmFsbCBiYWNrIHRvIFNRTGl0ZS4KLSAgICAgICAgICAgIGJhY2tpbmdTdG9yZVR5cGUg
PSBTUUxpdGVCYWNraW5nU3RvcmU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBtX2lkYkZhY3Rv
cnlCYWNrZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRv
cHRQdHIoY2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgcGF0aCwgbWF4aW11bVNpemUsIHN0YXRpY19j
YXN0PElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpCYWNraW5nU3RvcmVUeXBlPihiYWNraW5n
U3RvcmVUeXBlKSk7CiB9CiAKQEAgLTEwOSwxNiArOTMsNiBAQCB2b2lkIFdlYklEQkZhY3RvcnlJ
bXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsCiAgICAgaWYgKGJhY2tpbmdTdG9yZVR5cGUgPT0gRGVmYXVsdEJhY2tpbmdTdG9yZSkKICAg
ICAgICAgYmFja2luZ1N0b3JlVHlwZSA9IExldmVsREJCYWNraW5nU3RvcmU7CiAKLSAgICBpZiAo
ZGF0YURpci5pc0VtcHR5KCkgJiYgYmFja2luZ1N0b3JlVHlwZSA9PSBMZXZlbERCQmFja2luZ1N0
b3JlKSB7Ci0gICAgICAgIGlmICghdGVtcERhdGFiYXNlRm9sZGVyLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgLy8gTGF5b3V0IHRlc3RzIHByb3ZpZGUgYSB0ZW1wb3JhcnkgZm9sZGVyLgotICAg
ICAgICAgICAgcGF0aCA9IHRlbXBEYXRhYmFzZUZvbGRlcjsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIEZvciBpbmNvZ25pdG8gbW9kZSwgZmFsbCBiYWNrIHRvIFNRTGl0ZS4KLSAg
ICAgICAgICAgIGJhY2tpbmdTdG9yZVR5cGUgPSBTUUxpdGVCYWNraW5nU3RvcmU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KICAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIElEQkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgcGF0aCwg
bWF4aW11bVNpemUsIHN0YXRpY19jYXN0PElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpCYWNr
aW5nU3RvcmVUeXBlPihiYWNraW5nU3RvcmVUeXBlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYzIxODRlNTJmOWVkYTQzNDIwMjcx
Y2UwZGNlMjM4NzQ5OTA1MThiLi4xNjk1Y2NkZDQyNWE2YWE0OTc1NDdjYjZkOTBlMGQ3MzFjZmE1
YmYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTEtMDktMjcgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFVzZSBMZXZlbERCIGFsc28gZm9yIGluLW1lbW9y
eSBkYXRhYmFzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSB0ZW1wb3JhcnkgZGlyIHRoYXQgd2FzIG5lY2Vzc2FyeSBiZWZvcmUgTGV2
ZWxEQiBzdXBwb3J0ZWQKKyAgICAgICAgaW4tbWVtb3J5IGRhdGFiYXNlcy4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hl
bGw6OlRlc3RTaGVsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmg6CisKIDIwMTEtMDktMjYgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBnYXJkZW4tby1tYXRpYydzIGNvbW1pdCBkYXRhIG9uIHN1bW1hcnkg
cGFnZSBzaG91bGQgbm90IGNyb3dkIGl0c2VsZiBvciB0d2l0Y2ggd2hlbiBob3ZlcmVkIG92ZXIu
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCA3YjE1
MDFjOTA5ZGYzYmExYzlkNTJkMjU3YjdhNjcwYWRmMDE4N2FkLi4zODllNTFkNDJlZDQyMGNmN2Fm
ZGFhMDE0MDIwMjc5Y2Q2NzgyOWFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHAKQEAgLTEzNiwxMiArMTM2LDYgQEAgVGVzdFNoZWxsOjpUZXN0U2hlbGwo
Ym9vbCB0ZXN0U2hlbGxNb2RlKQogICAgIC8vIHRpbWVkLW91dCBEUlQgcHJvY2VzcyB3YXMgY3Jh
c2hlZC4KICAgICBtX3RpbWVvdXQgPSAzMCAqIDEwMDA7CiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSAgICBtX3RlbXBJbmRleGVkREJEaXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRf
c3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVjdG9yeSgpKTsKLSAgICBtX3RlbXBJbmRleGVk
REJEaXJlY3RvcnktPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKLSAgICBXZWJJREJGYWN0b3J5Ojpz
ZXRUZW1wb3JhcnlEYXRhYmFzZUZvbGRlcihXZWJTdHJpbmc6OmZyb21VVEY4KG1fdGVtcEluZGV4
ZWREQkRpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpKTsKLSNlbmRpZgotCiAgICAgY3JlYXRlTWFp
bldpbmRvdygpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5o
CmluZGV4IDhjZTRkOTk5ODNjYWM0ODcwNzYwZGQ0ZjA5NGE4ZDc4MGY0MmY3MDkuLjQyYWYyZTc5
MDc2OGU0MDE1MjIwZWM1ZTI5YmVlMzM3MmRlZGNhN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC0yMzUsOSArMjM1LDYgQEAgcHJpdmF0ZToKICAgICAv
LyBVc2VkIGJ5IHRoZSB3YXRjaGRvZyB0byBrbm93IHdoZW4gaXQncyBmaW5pc2hlZC4KICAgICBI
QU5ETEUgbV9maW5pc2hlZEV2ZW50OwogI2VuZGlmCi0KLSAgICAvLyBUZW1wb3JhcnkgZGlyZWN0
b3J5IGZvciBJbmRleGVkREIgKExldmVsREIgZG9lc24ndCBzdXBwb3J0IGluLW1lbW9yeSBkYXRh
YmFzZXMuKQotICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2NvcGVkVGVtcERpcmVjdG9yeT4g
bV90ZW1wSW5kZXhlZERCRGlyZWN0b3J5OwogfTsKIAogdm9pZCBwbGF0Zm9ybUluaXQoaW50Kiwg
Y2hhcioqKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109018</attachid>
            <date>2011-09-28 06:35:30 -0700</date>
            <delta_ts>2011-09-29 05:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68903-20110928143529.patch</filename>
            <type>text/plain</type>
            <size>15335</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMTZiZmQxZmJkOTY4Y2Vl
YWFhMzY5M2MyYjAyMGYwNTYyNGI2MjdhLi4xZDM0OWY1YjdmYjNhNThmZmVkNTE1ZDBhZDZiN2I1
ZmU4NDNjYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMjggIEhhbnMg
V2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFVzZSBM
ZXZlbERCIGFsc28gZm9yIGluLW1lbW9yeSBkYXRhYmFzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExldmVsREJEYXRhYmFzZTo6b3BlbkluTWVt
b3J5KCkgd2hpY2ggdXNlcyBsZXZlbGRiOjpOZXdNZW1FbnYoKQorICAgICAgICB0byBjcmVhdGUg
aW4tbWVtb3J5IExldmVsREIgZGF0YWJhc2VzLgorCisgICAgICAgIFVzZSB0aGlzIGluIElEQkxl
dmVMREJCYWNraW5nU3RvcmU6Om9wZW4oKSB3aGVuIHRoZSBjYWxsZXIgcGFzc2VzIGluCisgICAg
ICAgIGFuIGVtcHR5IGZpbGUgcGF0aC4KKyAgICAgICAgVGhpcyBoYXBwZW5zIGluIENocm9taXVt
J3MgaW5jb2duaXRvIG1vZGUsIGFuZCB3aGVuIHJ1bm5pbmcgbGF5b3V0CisgICAgICAgIHRlc3Rz
LgorCisgICAgICAgIEZpeCBJREJTUUxpdGVCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZUV4aXN0
cygpIHNvIGl0IGRvZXNuJ3QgY3JlYXRlCisgICAgICAgIGZpbGVzIHdoZW4gcGFzc2VkIGluIGFu
IGVtcHR5IGZpbGUgcGF0aCwgYnV0IHVzZXMgdGhlIGluLW1lbW9yeSBtb2RlCisgICAgICAgIGlu
c3RlYWQuCisKKyAgICAgICAgRXhpc3RpbmcgbGF5b3V0IHRlc3RzIHdpbGwgYWxsIGJlIHJ1biBp
bi1tZW1vcnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6On5MZXZlbERCRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6b3BlbkRCKToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJE
YXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6Om9wZW5J
bk1lbW9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgICogc3RvcmFn
ZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU1FMaXRl
QmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVFeGlzdHMpOgorCiAyMDExLTA5LTI4ICBObydhbSBS
b3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1RleG1hcF0g
QWxsb3cgVGV4dHVyZU1hcHBlckdMIHRvIHdvcmsgd2l0aG91dCBhIEdyYXBoaWNzQ29udGV4dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2Uu
Y3BwCmluZGV4IDkzNWQ3ZWQ1ZTAxZjRhMWJkZjhmOWE4OTAzYTdkNWEzZWQ5MWE0NTUuLjQxYTFh
ZWZiM2E3OGQ1ZjgwYzhiODAxYjgxMTc2MzkzOGQ1ZTI0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKQEAgLTMzLDggKzMz
LDEwIEBACiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQldyaXRl
QmF0Y2guaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8aGVscGVycy9tZW1lbnYv
bWVtZW52Lmg+CiAjaW5jbHVkZSA8bGV2ZWxkYi9jb21wYXJhdG9yLmg+CiAjaW5jbHVkZSA8bGV2
ZWxkYi9kYi5oPgorI2luY2x1ZGUgPGxldmVsZGIvZW52Lmg+CiAjaW5jbHVkZSA8bGV2ZWxkYi9z
bGljZS5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpA
QCAtOTYsMTggKzk4LDI2IEBAIExldmVsREJEYXRhYmFzZTo6fkxldmVsREJEYXRhYmFzZSgpCiAg
ICAgLy8gbV9kYidzIGRlc3RydWN0b3IgdXNlcyBtX2NvbXBhcmF0b3JBZGFwdGVyOyBvcmRlciBv
ZiBkZWxldGlvbiBpcyBpbXBvcnRhbnQuCiAgICAgbV9kYi5jbGVhcigpOwogICAgIG1fY29tcGFy
YXRvckFkYXB0ZXIuY2xlYXIoKTsKKyAgICBtX2Vudi5jbGVhcigpOwogfQogCi1QYXNzT3duUHRy
PExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJhdG9yKQorc3RhdGljIGxldmVs
ZGI6OlN0YXR1cyBvcGVuREIobGV2ZWxkYjo6Q29tcGFyYXRvciogY29tcGFyYXRvciwgbGV2ZWxk
Yjo6RW52KiBlbnYsIGNvbnN0IFN0cmluZyYgcGF0aCwgbGV2ZWxkYjo6REIqKiBkYikKIHsKLSAg
ICBPd25QdHI8Q29tcGFyYXRvckFkYXB0ZXI+IGNvbXBhcmF0b3JBZGFwdGVyID0gYWRvcHRQdHIo
bmV3IENvbXBhcmF0b3JBZGFwdGVyKGNvbXBhcmF0b3IpKTsKLQogICAgIGxldmVsZGI6Ok9wdGlv
bnMgb3B0aW9uczsKLSAgICBvcHRpb25zLmNvbXBhcmF0b3IgPSBjb21wYXJhdG9yQWRhcHRlci5n
ZXQoKTsKKyAgICBvcHRpb25zLmNvbXBhcmF0b3IgPSBjb21wYXJhdG9yOwogICAgIG9wdGlvbnMu
Y3JlYXRlX2lmX21pc3NpbmcgPSB0cnVlOwogICAgIG9wdGlvbnMucGFyYW5vaWRfY2hlY2tzID0g
dHJ1ZTsKKyAgICBvcHRpb25zLmVudiA9IGVudjsKKworICAgIHJldHVybiBsZXZlbGRiOjpEQjo6
T3BlbihvcHRpb25zLCBwYXRoLnV0ZjgoKS5kYXRhKCksIGRiKTsKK30KKworUGFzc093blB0cjxM
ZXZlbERCRGF0YWJhc2U+IExldmVsREJEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcikKK3sKKyAgICBPd25QdHI8
Q29tcGFyYXRvckFkYXB0ZXI+IGNvbXBhcmF0b3JBZGFwdGVyID0gYWRvcHRQdHIobmV3IENvbXBh
cmF0b3JBZGFwdGVyKGNvbXBhcmF0b3IpKTsKKwogICAgIGxldmVsZGI6OkRCKiBkYjsKLSAgICBj
b25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IGxldmVsZGI6OkRCOjpPcGVuKG9wdGlvbnMsIGZpbGVO
YW1lLnV0ZjgoKS5kYXRhKCksICZkYik7CisgICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBv
cGVuREIoY29tcGFyYXRvckFkYXB0ZXIuZ2V0KCksIGxldmVsZGI6OkVudjo6RGVmYXVsdCgpLCBm
aWxlTmFtZSwgJmRiKTsKIAogICAgIGlmICghcy5vaygpKSB7CiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIG9wZW4gTGV2ZWxEQiBkYXRhYmFzZSBmcm9tICVzOiAlcyIsIGZpbGVOYW1lLmFz
Y2lpKCkuZGF0YSgpLCBzLlRvU3RyaW5nKCkuY19zdHIoKSk7CkBAIC0xMjIsNiArMTMyLDI4IEBA
IFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBMZXZlbERCRGF0YWJhc2U6Om9wZW4oY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0K
IAorUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IExldmVsREJEYXRhYmFzZTo6b3BlbkluTWVt
b3J5KGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJhdG9yKQoreworICAgIE93blB0cjxD
b21wYXJhdG9yQWRhcHRlcj4gY29tcGFyYXRvckFkYXB0ZXIgPSBhZG9wdFB0cihuZXcgQ29tcGFy
YXRvckFkYXB0ZXIoY29tcGFyYXRvcikpOworICAgIE93blB0cjxsZXZlbGRiOjpFbnY+IGluTWVt
b3J5RW52ID0gYWRvcHRQdHIobGV2ZWxkYjo6TmV3TWVtRW52KGxldmVsZGI6OkVudjo6RGVmYXVs
dCgpKSk7CisKKyAgICBsZXZlbGRiOjpEQiogZGI7CisgICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVz
IHMgPSBvcGVuREIoY29tcGFyYXRvckFkYXB0ZXIuZ2V0KCksIGluTWVtb3J5RW52LmdldCgpLCBT
dHJpbmcoKSwgJmRiKTsKKworICAgIGlmICghcy5vaygpKSB7CisgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIG9wZW4gaW4tbWVtb3J5IExldmVsREIgZGF0YWJhc2U6ICVzIiwgcy5Ub1N0cmlu
ZygpLmNfc3RyKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBPd25Q
dHI8TGV2ZWxEQkRhdGFiYXNlPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgTGV2ZWxEQkRhdGFiYXNl
KTsKKyAgICByZXN1bHQtPm1fZW52ID0gaW5NZW1vcnlFbnYucmVsZWFzZSgpOworICAgIHJlc3Vs
dC0+bV9kYiA9IGFkb3B0UHRyKGRiKTsKKyAgICByZXN1bHQtPm1fY29tcGFyYXRvckFkYXB0ZXIg
PSBjb21wYXJhdG9yQWRhcHRlci5yZWxlYXNlKCk7CisgICAgcmVzdWx0LT5tX2NvbXBhcmF0b3Ig
PSBjb21wYXJhdG9yOworCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9CisKIGJvb2wg
TGV2ZWxEQkRhdGFiYXNlOjpwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgdmFsdWUpCiB7CiAgICAgbGV2ZWxkYjo6V3JpdGVPcHRpb25zIHdyaXRlT3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFz
ZS5oCmluZGV4IGNiZWVlZGZiNzY4MTBiNDdmMDdiNjc4Y2QxMWY2Y2NiMzNmOGI0MzcuLmM2Y2Uy
MWMwM2Q5NzliOWUzZjk1NDJhZTRlOTFjMDZlZGYxOGNjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaApAQCAtMzYsNiArMzYsNyBA
QAogbmFtZXNwYWNlIGxldmVsZGIgewogY2xhc3MgQ29tcGFyYXRvcjsKIGNsYXNzIERCOworY2xh
c3MgRW52OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNz
IExldmVsREJXcml0ZUJhdGNoOwogY2xhc3MgTGV2ZWxEQkRhdGFiYXNlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IG9wZW4oY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqKTsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxMZXZlbERCRGF0YWJhc2U+IG9wZW5Jbk1lbW9yeShjb25zdCBMZXZlbERCQ29tcGFyYXRvciop
OwogICAgIH5MZXZlbERCRGF0YWJhc2UoKTsKIAogICAgIGJvb2wgcHV0KGNvbnN0IExldmVsREJT
bGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKQEAgLTYwLDkgKzYyLDEwIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTGV2ZWxEQkRhdGFiYXNlKCk7CiAKKyAgICBPd25QdHI8
bGV2ZWxkYjo6RW52PiBtX2VudjsKKyAgICBPd25QdHI8bGV2ZWxkYjo6Q29tcGFyYXRvcj4gbV9j
b21wYXJhdG9yQWRhcHRlcjsKICAgICBPd25QdHI8bGV2ZWxkYjo6REI+IG1fZGI7CiAgICAgY29u
c3QgTGV2ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKLSAgICBPd25QdHI8bGV2ZWxkYjo6
Q29tcGFyYXRvcj4gbV9jb21wYXJhdG9yQWRhcHRlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDRhZjMzZTQ0
MGYxZThjNDU3YWY5NzQ4YjY5N2VhMGU3NTc5MTZmYjQuLmQ3ZTNjOWQ0NzJhMjNmNDU2NTQ0MWNh
YjEyYmU5MjAyNWM5NGExMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMTM2LDIwICsxMzYsMjIgQEAgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXQKIHsKICAgICBTdHJpbmcgcGF0aEJhc2UgPSBwYXRoQmFzZUFyZzsKIAotICAg
IGlmIChwYXRoQmFzZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIEZJWE1FOiBXZSBuZWVkIHRvIGhhbmRsZSB0aGlzIGNhc2UgZm9yIGluY29nbml0byBhbmQg
RHVtcFJlbmRlclRyZWUuCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4oKTsKLSAgICB9CisgICAgT3duUHRyPExldmVsREJDb21wYXJhdG9yPiBjb21wYXJhdG9yID0g
YWRvcHRQdHIobmV3IENvbXBhcmF0b3IoKSk7CisgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4g
ZGI7CiAKLSAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhwYXRoQmFzZSkpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEluZGV4ZWREQiBkYXRhYmFzZSBwYXRoICVzIiwg
cGF0aEJhc2UudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4oKTsKKyAgICBpZiAocGF0aEJhc2UuaXNFbXB0eSgpKQorICAgICAgICBkYiA9
IExldmVsREJEYXRhYmFzZTo6b3BlbkluTWVtb3J5KGNvbXBhcmF0b3IuZ2V0KCkpOworICAgIGVs
c2UgeworICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhwYXRoQmFzZSkpIHsKKyAgICAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBJbmRleGVkREIgZGF0YWJhc2UgcGF0
aCAlcyIsIHBhdGhCYXNlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlPigpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgZXZlbnR1YWxseSB1c2UgdGhlIHNhbWUgTGV2ZWxEQiBkYXRhYmFzZSBmb3IgYWxs
IG9yaWdpbnMuCisgICAgICAgIFN0cmluZyBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhCYXNlLCBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLmluZGV4
ZWRkYi5sZXZlbGRiIik7CisKKyAgICAgICAgZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0
aCwgY29tcGFyYXRvci5nZXQoKSk7CiAgICAgfQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZl
bnR1YWxseSB1c2UgdGhlIHNhbWUgTGV2ZWxEQiBkYXRhYmFzZSBmb3IgYWxsIG9yaWdpbnMuCi0g
ICAgU3RyaW5nIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aEJhc2UsIHNlY3Vy
aXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIuaW5kZXhlZGRiLmxldmVsZGIiKTsK
IAotICAgIE93blB0cjxMZXZlbERCQ29tcGFyYXRvcj4gY29tcGFyYXRvciA9IGFkb3B0UHRyKG5l
dyBDb21wYXJhdG9yKCkpOwotICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGRiID0gTGV2ZWxE
QkRhdGFiYXNlOjpvcGVuKHBhdGgsIGNvbXBhcmF0b3IuZ2V0KCkpOwogICAgIGlmICghZGIpCiAg
ICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4oKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNlYjg3
ZWNhYmUwZDk0NzcwOTEzOTliZDk5OTE2MjljYTY3YzIyM2YuLjExNmRjODJmNzg2ODcwNzFiNzJi
NjE0OTMxMjFmY2VkZmZmOTYwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCU1FMaXRlQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlNRTGl0ZUJhY2tpbmdTdG9yZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gSURCU1FMaXRlQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eQogewogICAgIFJlZlB0cjxJREJTUUxpdGVCYWNraW5nU3RvcmU+IGJhY2tpbmdT
dG9yZShhZG9wdFJlZihuZXcgSURCU1FMaXRlQmFja2luZ1N0b3JlKGZpbGVJZGVudGlmaWVyLCBm
YWN0b3J5KSkpOwogCi0gICAgU3RyaW5nIHBhdGggPSAiOm1lbW9yeToiOworICAgIFN0cmluZyBw
YXRoID0gIjptZW1vcnk6IjsgLy8gaW4tbWVtb3J5IFNRTGl0ZSBkYXRhYmFzZS4KICAgICBpZiAo
IXBhdGhCYXNlLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3Rvcmllcyhw
YXRoQmFzZSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhbnkgb3RoZXIgdGhp
bmcgd2UgY291bGQgcG9zc2libHkgZG8gdG8gcmVjb3ZlciBhdCB0aGlzIHBvaW50PyBJZiBzbywg
ZG8gaXQgcmF0aGVyIHRoYW4ganVzdCBlcnJvcmluZyBvdXQuCkBAIC0xMDEyLDcgKzEwMTIsOSBA
QCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJTUUxpdGVCYWNraW5nU3Rv
cmU6Om9wZW5JbmRleEN1cnNvcihpbnQ2NAogCiBib29sIElEQlNRTGl0ZUJhY2tpbmdTdG9yZTo6
YmFja2luZ1N0b3JlRXhpc3RzKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlKQogewotICAgIFN0cmluZyBwYXRo
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhCYXNlLCBzZWN1cml0eU9yaWdpbi0+ZGF0
YWJhc2VJZGVudGlmaWVyKCkgKyAiLmluZGV4ZWRkYiIpOworICAgIFN0cmluZyBwYXRoID0gIjpt
ZW1vcnk6IjsgLy8gaW4tbWVtb3J5IFNRTGl0ZSBkYXRhYmFzZS4KKyAgICBpZiAoIXBhdGhCYXNl
LmlzRW1wdHkoKSkKKyAgICAgICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRo
QmFzZSwgc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpICsgIi5pbmRleGVkZGIi
KTsKICAgICBTUUxpdGVEYXRhYmFzZSBkYjsKICAgICBpZiAoIWRiLm9wZW4ocGF0aCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTExMzM1NDll
ODVkODMyYmE1MmQwNGZiNDA5Y2Q0ZWExMWM2NmJkYy4uYmI0MzMyYmM4ODhmOTI0NTY5MWRjYWVj
YTcyYzA5NWQ3MGQ3NWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMS0wOS0yOCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogVXNlIExldmVsREIgYWxzbyBmb3IgaW4tbWVtb3J5IGRhdGFiYXNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5MDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBm
YWxsIGJhY2sgdG8gU1FMaXRlIG9yIHVzZSBhIHRlbXBvcmFyeSBkaXIgZm9yIGluLW1lbW9yeQor
ICAgICAgICBkYXRhYmFzZXMgKEluY29nbml0byBhbmQgbGF5b3V0IHRlc3RzKTsgTGV2ZWxEQiBz
dXBwb3J0cyBpbi1tZW1vcnkKKyAgICAgICAgZGF0YWJhc2VzIG5vdy4KKworICAgICAgICAqIHB1
YmxpYy9XZWJJREJGYWN0b3J5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6b3Blbik6CisKIDIwMTEtMDkt
MjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkZhY3RvcnkuaAppbmRleCBiMWE3MDhiYzRmYjNjYzU2NjQ1ZjZlNDRhMWRjNWJh
ODkzYmM5MWM3Li45YzY1ZjJkZTNlMmVjNzJhM2Y3MGVhZDBjNTgyZmNlZGUxYTQ1MmE0IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCkBAIC02Niw3
ICs2Niw2IEBAIHB1YmxpYzoKIAogICAgIC8vIFVzZWQgZm9yIER1bXBSZW5kZXJUcmVlIHRlc3Rz
LgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGVCYWNraW5nU3RvcmVU
eXBlKEJhY2tpbmdTdG9yZVR5cGUpOwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
VGVtcG9yYXJ5RGF0YWJhc2VGb2xkZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRmFjdG9yeUltcGwuY3BwCmluZGV4IDY2NjA4N2I4ODY1NzU5N2UxNmU0NTZkMDgyNTAzMTc5
YmU2MjE0ZjcuLjQwYmVjMGRjNTQ1NjNlYzc0M2EzNTM4OGY0Mzg1OTA4NTFlYThlMjYgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKQEAg
LTQ1LDcgKzQ1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RhdGljIFdlYklEQkZhY3Rvcnk6OkJhY2tpbmdTdG9yZVR5cGUgb3ZlcnJpZGRlbkJh
Y2tpbmdTdG9yZVR5cGUgPSBXZWJJREJGYWN0b3J5OjpEZWZhdWx0QmFja2luZ1N0b3JlOwotc3Rh
dGljIFdlYlN0cmluZyB0ZW1wRGF0YWJhc2VGb2xkZXI7CiAKIFdlYklEQkZhY3RvcnkqIFdlYklE
QkZhY3Rvcnk6OmNyZWF0ZSgpCiB7CkBAIC01NywxMSArNTYsNiBAQCB2b2lkIFdlYklEQkZhY3Rv
cnk6OnNldE92ZXJyaWRlQmFja2luZ1N0b3JlVHlwZShCYWNraW5nU3RvcmVUeXBlIHR5cGUpCiAg
ICAgb3ZlcnJpZGRlbkJhY2tpbmdTdG9yZVR5cGUgPSB0eXBlOwogfQogCi12b2lkIFdlYklEQkZh
Y3Rvcnk6OnNldFRlbXBvcmFyeURhdGFiYXNlRm9sZGVyKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkK
LXsKLSAgICB0ZW1wRGF0YWJhc2VGb2xkZXIgPSBwYXRoOwotfQotCiBXZWJJREJGYWN0b3J5SW1w
bDo6V2ViSURCRmFjdG9yeUltcGwoKQogICAgIDogbV9pZGJGYWN0b3J5QmFja2VuZChJREJGYWN0
b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpKQogewpAQCAtODMsMTYgKzc3LDYgQEAgdm9pZCBXZWJJ
REJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgY29uc3QgV2ViU2UKICAgICBpZiAoYmFja2luZ1N0b3JlVHlwZSA9PSBEZWZhdWx0QmFja2lu
Z1N0b3JlKQogICAgICAgICBiYWNraW5nU3RvcmVUeXBlID0gTGV2ZWxEQkJhY2tpbmdTdG9yZTsK
IAotICAgIGlmIChkYXRhRGlyLmlzRW1wdHkoKSAmJiBiYWNraW5nU3RvcmVUeXBlID09IExldmVs
REJCYWNraW5nU3RvcmUpIHsKLSAgICAgICAgaWYgKCF0ZW1wRGF0YWJhc2VGb2xkZXIuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAvLyBMYXlvdXQgdGVzdHMgcHJvdmlkZSBhIHRlbXBvcmFyeSBm
b2xkZXIuCi0gICAgICAgICAgICBwYXRoID0gdGVtcERhdGFiYXNlRm9sZGVyOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgLy8gRm9yIGluY29nbml0byBtb2RlLCBmYWxsIGJhY2sgdG8g
U1FMaXRlLgotICAgICAgICAgICAgYmFja2luZ1N0b3JlVHlwZSA9IFNRTGl0ZUJhY2tpbmdTdG9y
ZTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPmdldERhdGFi
YXNlTmFtZXMoSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwg
b3JpZ2luLCAwLCBwYXRoLCBtYXhpbXVtU2l6ZSwgc3RhdGljX2Nhc3Q8SURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2U6OkJhY2tpbmdTdG9yZVR5cGU+KGJhY2tpbmdTdG9yZVR5cGUpKTsKIH0KIApA
QCAtMTA5LDE2ICs5Myw2IEBAIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywKICAgICBpZiAoYmFja2lu
Z1N0b3JlVHlwZSA9PSBEZWZhdWx0QmFja2luZ1N0b3JlKQogICAgICAgICBiYWNraW5nU3RvcmVU
eXBlID0gTGV2ZWxEQkJhY2tpbmdTdG9yZTsKIAotICAgIGlmIChkYXRhRGlyLmlzRW1wdHkoKSAm
JiBiYWNraW5nU3RvcmVUeXBlID09IExldmVsREJCYWNraW5nU3RvcmUpIHsKLSAgICAgICAgaWYg
KCF0ZW1wRGF0YWJhc2VGb2xkZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBMYXlvdXQg
dGVzdHMgcHJvdmlkZSBhIHRlbXBvcmFyeSBmb2xkZXIuCi0gICAgICAgICAgICBwYXRoID0gdGVt
cERhdGFiYXNlRm9sZGVyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRm9yIGlu
Y29nbml0byBtb2RlLCBmYWxsIGJhY2sgdG8gU1FMaXRlLgotICAgICAgICAgICAgYmFja2luZ1N0
b3JlVHlwZSA9IFNRTGl0ZUJhY2tpbmdTdG9yZTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIG1f
aWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBwYXRoLCBtYXhpbXVtU2l6ZSwgc3RhdGlj
X2Nhc3Q8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U6OkJhY2tpbmdTdG9yZVR5cGU+KGJhY2tp
bmdTdG9yZVR5cGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGY0M2VkZTI1NWZmMTlkMzYwOTFlYWJhZjBlMDkzNzExMTFkZTllYzku
LjVkOTk0NTRmZDYxY2YwM2I3NGIzMWUzN2FmYjdjMjFhN2ZmMTEyOWQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
MS0wOS0yOCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElu
ZGV4ZWREQjogVXNlIExldmVsREIgYWxzbyBmb3IgaW4tbWVtb3J5IGRhdGFiYXNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5MDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHRlbXBv
cmFyeSBkaXIgdGhhdCB3YXMgbmVjZXNzYXJ5IGJlZm9yZSBMZXZlbERCIHN1cHBvcnRlZAorICAg
ICAgICBpbi1tZW1vcnkgZGF0YWJhc2VzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6VGVzdFNoZWxsKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaDoKKwogMjAxMS0wOS0y
NyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gYnVpbGQtd2Via2l0IC0tbm8td2Via2l0MiBzdGlsbCBidWlsZHMgV2ViS2l0MgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggN2YzZDgyMWQwNDkw
ODYxNmU4ZDkwNGMxMzgxZGQzZGM1NTgyZDRkOC4uNDExMzRmN2M5NTgzNDBhNTdjNDE5ZjM0NDNh
MTc0MzVkZmYyZTIzMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuY3BwCkBAIC0xMzYsMTIgKzEzNiw2IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKGJvb2wgdGVz
dFNoZWxsTW9kZSkKICAgICAvLyB0aW1lZC1vdXQgRFJUIHByb2Nlc3Mgd2FzIGNyYXNoZWQuCiAg
ICAgbV90aW1lb3V0ID0gMzAgKiAxMDAwOwogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
Ci0gICAgbV90ZW1wSW5kZXhlZERCRGlyZWN0b3J5ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6
OkNyZWF0ZVNjb3BlZFRlbXBEaXJlY3RvcnkoKSk7Ci0gICAgbV90ZW1wSW5kZXhlZERCRGlyZWN0
b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7Ci0gICAgV2ViSURCRmFjdG9yeTo6c2V0VGVtcG9y
YXJ5RGF0YWJhc2VGb2xkZXIoV2ViU3RyaW5nOjpmcm9tVVRGOChtX3RlbXBJbmRleGVkREJEaXJl
Y3RvcnktPnBhdGgoKS5jX3N0cigpKSk7Ci0jZW5kaWYKLQogICAgIGNyZWF0ZU1haW5XaW5kb3co
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCA4
Y2U0ZDk5OTgzY2FjNDg3MDc2MGRkNGYwOTRhOGQ3ODBmNDJmNzA5Li40MmFmMmU3OTA3NjhlNDAx
NTIyMGVjNWUyOWJlZTMzNzJkZWRjYTdiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuaApAQCAtMjM1LDkgKzIzNSw2IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlZCBi
eSB0aGUgd2F0Y2hkb2cgdG8ga25vdyB3aGVuIGl0J3MgZmluaXNoZWQuCiAgICAgSEFORExFIG1f
ZmluaXNoZWRFdmVudDsKICNlbmRpZgotCi0gICAgLy8gVGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3Ig
SW5kZXhlZERCIChMZXZlbERCIGRvZXNuJ3Qgc3VwcG9ydCBpbi1tZW1vcnkgZGF0YWJhc2VzLikK
LSAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IG1fdGVtcElu
ZGV4ZWREQkRpcmVjdG9yeTsKIH07CiAKIHZvaWQgcGxhdGZvcm1Jbml0KGludCosIGNoYXIqKiop
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>