<?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>117289</bug_id>
          
          <creation_ts>2013-06-06 05:46:07 -0700</creation_ts>
          <short_desc>Make CachedResource virtual methods overridden in derived classes private</short_desc>
          <delta_ts>2013-06-07 01:57:54 -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>Page Loading</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>
          <dependson>117288</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>897732</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-06 05:46:07 -0700</bug_when>
    <thetext>There&apos;s some inconsistencies, some of them are private in raw resources and public and all other cached resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897733</commentid>
    <comment_count>1</comment_count>
      <attachid>203926</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-06 05:50:21 -0700</bug_when>
    <thetext>Created attachment 203926
Patch

This patch applies on top of patch attached to bug #117288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897812</commentid>
    <comment_count>2</comment_count>
      <attachid>203926</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-06-06 09:28:15 -0700</bug_when>
    <thetext>Comment on attachment 203926
Patch

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

Good to make functions as private as possible. But if someone does have a reason to call a function directly, then I think it’s OK to have some of these be public. But then it’s helpful to have them be FINAL so we don’t do a virtual function dispatch for no good reason.

But why no FINAL?

&gt; Source/WebCore/html/ImageDocument.cpp:137
&gt; -    CachedImage* cachedImage = document()-&gt;cachedImage();
&gt; +    CachedResource* cachedImage = document()-&gt;cachedImage();

This change isn’t good even though it allows us to make overrides private. I suggest leaving the overrides public instead if they are called like this, but marking either the function or the class or both FINAL if they are never overridden further. That way we get a non-virtual function call, slightly more efficient.

&gt; Source/WebCore/html/ImageDocument.cpp:147
&gt; -        CachedImage* cachedImage = document()-&gt;cachedImage();
&gt; +        CachedResource* cachedImage = document()-&gt;cachedImage();

Same comment as above.

&gt; Source/WebCore/html/ImageDocument.cpp:162
&gt; -        IntSize size = flooredIntSize(cachedImage-&gt;imageSizeForRenderer(document()-&gt;imageElement()-&gt;renderer(), 1.0f));
&gt; +        IntSize size = flooredIntSize(static_cast&lt;CachedImage*&gt;(cachedImage)-&gt;imageSizeForRenderer(document()-&gt;imageElement()-&gt;renderer(), 1.0f));

Lets not do this.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:551
&gt;              // Skip images that were not auto loaded (images disabled in the user agent).
&gt; -            if (static_cast&lt;CachedImage*&gt;(cachedResource)-&gt;stillNeedsLoad())
&gt; -                continue;
&gt; -            break;
&gt;          case CachedResource::FontResource:
&gt;              // Skip fonts that were referenced in CSS but never used/downloaded.
&gt; -            if (static_cast&lt;CachedFont*&gt;(cachedResource)-&gt;stillNeedsLoad())
&gt; +            if (cachedResource-&gt;stillNeedsLoad())
&gt;                  continue;

This one, I think, is OK, because its nice to not have the casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897843</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-06 10:28:07 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 203926 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203926&amp;action=review
&gt; 
&gt; Good to make functions as private as possible. But if someone does have a reason to call a function directly, then I think it’s OK to have some of these be public. But then it’s helpful to have them be FINAL so we don’t do a virtual function dispatch for no good reason.
&gt; 
&gt; But why no FINAL?

You mean making all of them FINAL or just the public ones? because the private ones will always do a a virtual function dispatch.

&gt; &gt; Source/WebCore/html/ImageDocument.cpp:137
&gt; &gt; -    CachedImage* cachedImage = document()-&gt;cachedImage();
&gt; &gt; +    CachedResource* cachedImage = document()-&gt;cachedImage();
&gt; 
&gt; This change isn’t good even though it allows us to make overrides private. I suggest leaving the overrides public instead if they are called like this, but marking either the function or the class or both FINAL if they are never overridden further. That way we get a non-virtual function call, slightly more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897845</commentid>
    <comment_count>4</comment_count>
      <attachid>203948</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-06 10:36:10 -0700</bug_when>
    <thetext>Created attachment 203948
Updated patch

Leave data as public in CachedImage as it&apos;s used directly and make it FINAL too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897900</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-06-06 13:34:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; You mean making all of them FINAL or just the public ones? because the private ones will always do a a virtual function dispatch.

They should all be FINAL.

Even the private ones might be called from inside the class. Making them private doesn’t make them uncallable. We want all virtual functions to be FINAL unless we override them. This creates opportunities for the compiler to do optimizations it otherwise couldn’t do.

One shortcut is that we can get the same optimization without marking any virtual functions FINAL if the entire class is marked FINAL.

But we should be in the habit of marking almost every virtual function FINAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898057</commentid>
    <comment_count>6</comment_count>
      <attachid>204011</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-07 01:00:57 -0700</bug_when>
    <thetext>Created attachment 204011
Patch for landing

Mark the classes as FINAL as suggested by Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898065</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-07 01:57:54 -0700</bug_when>
    <thetext>Committed r151310: &lt;http://trac.webkit.org/changeset/151310&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203926</attachid>
            <date>2013-06-06 05:50:21 -0700</date>
            <delta_ts>2013-06-06 10:36:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-cached-resource-virtuals.diff</filename>
            <type>text/plain</type>
            <size>16990</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjOTRlY2M2Li42NGUwYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkg
QEAKIDIwMTMtMDYtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIE1ha2UgQ2FjaGVkUmVzb3VyY2UgdmlydHVhbCBtZXRob2RzIG92ZXJyaWRk
ZW4gaW4gZGVyaXZlZCBjbGFzc2VzIHByaXZhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFuZCBtYXJrIHRoZW0gYXMgT1ZFUlJJREUgdG9vLgorCisg
ICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9j
dW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZSk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2hh
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisKKzIwMTMtMDYtMDYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFJlc291
cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBzaG91bGQgbm90IHJldHVybiBhIFBhc3NSZWZQdHIK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzI4OAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCAyYjU5MmJjLi4xMTVmMjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBA
QCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwg
Y29uc3QgY2hhciosIHNpemVfdCkKICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
PmFsbG93SW1hZ2UoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCksIGRv
Y3VtZW50KCktPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZG9jdW1lbnQoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkSW1hZ2UgPSBkb2N1bWVudCgpLT5jYWNoZWRJbWFnZSgpOwogICAgIFJlZlB0cjxS
ZXNvdXJjZUJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgY2FjaGVkSW1hZ2UtPmRhdGEocmVzb3Vy
Y2VEYXRhLmdldCgpLCBmYWxzZSk7CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEltYWdlRG9j
dW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIHNp
emVfdCkKIHZvaWQgSW1hZ2VEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKIHsKICAgICBpZiAoIWlz
U3RvcHBlZCgpICYmIGRvY3VtZW50KCktPmltYWdlRWxlbWVudCgpKSB7Ci0gICAgICAgIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvY3VtZW50KCktPmNhY2hlZEltYWdlKCk7CisgICAgICAg
IENhY2hlZFJlc291cmNlKiBjYWNoZWRJbWFnZSA9IGRvY3VtZW50KCktPmNhY2hlZEltYWdlKCk7
CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gZGF0YSA9IGRvY3VtZW50KCktPmZyYW1l
KCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhl
IGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKQEAgLTE1OSw3ICsxNTksNyBA
QCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAKICAgICAgICAgLy8gUmVwb3J0
IHRoZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBhZ2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Yg
em9vbSBsZXZlbC4KICAgICAgICAgLy8gQXQgYSB6b29tIGxldmVsIG9mIDEgdGhlIGltYWdlIGlz
IGd1YXJhbnRlZWQgdG8gaGF2ZSBhbiBpbnRlZ2VyIHNpemUuCi0gICAgICAgIEludFNpemUgc2l6
ZSA9IGZsb29yZWRJbnRTaXplKGNhY2hlZEltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihkb2N1
bWVudCgpLT5pbWFnZUVsZW1lbnQoKS0+cmVuZGVyZXIoKSwgMS4wZikpOworICAgICAgICBJbnRT
aXplIHNpemUgPSBmbG9vcmVkSW50U2l6ZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGNhY2hl
ZEltYWdlKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoZG9jdW1lbnQoKS0+aW1hZ2VFbGVtZW50KCkt
PnJlbmRlcmVyKCksIDEuMGYpKTsKICAgICAgICAgaWYgKHNpemUud2lkdGgoKSkgewogICAgICAg
ICAgICAgLy8gQ29tcHV0ZSB0aGUgdGl0bGUsIHdlIHVzZSB0aGUgZGVjb2RlZCBmaWxlbmFtZSBv
ZiB0aGUgcmVzb3VyY2UsIGZhbGxpbmcKICAgICAgICAgICAgIC8vIGJhY2sgb24gdGhlIChkZWNv
ZGVkKSBob3N0bmFtZSBpZiB0aGVyZSBpcyBubyBwYXRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAwZDgwNTkwLi4xZjRjM2UzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtNTQ1LDEyICs1NDUsOSBAQCBzdGF0aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVk
UmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBzd2l0Y2ggKGNhY2hlZFJl
c291cmNlLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNv
dXJjZToKICAgICAgICAgICAgIC8vIFNraXAgaW1hZ2VzIHRoYXQgd2VyZSBub3QgYXV0byBsb2Fk
ZWQgKGltYWdlcyBkaXNhYmxlZCBpbiB0aGUgdXNlciBhZ2VudCkuCi0gICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihjYWNoZWRSZXNvdXJjZSktPnN0aWxsTmVlZHNMb2Fk
KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgogICAgICAgICAgICAgLy8gU2tp
cCBmb250cyB0aGF0IHdlcmUgcmVmZXJlbmNlZCBpbiBDU1MgYnV0IG5ldmVyIHVzZWQvZG93bmxv
YWRlZC4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDYWNoZWRGb250Kj4oY2FjaGVkUmVz
b3VyY2UpLT5zdGlsbE5lZWRzTG9hZCgpKQorICAgICAgICAgICAgaWYgKGNhY2hlZFJlc291cmNl
LT5zdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCBjYTUxNzBkLi5jMDM0NzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgK
QEAgLTQzLDIxICs0MywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3Qg
U3RyaW5nIHNoZWV0VGV4dChib29sIGVuZm9yY2VNSU1FVHlwZSA9IHRydWUsIGJvb2wqIGhhc1Zh
bGlkTUlNRVR5cGUgPSAwKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVy
KiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURl
Y29kZWREYXRhKCkgT1ZFUlJJREU7Ci0KICAgICAgICAgUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29u
dGVudHM+IHJlc3RvcmVQYXJzZWRTdHlsZVNoZWV0KGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsK
ICAgICAgICAgdm9pZCBzYXZlUGFyc2VkU3R5bGVTaGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRD
b250ZW50cz4pOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5Vc2VTaGVldChib29s
IGVuZm9yY2VNSU1FVHlwZSwgYm9vbCogaGFzVmFsaWRNSU1FVHlwZSkgY29uc3Q7Ci0gICAgICAg
IHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVy
Z2VMYXN0OyB9CisgICAgICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gUHVyZ2VMYXN0OyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCopIE9WRVJSSURFOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIq
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBPVkVSUklERTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IGM1YmUzNjkuLmY1NThmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNDQsMTMgKzQ0LDcgQEAgY2xhc3MgQ2FjaGVkRm9u
dCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgQ2FjaGVkRm9udChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRGb250KCk7Ci0gICAgCi0g
ICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlcios
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVt
b3ZlZCgpOwogICAgIHZvaWQgYmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGRsKTsKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gIW1fbG9hZElu
aXRpYXRlZDsgfQogCkBAIC02Niw2ICs2MCwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBjaGVja05vdGlmeSgpOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERh
dGEoKSBjb25zdCBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJikgT1ZFUlJJREU7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQo
KSBPVkVSUklERTsKKwogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIG1fZm9udERhdGE7CiAg
ICAgYm9vbCBtX2xvYWRJbml0aWF0ZWQ7CiAgICAgYm9vbCBtX2hhc0NyZWF0ZWRGb250RGF0YTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggN2Q1MTAxOS4u
MzZjZjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAg
LTQ4LDggKzQ4LDYgQEAgcHVibGljOgogICAgIENhY2hlZEltYWdlKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIENhY2hlZEltYWdlKEltYWdlKik7CiAgICAgdmlydHVhbCB+Q2FjaGVkSW1h
Z2UoKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgSW1hZ2UqIGltYWdlKCk7IC8v
IFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHll
dC4KICAgICBJbWFnZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8g
UmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0
LgpAQCAtNzAsMzMgKzY4LDExIEBAIHB1YmxpYzoKICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZUZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpOyAvLyByZXR1
cm5zIHRoZSBzaXplIG9mIHRoZSBjb21wbGV0ZSBpbWFnZS4KICAgICB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2lj
SGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
YWxsQ2xpZW50c1JlbW92ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1
cyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotICAgIAotICAgIC8vIEZvciBjb21wYXRpYmlsaXR5LCBpbWFnZXMga2VlcCBsb2Fk
aW5nIGV2ZW4gaWYgdGhlcmUgYXJlIEhUVFAgZXJyb3JzLgotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQot
ICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFlcnJv
ck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0KLQot
ICAgIC8vIEltYWdlT2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2Vk
KGNvbnN0IEltYWdlKiBpbWFnZSwgaW50IGRlbHRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRHJh
dyhjb25zdCBJbWFnZSopOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZFBhdXNlQW5pbWF0aW9u
KGNvbnN0IEltYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0
IEltYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBj
b25zdCBJbnRSZWN0Jik7Ci0KICAgICBzdGF0aWMgdm9pZCByZXN1bWVBbmltYXRpbmdJbWFnZXNG
b3JMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYpIE9WRVJSSURFOworCiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgdm9pZCBjcmVhdGVJ
bWFnZSgpOwpAQCAtMTA0LDEyICs4MCwzNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtYXhpbXVt
RGVjb2RlZEltYWdlU2l6ZSgpOwogICAgIC8vIElmIG5vdCBudWxsLCBjaGFuZ2VSZWN0IGlzIHRo
ZSBjaGFuZ2VkIHBhcnQgb2YgdGhlIGltYWdlLgogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNv
bnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSAwKTsKLSAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkg
cHVyZ2VQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIFB1cmdlRmlyc3Q7IH0KKyAgICB2aXJ0dWFs
IFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFB1
cmdlRmlyc3Q7IH0KICAgICB2b2lkIGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1
YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJl
c291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJ
REU7CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSwgaW1hZ2VzIGtlZXAgbG9hZGluZyBldmVu
IGlmIHRoZXJlIGFyZSBIVFRQIGVycm9ycy4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3Jl
SFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiAhZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGlu
ZygpOyB9CisKKyAgICAvLyBJbWFnZU9ic2VydmVyCisgICAgdmlydHVhbCB2b2lkIGRlY29kZWRT
aXplQ2hhbmdlZChjb25zdCBJbWFnZSosIGludCBkZWx0YSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRQYXVzZUFuaW1hdGlvbihjb25zdCBJbWFnZSopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRpb25BZHZhbmNlZChjb25zdCBJbWFnZSopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlKiwgY29uc3QgSW50UmVjdCYpIE9W
RVJSSURFOworCiAgICAgdHlwZWRlZiBwYWlyPEludFNpemUsIGZsb2F0PiBTaXplQW5kWm9vbTsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBTaXplQW5kWm9v
bT4gQ29udGFpbmVyU2l6ZVJlcXVlc3RzOwogICAgIENvbnRhaW5lclNpemVSZXF1ZXN0cyBtX3Bl
bmRpbmdDb250YWluZXJTaXplUmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDViZjAwMTcuLjRiYTYyMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC00Niwy
MiArNDYsMjIgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgdmlydHVhbCBi
b29sIGNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwotCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3Jl
SFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9y
ZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2
b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBib29sIGNhblJldXNlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOworCiAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZp
ZXI7CiAKICAgICBzdHJ1Y3QgUmVkaXJlY3RQYWlyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggYWI3MDBjNy4uNDU0OGFhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAg
LTM4LDE2ICszOCwxNSBAQCBwdWJsaWM6CiAKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKLQogcHJvdGVjdGVkOgogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggZDJmNzdj
ZS4uYTYwYzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aApAQCAtNDAsMjIgKzQwLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBjb25z
dCBTdHJpbmcmIHNjcmlwdCgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmKTsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKTsKICNpZiBFTkFCTEUoTk9TTklGRikKICAg
ICAgICAgYm9vbCBtaW1lVHlwZUFsbG93ZWRCeU5vc25pZmYoKSBjb25zdDsKICNlbmRpZgogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHko
KSBjb25zdCB7IHJldHVybiBQdXJnZUxhc3Q7IH0KKyAgICAgICAgdmlydHVhbCBQdXJnZVByaW9y
aXR5IHB1cmdlUHJpb3JpdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBQdXJnZUxhc3Q7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdu
b3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBPVkVSUklERTsKIAorICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgICAgIHZp
cnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJSSURF
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBPVkVSUklERTsK
KwogICAgICAgICBTdHJpbmcgbV9zY3JpcHQ7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTaGFkZXIuaAppbmRleCBiY2E1ZmZhLi45ZDEwMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkNhY2hlZFNoYWRlcigpOwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgc2hh
ZGVyU3RyaW5nKCk7Ci0gICAgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5j
b2RlZERhdGEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7
CiAKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgIFN0cmlu
ZyBtX3NoYWRlclN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAppbmRleCA1YzAyZWY3Li44NTliYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zOCwxMCArMzgsOSBAQCBwdWJsaWM6
CiAgICAgQ2FjaGVkVGV4dFRyYWNrKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1
YWwgfkNhY2hlZFRleHRUcmFjaygpOwogCi0gICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VC
dWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBPVkVSUklERTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IGY2YzM1NWMuLjcxMWEzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
aApAQCAtNDAsMTIgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYWNoZWRY
U0xTdHlsZVNoZWV0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgICAgIGNvbnN0IFN0
cmluZyYgc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0OyB9Ci0gICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAg
ICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7Ci0g
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKTsKQEAgLTU1LDYg
KzQ5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCopIE9WRVJSSURFOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3Vy
Y2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CiAgICAgfTsKIAogI2Vu
ZGlmCg==
</data>
<flag name="review"
          id="225401"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203948</attachid>
            <date>2013-06-06 10:36:10 -0700</date>
            <delta_ts>2013-06-07 01:00:57 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wcore-cached-resource-virtuals2.diff</filename>
            <type>text/plain</type>
            <size>15194</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWMwODg3Li4xNTk4ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYg
QEAKIDIwMTMtMDYtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIE1ha2UgQ2FjaGVkUmVzb3VyY2UgdmlydHVhbCBtZXRob2RzIG92ZXJyaWRk
ZW4gaW4gZGVyaXZlZCBjbGFzc2VzIHByaXZhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFuZCBtYXJrIHRoZW0gYXMgT1ZFUlJJREUgdG9vLgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisKKzIwMTMtMDYtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEo
KSBzaG91bGQgbm90IHJldHVybiBhIFBhc3NSZWZQdHIKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzI4OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDBkODA1OTAuLjFmNGMzZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC01NDUsMTIgKzU0NSw5IEBAIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRS
ZXNvdXJjZXNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHN3aXRjaCAoY2FjaGVkUmVz
b3VyY2UtPnR5cGUoKSkgewogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291
cmNlOgogICAgICAgICAgICAgLy8gU2tpcCBpbWFnZXMgdGhhdCB3ZXJlIG5vdCBhdXRvIGxvYWRl
ZCAoaW1hZ2VzIGRpc2FibGVkIGluIHRoZSB1c2VyIGFnZW50KS4KLSAgICAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGNhY2hlZFJlc291cmNlKS0+c3RpbGxOZWVkc0xvYWQo
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CiAgICAgICAgICAgICAvLyBTa2lw
IGZvbnRzIHRoYXQgd2VyZSByZWZlcmVuY2VkIGluIENTUyBidXQgbmV2ZXIgdXNlZC9kb3dubG9h
ZGVkLgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENhY2hlZEZvbnQqPihjYWNoZWRSZXNv
dXJjZSktPnN0aWxsTmVlZHNMb2FkKCkpCisgICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2Ut
PnN0aWxsTmVlZHNMb2FkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IGNhNTE3MGQuLmMwMzQ3N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApA
QCAtNDMsMjEgKzQzLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBjb25zdCBT
dHJpbmcgc2hlZXRUZXh0KGJvb2wgZW5mb3JjZU1JTUVUeXBlID0gdHJ1ZSwgYm9vbCogaGFzVmFs
aWRNSU1FVHlwZSA9IDApIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIq
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBPVkVSUklERTsKLQogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250
ZW50cz4gcmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwog
ICAgICAgICB2b2lkIHNhdmVQYXJzZWRTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENv
bnRlbnRzPik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGNhblVzZVNoZWV0KGJvb2wg
ZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZE1JTUVUeXBlKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQdXJn
ZUxhc3Q7IH0KKyAgICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBQdXJnZUxhc3Q7IH0KICAgICAgICAgdmlydHVhbCBib29s
IG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KIAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50KikgT1ZFUlJJREU7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlcios
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YSgpIE9WRVJSSURFOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKaW5kZXggYzViZTM2OS4uZjU1OGZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC00NCwxMyArNDQsNyBAQCBjbGFzcyBDYWNoZWRGb250
IDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKICAgICBDYWNoZWRGb250KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnQoKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCopOwotICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotCi0gICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1v
dmVkKCk7CiAgICAgdm9pZCBiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciog
ZGwpOwogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiAhbV9sb2FkSW5p
dGlhdGVkOyB9CiAKQEAgLTY2LDYgKzYwLDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrTm90aWZ5KCk7CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0
YSgpIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBPVkVSUklERTsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgp
IE9WRVJSSURFOworCiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogbV9mb250RGF0YTsKICAg
ICBib29sIG1fbG9hZEluaXRpYXRlZDsKICAgICBib29sIG1faGFzQ3JlYXRlZEZvbnREYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA3ZDUxMDE5Li5i
NTY0YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
NDgsOCArNDgsNiBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkSW1hZ2UoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgQ2FjaGVkSW1hZ2UoSW1hZ2UqKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRJbWFn
ZSgpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAKICAgICBJbWFnZSogaW1hZ2UoKTsgLy8g
UmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0
LgogICAgIEltYWdlKiBpbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBS
ZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQu
CkBAIC02NSwzOCArNjMsMTggQEAgcHVibGljOgogICAgIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVy
U2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Q7CiAg
ICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Q7Ci0gICAgCisKKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBPVkVS
UklERSBGSU5BTDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIHRha2VzIGEgem9vbSBtdWx0aXBsaWVy
IHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5jcmVhc2UgdGhlIG5hdHVyYWwgc2l6ZSBvZiB0aGUgaW1h
Z2UgYnkgdGhlIHpvb20uCiAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemVGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKTsgLy8gcmV0dXJucyB0aGUgc2l6ZSBv
ZiB0aGUgY29tcGxldGUgaW1hZ2UuCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9u
cyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRT
aXplJiBpbnRyaW5zaWNSYXRpbyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1v
dmVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwotCi0gICAgdmly
dHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwotICAgIHZpcnR1
YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAK
LSAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSwgaW1hZ2VzIGtlZXAgbG9hZGluZyBldmVuIGlmIHRo
ZXJlIGFyZSBIVFRQIGVycm9ycy4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0
YXR1c0NvZGVFcnJvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3Rp
bGxOZWVkc0xvYWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhZXJyb3JPY2N1cnJlZCgpICYm
IHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGluZygpOyB9Ci0KLSAgICAvLyBJbWFnZU9i
c2VydmVyCi0gICAgdmlydHVhbCB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSog
aW1hZ2UsIGludCBkZWx0YSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2Uq
KTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYXVzZUFuaW1hdGlvbihjb25zdCBJbWFnZSop
OwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25BZHZhbmNlZChjb25zdCBJbWFnZSopOwotICAg
IHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlKiwgY29uc3QgSW50UmVjdCYp
OwotCiAgICAgc3RhdGljIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2VzRm9yTG9hZGVyKENhY2hl
ZFJlc291cmNlTG9hZGVyKik7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGxvYWQoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBPVkVSUklE
RTsKKwogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIHZvaWQgY3JlYXRlSW1hZ2UoKTsKQEAgLTEw
NCwxMiArODIsMzUgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbWF4aW11bURlY29kZWRJbWFnZVNp
emUoKTsKICAgICAvLyBJZiBub3QgbnVsbCwgY2hhbmdlUmVjdCBpcyB0aGUgY2hhbmdlZCBwYXJ0
IG9mIHRoZSBpbWFnZS4KICAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhjb25zdCBJbnRSZWN0KiBj
aGFuZ2VSZWN0ID0gMCk7Ci0gICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHko
KSBjb25zdCB7IHJldHVybiBQdXJnZUZpcnN0OyB9CisgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5
IHB1cmdlUHJpb3JpdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBQdXJnZUZpcnN0OyB9CiAg
ICAgdm9pZCBjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50KikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xp
ZW50c1JlbW92ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6
OlN0YXR1cykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFOworCisgICAgLy8gRm9yIGNvbXBhdGliaWxp
dHksIGltYWdlcyBrZWVwIGxvYWRpbmcgZXZlbiBpZiB0aGVyZSBhcmUgSFRUUCBlcnJvcnMuCisg
ICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHN0aWxsTmVl
ZHNMb2FkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiBzdGF0
dXMoKSA9PSBVbmtub3duICYmICFpc0xvYWRpbmcoKTsgfQorCisgICAgLy8gSW1hZ2VPYnNlcnZl
cgorICAgIHZpcnR1YWwgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UqLCBpbnQg
ZGVsdGEpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlKikg
T1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGF1c2VBbmltYXRpb24oY29uc3Qg
SW1hZ2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uQWR2YW5jZWQoY29u
c3QgSW1hZ2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKwogICAgIHR5cGVkZWYgcGFpcjxJ
bnRTaXplLCBmbG9hdD4gU2l6ZUFuZFpvb207CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENh
Y2hlZEltYWdlQ2xpZW50KiwgU2l6ZUFuZFpvb20+IENvbnRhaW5lclNpemVSZXF1ZXN0czsKICAg
ICBDb250YWluZXJTaXplUmVxdWVzdHMgbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJlcXVlc3RzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRl
eCA1YmYwMDE3Li40YmE2MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNDYsMjIgKzQ2LDIyIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xlYXIoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdDsKLQogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3VyY2VC
dWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
YXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1Jl
bW92ZWQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRl
ZFJlc291cmNlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNv
ZGVkRGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKKwog
ICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwogCiAgICAgc3RydWN0IFJlZGlyZWN0UGFp
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CmluZGV4IGFiNzAwYzcuLjQ1NDhhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC0zOCwxNiArMzgsMTUgQEAgcHVibGljOgogCiAg
ICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQo
KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOwotICAg
IHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGEo
UmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0KIHByb3RlY3RlZDoKICAg
ICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5
UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJSSURFOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oCmluZGV4IGQyZjc3Y2UuLmE2MGMzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQwLDIyICs0MCwyNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZpcnR1
YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJl
c291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICBTdHJpbmcgbWlt
ZVR5cGUoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCk7CiAjaWYgRU5BQkxFKE5PU05JRkYpCiAgICAgICAgIGJvb2wgbWltZVR5cGVBbGxvd2VkQnlO
b3NuaWZmKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVyZ2VMYXN0OyB9
CisgICAgICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gUHVyZ2VMYXN0OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlS
ZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29u
c3QgT1ZFUlJJREU7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBPVkVSUklERTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveURlY29kZWREYXRhKCkgT1ZFUlJJREU7CisKICAgICAgICAgU3RyaW5nIG1fc2NyaXB0Owog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKaW5kZXggYmNhNWZmYS4u
OWQxMDFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNo
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaApA
QCAtNDQsMTAgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTaGFkZXIoKTsK
ICAgICAKICAgICBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZygpOwotICAgIHZvaWQgZGF0YShS
ZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJSSURFOwogCiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggNWMwMmVmNy4uODU5
YmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
aApAQCAtMzgsMTAgKzM4LDkgQEAgcHVibGljOgogICAgIENhY2hlZFRleHRUcmFjayhjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRUZXh0VHJhY2soKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OwotCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGEo
UmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
aAppbmRleCBmNmMzNTVjLi43MTFhMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQwLDEyICs0MCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQ2FjaGVkWFNMU3R5bGVTaGVldChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKIAogICAgICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29uc3QgeyByZXR1cm4g
bV9zaGVldDsgfQotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCopOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB2
b2lkIGNoZWNrTm90aWZ5KCk7CkBAIC01NSw2ICs0OSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29k
ZWREYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBPVkVSUklERTsKKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7
CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIE9WRVJSSURFOwogICAgIH07CiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="225438"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204011</attachid>
            <date>2013-06-07 01:00:57 -0700</date>
            <delta_ts>2013-06-07 01:00:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wcore-cached-resource-virtuals3.diff</filename>
            <type>text/plain</type>
            <size>17141</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZjc5ZWUzLi5hZmNmNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTMtMDYtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE1ha2UgQ2FjaGVkUmVzb3VyY2UgdmlydHVhbCBtZXRob2RzIG92ZXJyaWRk
ZW4gaW4gZGVyaXZlZCBjbGFzc2VzIHByaXZhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIEFuZCBtYXJrIHRoZW0gYXMgT1ZFUlJJREUgdG9vLiBBbHNvIG1h
cmsgYWxsIENhY2hlZFJlc291cmNlCisgICAgICAgIGRlcml2ZWQgY2xhc3NlcyBhcyBGSU5BTC4K
KworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oOgorCiAyMDEzLTA2LTA2ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhh
bkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBNaW5vciBjb2RlIGNsZWFudXAgdG8gcmVtb3ZlIHVu
dXNlZCBoZWFkZXIgaW5jbHVkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMGQ4MDU5MC4uMWY0YzNlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU0NSwxMiArNTQ1
LDkgQEAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZy
YW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgc3dpdGNoIChjYWNoZWRSZXNvdXJjZS0+dHlwZSgp
KSB7CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAg
ICAgICAvLyBTa2lwIGltYWdlcyB0aGF0IHdlcmUgbm90IGF1dG8gbG9hZGVkIChpbWFnZXMgZGlz
YWJsZWQgaW4gdGhlIHVzZXIgYWdlbnQpLgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENh
Y2hlZEltYWdlKj4oY2FjaGVkUmVzb3VyY2UpLT5zdGlsbE5lZWRzTG9hZCgpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKICAgICAgICAgICAgIC8vIFNraXAgZm9udHMgdGhhdCB3
ZXJlIHJlZmVyZW5jZWQgaW4gQ1NTIGJ1dCBuZXZlciB1c2VkL2Rvd25sb2FkZWQuCi0gICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udCo+KGNhY2hlZFJlc291cmNlKS0+c3RpbGxO
ZWVkc0xvYWQoKSkKKyAgICAgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZS0+c3RpbGxOZWVkc0xv
YWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmgKaW5kZXggY2E1MTcwZC4uNGJmNGRiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC0zNiwyOCArMzYs
MjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7
CiAgICAgc3RydWN0IENTU1BhcnNlckNvbnRleHQ7CiAKLSAgICBjbGFzcyBDYWNoZWRDU1NTdHls
ZVNoZWV0IDogcHVibGljIENhY2hlZFJlc291cmNlIHsKKyAgICBjbGFzcyBDYWNoZWRDU1NTdHls
ZVNoZWV0IEZJTkFMIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIENhY2hlZENTU1N0eWxlU2hlZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0KTsKICAgICAgICAgdmlydHVhbCB+Q2FjaGVkQ1NTU3R5bGVTaGVldCgpOwog
CiAgICAgICAgIGNvbnN0IFN0cmluZyBzaGVldFRleHQoYm9vbCBlbmZvcmNlTUlNRVR5cGUgPSB0
cnVlLCBib29sKiBoYXNWYWxpZE1JTUVUeXBlID0gMCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwotICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0
YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIE9WRVJSSURFOwotCiAgICAgICAgIFBhc3NSZWZQ
dHI8U3R5bGVTaGVldENvbnRlbnRzPiByZXN0b3JlUGFyc2VkU3R5bGVTaGVldChjb25zdCBDU1NQ
YXJzZXJDb250ZXh0Jik7CiAgICAgICAgIHZvaWQgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1Jl
ZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
Y2FuVXNlU2hlZXQoYm9vbCBlbmZvcmNlTUlNRVR5cGUsIGJvb2wqIGhhc1ZhbGlkTUlNRVR5cGUp
IGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNv
bnN0IHsgcmV0dXJuIFB1cmdlTGFzdDsgfQorICAgICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkg
cHVyZ2VQcmlvcml0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFB1cmdlTGFzdDsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQo
Q2FjaGVkUmVzb3VyY2VDbGllbnQqKSBPVkVSUklERTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRh
KFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJSSURFOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgT1ZFUlJJREU7CisKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBjNWJlMzY5Li44YWQ4MWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTQwLDE3ICs0MCwxMSBA
QCBjbGFzcyBTVkdEb2N1bWVudDsKIGNsYXNzIFNWR0ZvbnRFbGVtZW50Owogc3RydWN0IEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CiAKLWNsYXNzIENhY2hlZEZvbnQgOiBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2UgeworY2xhc3MgQ2FjaGVkRm9udCBGSU5BTCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7
CiBwdWJsaWM6CiAgICAgQ2FjaGVkRm9udChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
aXJ0dWFsIH5DYWNoZWRGb250KCk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpOwogICAgIHZvaWQgYmVnaW5Mb2Fk
SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGRsKTsKICAgICBib29sIHN0aWxsTmVlZHNM
b2FkKCkgY29uc3QgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCkBAIC02Niw2ICs2MCwx
MyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOwogICAgIHZpcnR1
YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBPVkVSUklERTsKIAorICAg
IHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRhdGEo
UmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CisKKyAgICB2
aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBPVkVSUklERTsKKwogICAgIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEqIG1fZm9udERhdGE7CiAgICAgYm9vbCBtX2xvYWRJbml0aWF0ZWQ7CiAg
ICAgYm9vbCBtX2hhc0NyZWF0ZWRGb250RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKaW5kZXggN2Q1MTAxOS4uY2M1NjYzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTQxLDE1ICs0MSwxMyBAQCBjbGFzcyBNZW1v
cnlDYWNoZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIHN0cnVjdCBMZW5ndGg7CiAKLWNsYXNzIENh
Y2hlZEltYWdlIDogcHVibGljIENhY2hlZFJlc291cmNlLCBwdWJsaWMgSW1hZ2VPYnNlcnZlciB7
CitjbGFzcyBDYWNoZWRJbWFnZSBGSU5BTCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSwgcHVibGlj
IEltYWdlT2JzZXJ2ZXIgewogICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlDYWNoZTsKIAogcHVibGlj
OgogICAgIENhY2hlZEltYWdlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIENhY2hlZElt
YWdlKEltYWdlKik7CiAgICAgdmlydHVhbCB+Q2FjaGVkSW1hZ2UoKTsKLSAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYpOwogCiAgICAgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhlIG51bGxJbWFn
ZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBJbWFnZSogaW1hZ2VG
b3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdl
KCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgpAQCAtNjUsMzggKzYzLDE4IEBA
IHB1YmxpYzoKICAgICBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdDsKICAgICBi
b29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpIGNvbnN0OwotICAgIAorCisgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3Vy
Y2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CisKICAgICAvLyBUaGlz
IG1ldGhvZCB0YWtlcyBhIHpvb20gbXVsdGlwbGllciB0aGF0IGNhbiBiZSB1c2VkIHRvIGluY3Jl
YXNlIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlIGltYWdlIGJ5IHRoZSB6b29tLgogICAgIExheW91
dFNpemUgaW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVs
dGlwbGllcik7IC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIGNvbXBsZXRlIGltYWdlLgogICAg
IHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwg
TGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNlQnVm
ZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNo
ZWRSZXNvdXJjZTo6U3RhdHVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgCi0gICAgLy8gRm9yIGNvbXBhdGliaWxpdHks
IGltYWdlcyBrZWVwIGxvYWRpbmcgZXZlbiBpZiB0aGVyZSBhcmUgSFRUUCBlcnJvcnMuCi0gICAg
dmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiBzdGF0dXMoKSA9PSBVbmtub3duICYmICFp
c0xvYWRpbmcoKTsgfQotCi0gICAgLy8gSW1hZ2VPYnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBk
ZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UqIGltYWdlLCBpbnQgZGVsdGEpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlKik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUGF1c2VBbmltYXRpb24oY29uc3QgSW1hZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0
aW9uQWR2YW5jZWQoY29uc3QgSW1hZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVj
dChjb25zdCBJbWFnZSosIGNvbnN0IEludFJlY3QmKTsKLQogICAgIHN0YXRpYyB2b2lkIHJlc3Vt
ZUFuaW1hdGluZ0ltYWdlc0ZvckxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCiBwcml2
YXRlOgorICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJikgT1ZFUlJJREU7CisKICAgICB2b2lkIGNsZWFyKCk7CiAK
ICAgICB2b2lkIGNyZWF0ZUltYWdlKCk7CkBAIC0xMDQsMTIgKzgyLDM1IEBAIHByaXZhdGU6CiAg
ICAgc2l6ZV90IG1heGltdW1EZWNvZGVkSW1hZ2VTaXplKCk7CiAgICAgLy8gSWYgbm90IG51bGws
IGNoYW5nZVJlY3QgaXMgdGhlIGNoYW5nZWQgcGFydCBvZiB0aGUgaW1hZ2UuCiAgICAgdm9pZCBu
b3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IDApOwotICAgIHZpcnR1
YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVyZ2VGaXJz
dDsgfQorICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gUHVyZ2VGaXJzdDsgfQogICAgIHZvaWQgY2hlY2tTaG91bGRQYWludEJy
b2tlbkltYWdlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0
ZWRSZXNvdXJjZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5j
b2RlZERhdGEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIE9WRVJS
SURFOworCisgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIE9WRVJSSURFOworCisgICAgdmly
dHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBPVkVS
UklERTsKKworICAgIC8vIEZvciBjb21wYXRpYmlsaXR5LCBpbWFnZXMga2VlcCBsb2FkaW5nIGV2
ZW4gaWYgdGhlcmUgYXJlIEhUVFAgZXJyb3JzLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25v
cmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2Fk
aW5nKCk7IH0KKworICAgIC8vIEltYWdlT2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGVjb2Rl
ZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlKiwgaW50IGRlbHRhKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSopIE9WRVJSSURFOworCisgICAgdmlydHVhbCBi
b29sIHNob3VsZFBhdXNlQW5pbWF0aW9uKGNvbnN0IEltYWdlKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBjb25zdCBJbnRSZWN0Jikg
T1ZFUlJJREU7CisKICAgICB0eXBlZGVmIHBhaXI8SW50U2l6ZSwgZmxvYXQ+IFNpemVBbmRab29t
OwogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFNpemVBbmRa
b29tPiBDb250YWluZXJTaXplUmVxdWVzdHM7CiAgICAgQ29udGFpbmVyU2l6ZVJlcXVlc3RzIG1f
cGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNWJmMDAxNy4uNWVmNTBiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTMw
LDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGll
bnQ7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAotY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2Ug
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgRklOQUwg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgogICAgIENhY2hlZFJhd1Jlc291cmNl
KFJlc291cmNlUmVxdWVzdCYsIFR5cGUpOwogCkBAIC00NiwyMiArNDYsMjIgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgdmlydHVhbCBib29sIGNhblJldXNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIGNvbnN0OwotCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkaWRB
ZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YShS
ZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1v
dmVkKCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3Jz
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBhbGxD
bGllbnRzUmVtb3ZlZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHN3aXRjaENsaWVudHNUb1Jl
dmFsaWRhdGVkUmVzb3VyY2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVw
bGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAg
dmlydHVhbCBib29sIGNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJS
SURFOworCiAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAKICAgICBzdHJ1Y3QgUmVk
aXJlY3RQYWlyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKaW5kZXggYWI3MDBjNy4uYmFmOWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTMxLDIzICszMSwyMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENhY2hlZFNWR0RvY3VtZW50IDogcHVibGljIENh
Y2hlZFJlc291cmNlIHsKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50IEZJTkFMIDogcHVibGljIENh
Y2hlZFJlc291cmNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudCgp
OwogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVu
dC5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0KIHByb3RlY3Rl
ZDoKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
bWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJS
SURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IGQyZjc3Y2UuLjFlOGU5MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTMzLDI5ICszMywzMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAg
Y2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAotICAgIGNsYXNzIENhY2hlZFNjcmlwdCA6IHB1
YmxpYyBDYWNoZWRSZXNvdXJjZSB7CisgICAgY2xhc3MgQ2FjaGVkU2NyaXB0IEZJTkFMIDogcHVi
bGljIENhY2hlZFJlc291cmNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENhY2hlZFNjcmlwdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgICAgICB2
aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsKIAogICAgICAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgp
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKTsKLSAg
ICAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgICAg
IFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoKTsKICNpZiBFTkFCTEUoTk9TTklGRikKICAgICAgICAgYm9vbCBtaW1lVHlw
ZUFsbG93ZWRCeU5vc25pZmYoKSBjb25zdDsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQ
dXJnZUxhc3Q7IH0KKyAgICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHko
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBQdXJnZUxhc3Q7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCBPVkVSUklERTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNl
QnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIE9WRVJSSURFOworCisgICAgICAgIHZpcnR1
YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBPVkVSUklERTsKKwogICAgICAgICBTdHJpbmcg
bV9zY3JpcHQ7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
aGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaAppbmRl
eCBiY2E1ZmZhLi4zMjkyMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNoYWRlci5oCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCi1jbGFzcyBDYWNoZWRTaGFkZXIgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2UgeworY2xhc3MgQ2FjaGVkU2hhZGVyIEZJTkFMIDogcHVibGljIENhY2hlZFJl
c291cmNlIHsKIHB1YmxpYzoKICAgICBDYWNoZWRTaGFkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdmlydHVhbCB+Q2FjaGVkU2hhZGVyKCk7CiAgICAgCiAgICAgY29uc3QgU3RyaW5n
JiBzaGFkZXJTdHJpbmcoKTsKLSAgICB2b2lkIGRhdGEoUmVzb3VyY2VCdWZmZXIqLCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxh
Y2VFbmNvZGVkRGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBPVkVS
UklERTsKIAogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAg
U3RyaW5nIG1fc2hhZGVyU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCmluZGV4IDVjMDJlZjcuLjhhZTg2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTMzLDE1ICszMywxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENhY2hlZFRleHRUcmFjayA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CitjbGFzcyBDYWNoZWRUZXh0VHJhY2sgRklOQUwgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2UgewogcHVibGljOgogICAgIENhY2hlZFRleHRUcmFjayhjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRUZXh0VHJhY2soKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUmVzb3Vy
Y2VCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCkgT1ZFUlJJREU7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRl
eCBmNmMzNTVjLi44YjczNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTM1LDE3ICszNSwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogI2lmIEVOQUJMRShYU0xU
KQotICAgIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2Ug
eworICAgIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQgRklOQUwgOiBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2UgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkWFNMU3R5bGVTaGVldChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGVldDsgfQotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwotICAgICAgICAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YShSZXNvdXJjZUJ1
ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7CkBAIC01NSw2ICs0OSwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVw
bGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBPVkVS
UklERTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
T1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhKFJlc291cmNlQnVmZmVyKiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIE9WRVJSSURFOwogICAgIH07CiAKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>