<?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>91214</bug_id>
          
          <creation_ts>2012-07-13 04:11:20 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add WebMemorySampler feature.</short_desc>
          <delta_ts>2016-11-08 09:13:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=164517</see_also>
          <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="JungJik Lee">jungjik.lee</reporter>
          <assigned_to name="JungJik Lee">jungjik.lee</assigned_to>
          <cc>benjamin</cc>
    
    <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668844</commentid>
    <comment_count>0</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-07-13 04:11:20 -0700</bug_when>
    <thetext>WebMemorySampler is for logging WebProcess and MiniBrowser&apos;s memory usage in real time.
The log file will be created in /tmp path. and the name of process will be /tmp/WebProcessXXXX and /tmp/MiniBrowserXXXX.
This log includes javascript memory usage, fast malloc memory usage and basic process memory usage(RSS/Shared/Library/Stack).
Basic memory info of the process is taken from /proc/&lt;process_id&gt;/statm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673382</commentid>
    <comment_count>1</comment_count>
      <attachid>153226</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-07-19 04:34:46 -0700</bug_when>
    <thetext>Created attachment 153226
proposal patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673385</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 04:36:32 -0700</bug_when>
    <thetext>Attachment 153226 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/JavaScriptCore/Change...&quot; exit_code: 1
Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:56:  MAX_BUFFER is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:57:  MAX_PROCESS_PATH is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673407</commentid>
    <comment_count>3</comment_count>
      <attachid>153233</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-07-19 05:28:03 -0700</bug_when>
    <thetext>Created attachment 153233
fix style error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674437</commentid>
    <comment_count>4</comment_count>
      <attachid>153474</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-07-20 03:56:44 -0700</bug_when>
    <thetext>Created attachment 153474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674448</commentid>
    <comment_count>5</comment_count>
      <attachid>153474</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-20 04:15:29 -0700</bug_when>
    <thetext>Comment on attachment 153474
Patch

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

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:127
&gt; +WebMemoryStatistics WebMemorySampler::sampleWebKit() const

This is overlapping with Bug 91274. How about making the rest of this patch available in window.internals, too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674471</commentid>
    <comment_count>6</comment_count>
      <attachid>153474</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-07-20 05:22:49 -0700</bug_when>
    <thetext>Comment on attachment 153474
Patch

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

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:127
&gt;&gt; +WebMemoryStatistics WebMemorySampler::sampleWebKit() const
&gt; 
&gt; This is overlapping with Bug 91274. How about making the rest of this patch available in window.internals, too?

Okay, no problem. I will make a new patch in window.internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674473</commentid>
    <comment_count>7</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-20 05:27:51 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 153474 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153474&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:127
&gt; &gt;&gt; +WebMemoryStatistics WebMemorySampler::sampleWebKit() const
&gt; &gt; 
&gt; &gt; This is overlapping with Bug 91274. How about making the rest of this patch available in window.internals, too?
&gt; 
&gt; Okay, no problem. I will make a new patch in window.internals.

The other patch hasn&apos;t received any review - so I am not sure yet, whether that approach is accepted. It would be just good to have a unified approach for both cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674502</commentid>
    <comment_count>8</comment_count>
      <attachid>153474</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-07-20 06:18:33 -0700</bug_when>
    <thetext>Comment on attachment 153474
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:127
&gt;&gt;&gt;&gt; +WebMemoryStatistics WebMemorySampler::sampleWebKit() const
&gt;&gt;&gt; 
&gt;&gt;&gt; This is overlapping with Bug 91274. How about making the rest of this patch available in window.internals, too?
&gt;&gt; 
&gt;&gt; Okay, no problem. I will make a new patch in window.internals.
&gt; 
&gt; The other patch hasn&apos;t received any review - so I am not sure yet, whether that approach is accepted. It would be just good to have a unified approach for both cases.

Well, I agree that it is good to have a unified approach. but I think this patch is a little different from bug 91274. We should add js to test site to profile memory usage and if we do, the result would be different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696131</commentid>
    <comment_count>9</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-08-15 10:50:32 -0700</bug_when>
    <thetext>Perhaps it&apos;s time to revisit this now that bug 91274 has been fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697022</commentid>
    <comment_count>10</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-16 05:27:27 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Perhaps it&apos;s time to revisit this now that bug 91274 has been fixed?

Yes I saw the 91274 patch and it is merged. so how do you think? Do you think this patch still has meaning? My opinion is that those have a similar function but different purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697051</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 06:07:33 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Yes I saw the 91274 patch and it is merged. so how do you think? Do you think this patch still has meaning? My opinion is that those have a similar function but different purpose.

I think you need to explain why this patch is still valid. It seems patch of Bug 91274 is enough for our port as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697073</commentid>
    <comment_count>12</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-16 06:48:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Yes I saw the 91274 patch and it is merged. so how do you think? Do you think this patch still has meaning? My opinion is that those have a similar function but different purpose.
&gt; 
&gt; I think you need to explain why this patch is still valid. It seems patch of Bug 91274 is enough for our port as well.

If we try to get memory usage by using Bug 91274, we should add some js code inside the site but we usually couldn&apos;t write js inside the page because it&apos;s not our test page. it seems like for web-developer. But this patch is able to measure the memory usage without handling user-page. And gives more detail info about memory usage in real time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697100</commentid>
    <comment_count>13</comment_count>
      <attachid>158812</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-16 07:12:37 -0700</bug_when>
    <thetext>Created attachment 158812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697184</commentid>
    <comment_count>14</comment_count>
      <attachid>158812</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 08:52:29 -0700</bug_when>
    <thetext>Comment on attachment 158812
Patch

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

First of all, I&apos;m not sure if we can support memory usage functionality as APIs. Can&apos;t we support this functionality when we set environment variable ? In addition, I think this patch needs some loves. So. I set r-. In addition,

&gt; Source/JavaScriptCore/PlatformEfl.cmake:20
&gt; +IF (ENABLE_MEMORY_SAMPLER)

ENABLE_XXX macros were removed to avoid duplicated #ifdef guard. However, though MemoryStatics.cpp file is not guarded by #if ENABLE(XXX), I would like to recommend to add the MemoryStatistics.cpp to existing JavaScriptCore_SOURCES.

&gt; Source/WTF/wtf/Platform.h:1152
&gt; +#if PLATFORM(EFL)

We don&apos;t need to add this macro to here.

&gt; Source/WebKit2/PlatformEfl.cmake:26
&gt; +    Shared/efl/WebMemorySamplerEfl.cpp

Please move this line to below block.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:24
&gt; + *

Remove unneeded line.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:55
&gt; +} ApplicationMemoryStats;

Duplicated struct name declaration ?

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:63
&gt; +        return String();

Please add a new line after return.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:66
&gt; +    fscanf(file, &quot;%s&quot;, buffer);

Please add a new line.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:238
&gt; +    EINA_SAFETY_ON_NULL_RETURN(ewkContext);

EFL port has add an empty line after EINA_SAFETY_ON_NULL_RETURN macro.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:245
&gt; +    EINA_SAFETY_ON_NULL_RETURN(ewkContext);

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:139
&gt; +* Start memory sampler.

Add a space before *.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:147
&gt; +EAPI void ewk_context_memory_sampler_start(Ewk_Context* context, double timer_interval);

Nit : Wrong &apos;*&apos; operator place.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:150
&gt; +* Stop memory sampler.

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:154
&gt; +EAPI void ewk_context_memory_sampler_stop(Ewk_Context* context);

Nit : Wrong &apos;*&apos; operator place.

&gt; Source/cmake/OptionsEfl.cmake:55
&gt; +SET(ENABLE_MEMORY_SAMPLER ON)

Please use WEBKIT_OPTION_DEFAULT_PORT_VALUE macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697950</commentid>
    <comment_count>15</comment_count>
      <attachid>159015</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-17 00:04:08 -0700</bug_when>
    <thetext>Created attachment 159015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703900</commentid>
    <comment_count>16</comment_count>
      <attachid>160361</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-24 01:56:33 -0700</bug_when>
    <thetext>Created attachment 160361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703910</commentid>
    <comment_count>17</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-24 02:11:03 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 158812 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158812&amp;action=review
&gt; 
&gt; First of all, I&apos;m not sure if we can support memory usage functionality as APIs. Can&apos;t we support this functionality when we set environment variable ? In addition, I think this patch needs some loves. So. I set r-. In addition,
&gt; 
&gt; &gt; Source/JavaScriptCore/PlatformEfl.cmake:20
&gt; &gt; +IF (ENABLE_MEMORY_SAMPLER)
&gt; 
&gt; ENABLE_XXX macros were removed to avoid duplicated #ifdef guard. However, though MemoryStatics.cpp file is not guarded by #if ENABLE(XXX), I would like to recommend to add the MemoryStatistics.cpp to existing JavaScriptCore_SOURCES.
&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:1152
&gt; &gt; +#if PLATFORM(EFL)
&gt; 
&gt; We don&apos;t need to add this macro to here.
&gt; 
&gt; &gt; Source/WebKit2/PlatformEfl.cmake:26
&gt; &gt; +    Shared/efl/WebMemorySamplerEfl.cpp
&gt; 
&gt; Please move this line to below block.
&gt; 
&gt; &gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:24
&gt; &gt; + *
&gt; 
&gt; Remove unneeded line.
&gt; 
&gt; &gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:55
&gt; &gt; +} ApplicationMemoryStats;
&gt; 
&gt; Duplicated struct name declaration ?
&gt; 
&gt; &gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:63
&gt; &gt; +        return String();
&gt; 
&gt; Please add a new line after return.
&gt; 
&gt; &gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:66
&gt; &gt; +    fscanf(file, &quot;%s&quot;, buffer);
&gt; 
&gt; Please add a new line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:238
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN(ewkContext);
&gt; 
&gt; EFL port has add an empty line after EINA_SAFETY_ON_NULL_RETURN macro.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:245
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN(ewkContext);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:139
&gt; &gt; +* Start memory sampler.
&gt; 
&gt; Add a space before *.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:147
&gt; &gt; +EAPI void ewk_context_memory_sampler_start(Ewk_Context* context, double timer_interval);
&gt; 
&gt; Nit : Wrong &apos;*&apos; operator place.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:150
&gt; &gt; +* Stop memory sampler.
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:154
&gt; &gt; +EAPI void ewk_context_memory_sampler_stop(Ewk_Context* context);
&gt; 
&gt; Nit : Wrong &apos;*&apos; operator place.
&gt; 
&gt; &gt; Source/cmake/OptionsEfl.cmake:55
&gt; &gt; +SET(ENABLE_MEMORY_SAMPLER ON)
&gt; 
&gt; Please use WEBKIT_OPTION_DEFAULT_PORT_VALUE macro.

done everything! And remove the APIs and change the code by using environment value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703934</commentid>
    <comment_count>18</comment_count>
      <attachid>160361</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-24 02:58:00 -0700</bug_when>
    <thetext>Comment on attachment 160361
Patch

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

I think this patch includes Bug 91274 functionality. So, it looks this patch is valuable for us. Any other opinions ?

Anyway, I think detail implementation should be reviewed further. I&apos;m going to review it further.

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [EFL][CMAKE] Add WebMemorySampler option.

Add [EFL][WK2] prefix to bug title.

&gt; Source/WTF/ChangeLog:3
&gt; +        [EFL] Add WebMemorySampler option.

ditto.

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [EFL] Add WebMemorySampler feature.

ditto.

&gt; Source/JavaScriptCore/PlatformEfl.cmake:3
&gt;      jit/ExecutableAllocator.cpp

Add a new line to distinguish different directories.

&gt; Source/WebKit2/PlatformEfl.cmake:25
&gt; +    Shared/WebMemorySampler.cpp

ditto.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:27
&gt; +

Unneeded line.

&gt; Source/cmake/OptionsEfl.cmake:82
&gt; +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEMORY_SAMPLER ON)

You have to add this macro to Source/cmakeconfig.h.cmake as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704055</commentid>
    <comment_count>19</comment_count>
      <attachid>160361</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-24 06:31:48 -0700</bug_when>
    <thetext>Comment on attachment 160361
Patch

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

&gt;&gt; Source/cmake/OptionsEfl.cmake:82
&gt;&gt; +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEMORY_SAMPLER ON)
&gt; 
&gt; You have to add this macro to Source/cmakeconfig.h.cmake as well.

This feature is not used in all ports. So I hope this code is limited to EFL port firstly. In addition if I add the macro to cmakeconfig.h.cmake, it shows compile warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704065</commentid>
    <comment_count>20</comment_count>
      <attachid>160413</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-24 06:43:10 -0700</bug_when>
    <thetext>Created attachment 160413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704091</commentid>
    <comment_count>21</comment_count>
      <attachid>160413</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-08-24 07:32:08 -0700</bug_when>
    <thetext>Comment on attachment 160413
Patch

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

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:2
&gt; + * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.

Do we need this?

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:81
&gt; +            } else if (foundKeyName) {

When program comes in? Seems &apos;foundKeyName&apos; always &apos;false&apos; before if condition.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:92
&gt; +    ApplicationMemoryStats applicationStats;

I think we can put this line inside if condition.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:109
&gt; +    return applicationStats;

Then this would be &apos;return 0&apos;

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:114
&gt; +    String processName;

We would put this line inside if condition.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:116
&gt; +    sprintf(processPath, &quot;/proc/%d/status&quot;, getpid());

snprintf?

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:124
&gt; +    return processName;

Then &apos;return String()&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704293</commentid>
    <comment_count>22</comment_count>
      <attachid>160413</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-24 11:48:03 -0700</bug_when>
    <thetext>Comment on attachment 160413
Patch

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

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:2
&gt;&gt; + * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
&gt; 
&gt; Do we need this?

I&apos;m not sure. the template of this code is based on Apple code, so I leave it. Does this line cause any legal issue?

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:81
&gt;&gt; +            } else if (foundKeyName) {
&gt; 
&gt; When program comes in? Seems &apos;foundKeyName&apos; always &apos;false&apos; before if condition.

Yes, if the token has not colon, it will be the value.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:109
&gt;&gt; +    return applicationStats;
&gt; 
&gt; Then this would be &apos;return 0&apos;

this function returns structure type.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:114
&gt;&gt; +    String processName;
&gt; 
&gt; We would put this line inside if condition.

I don&apos;t understand the reason.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:116
&gt;&gt; +    sprintf(processPath, &quot;/proc/%d/status&quot;, getpid());
&gt; 
&gt; snprintf?

Good point, I&apos;ll fix it right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704302</commentid>
    <comment_count>23</comment_count>
      <attachid>160467</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-24 11:55:21 -0700</bug_when>
    <thetext>Created attachment 160467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704339</commentid>
    <comment_count>24</comment_count>
      <attachid>160467</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-24 12:30:29 -0700</bug_when>
    <thetext>Comment on attachment 160467
Patch

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

&gt; Source/WTF/wtf/Platform.h:1173
&gt; +#if PLATFORM(EFL)
&gt; +#define ENABLE_MEMORY_SAMPLER 1
&gt; +#endif

Why do you even need that??

None of the code is in common WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704340</commentid>
    <comment_count>25</comment_count>
      <attachid>160467</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-24 12:30:30 -0700</bug_when>
    <thetext>Comment on attachment 160467
Patch

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

&gt; Source/WTF/wtf/Platform.h:1173
&gt; +#if PLATFORM(EFL)
&gt; +#define ENABLE_MEMORY_SAMPLER 1
&gt; +#endif

Why do you even need that??

None of the code is in common WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704602</commentid>
    <comment_count>26</comment_count>
      <attachid>160413</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-08-24 18:29:30 -0700</bug_when>
    <thetext>Comment on attachment 160413
Patch

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

&gt;&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:81
&gt;&gt;&gt; +            } else if (foundKeyName) {
&gt;&gt; 
&gt;&gt; When program comes in? Seems &apos;foundKeyName&apos; always &apos;false&apos; before if condition.
&gt; 
&gt; Yes, if the token has not colon, it will be the value.

This looks &apos;if, else if&apos; implementation.
Looks foundKeyName only being set &apos;true&apos; inside &apos;if&apos; loop.
How it would affect &apos;else if&apos; loop in this function?

&gt;&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:109
&gt;&gt;&gt; +    return applicationStats;
&gt;&gt; 
&gt;&gt; Then this would be &apos;return 0&apos;
&gt; 
&gt; this function returns structure type.

Yes, it is true. I overlooked it.

&gt;&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:114
&gt;&gt;&gt; +    String processName;
&gt;&gt; 
&gt;&gt; We would put this line inside if condition.
&gt; 
&gt; I don&apos;t understand the reason.

Search with &apos;String()&apos; in webkit source code.
It&apos;s WebKit style. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704769</commentid>
    <comment_count>27</comment_count>
      <attachid>160467</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-25 19:30:25 -0700</bug_when>
    <thetext>Comment on attachment 160467
Patch

I cq- because of my comments regarding Platform.h. This looks like a pure EFL feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704791</commentid>
    <comment_count>28</comment_count>
      <attachid>160467</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-08-25 22:44:49 -0700</bug_when>
    <thetext>Comment on attachment 160467
Patch

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

The current code is *very* JSC and Linux-specific. The JSC part cannot be easily solved, so you need to build all this only if JSC is being used instead of V8. For the Linux part, you need to either wrap your code within #if OS(LINUX) ifdefs or only build/call this at all if you are on Linux.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:34
&gt; +#include &lt;malloc.h&gt;

This is *very* deprecated, and you don&apos;t seem to allocate memory with malloc(3) and friends at all.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:64
&gt; +    memset(buffer, 0, maxBuffer);

Please include string.h for memset(3).

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:65
&gt; +    fscanf(file, &quot;%s&quot;, buffer);

And stdio.h for fscanf(3).

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:129
&gt; +    size_t totalBytesInUse = 0, totalBytesCommitted = 0;

One variable per line, please.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:748
&gt; +#if ENABLE(MEMORY_SAMPLER)
&gt; +    static bool memorySampler = false;
&gt; +    static const char environMemorySampler[] = &quot;MEMORY_SAMPLER&quot;;
&gt; +
&gt; +    if (!memorySampler &amp;&amp; getenv(environMemorySampler)) {
&gt; +        WKRetainPtr&lt;WKDoubleRef&gt; interval(AdoptWK, WKDoubleCreate(0.0));
&gt; +        WKContextStartMemorySampler(ewk_context_WKContext_get(context), interval.get());
&gt; +        memorySampler = true;
&gt; +    }
&gt; +#endif

Why all this instead of using the existing infrastructure for enabling and starting the memory sampler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704844</commentid>
    <comment_count>29</comment_count>
      <attachid>160467</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-26 07:29:25 -0700</bug_when>
    <thetext>Comment on attachment 160467
Patch

r- because of many comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704924</commentid>
    <comment_count>30</comment_count>
      <attachid>160467</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-08-26 19:55:45 -0700</bug_when>
    <thetext>Comment on attachment 160467
Patch

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

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:152
&gt; +    webKitMemoryStats.keys.append(String(&quot;Timestamp&quot;));

As WebMemoryStatistics has standard pattern like below, consider create a function to reduce line numbers inside this function.

struct WebMemoryStatistics
{
    Vector&lt;String&gt; keys;
    Vector&lt;size_t&gt; values;
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705067</commentid>
    <comment_count>31</comment_count>
      <attachid>160672</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-27 02:01:39 -0700</bug_when>
    <thetext>Created attachment 160672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705086</commentid>
    <comment_count>32</comment_count>
      <attachid>160467</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-27 02:12:11 -0700</bug_when>
    <thetext>Comment on attachment 160467
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1173
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; Why do you even need that??
&gt;&gt; 
&gt;&gt; None of the code is in common WebKit.
&gt; 
&gt; Why do you even need that??
&gt; 
&gt; None of the code is in common WebKit.

I moved it to PlatformEfl.cmake. thanks your comment.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:34
&gt;&gt; +#include &lt;malloc.h&gt;
&gt; 
&gt; This is *very* deprecated, and you don&apos;t seem to allocate memory with malloc(3) and friends at all.

Done, I removed it.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:64
&gt;&gt; +    memset(buffer, 0, maxBuffer);
&gt; 
&gt; Please include string.h for memset(3).

Done, I added string.h.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:65
&gt;&gt; +    fscanf(file, &quot;%s&quot;, buffer);
&gt; 
&gt; And stdio.h for fscanf(3).

Done, I added stdio.h too.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:129
&gt;&gt; +    size_t totalBytesInUse = 0, totalBytesCommitted = 0;
&gt; 
&gt; One variable per line, please.

Done and thanks your comments.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:152
&gt;&gt; +    webKitMemoryStats.keys.append(String(&quot;Timestamp&quot;));
&gt; 
&gt; As WebMemoryStatistics has standard pattern like below, consider create a function to reduce line numbers inside this function.
&gt; 
&gt; struct WebMemoryStatistics
&gt; {
&gt;     Vector&lt;String&gt; keys;
&gt;     Vector&lt;size_t&gt; values;
&gt; };

it&apos;s fixed by following your comment. thanks.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:748
&gt;&gt; +#endif
&gt; 
&gt; Why all this instead of using the existing infrastructure for enabling and starting the memory sampler?

could you let me know what the existing infrastructure is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705126</commentid>
    <comment_count>33</comment_count>
      <attachid>160672</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-27 03:02:58 -0700</bug_when>
    <thetext>Comment on attachment 160672
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:189
&gt; +    -DENABLE_MEMORY_SAMPLER=1

This is not needed if you want to add it in OptionsTizen.cmake.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:71
&gt; +inline void appendMemoryStats(WebMemoryStatistics&amp; webKitMemoryStats, String key, size_t value)

const String&amp; key

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:106
&gt; +    FILE* fMemoryStatus = fopen(processPath, &quot;r&quot;);
&gt; +    if (fMemoryStatus) {

empty line is preffered.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:118
&gt; +#endif
&gt; +    return applicationStats;

need empty line.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:134
&gt; +#endif
&gt; +    return String();

need empty line.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:748
&gt; +#if ENABLE(MEMORY_SAMPLER)
&gt; +    static bool memorySampler = false;
&gt; +    static const char environMemorySampler[] = &quot;MEMORY_SAMPLER&quot;;
&gt; +
&gt; +    if (!memorySampler &amp;&amp; getenv(environMemorySampler)) {
&gt; +        WKRetainPtr&lt;WKDoubleRef&gt; interval(AdoptWK, WKDoubleCreate(0.0));
&gt; +        WKContextStartMemorySampler(ewk_context_WKContext_get(context), interval.get());
&gt; +        memorySampler = true;
&gt; +    }
&gt; +#endif

Is this related to context? I think that it should be in ewk_context.

&gt; Source/cmake/OptionsEfl.cmake:81
&gt; +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEMORY_SAMPLER ON)

I am not sure whether we can add this.
But I think that we are using GLIB_SUPPORT for similar reason, 
So it can be reasonable although this option is only WebKit2/MAC and WebKit2/Efl now.

Anyway, to add this, you should also put this in WebKitFeatures.cmake and cmakeconfig.cmake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705152</commentid>
    <comment_count>34</comment_count>
      <attachid>160672</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-27 04:17:46 -0700</bug_when>
    <thetext>Comment on attachment 160672
Patch

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

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:56
&gt; +const int maxBuffer = 128;

Do you want it to be exported? if not should be static or inside a nameless namespace.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:59
&gt; +inline String getToken(FILE* file)

ditto. Even though &apos;inline&apos; may have similar qualities as &apos;static&apos; this behavior is compiler(and even compiler setting)-specific.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:71
&gt;&gt; +inline void appendMemoryStats(WebMemoryStatistics&amp; webKitMemoryStats, String key, size_t value)
&gt; 
&gt; const String&amp; key

ditto.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:77
&gt; +void sampleSystemMemoryInfo(WebMemoryStatistics&amp; statics)

ditto.

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:99
&gt; +ApplicationMemoryStats sampleApplicationMalloc()

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705216</commentid>
    <comment_count>35</comment_count>
      <attachid>160672</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-27 06:25:39 -0700</bug_when>
    <thetext>Comment on attachment 160672
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:24
&gt; +    Shared/WebMemorySampler.h

CMake doesn&apos;t include .h file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706057</commentid>
    <comment_count>36</comment_count>
      <attachid>160897</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-27 22:05:54 -0700</bug_when>
    <thetext>Created attachment 160897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706059</commentid>
    <comment_count>37</comment_count>
      <attachid>160672</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-27 22:13:37 -0700</bug_when>
    <thetext>Comment on attachment 160672
Patch

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

&gt;&gt; Source/WebKit2/PlatformEfl.cmake:24
&gt;&gt; +    Shared/WebMemorySampler.h
&gt; 
&gt; CMake doesn&apos;t include .h file.

done, thanks your comment.

&gt;&gt; Source/WebKit2/PlatformEfl.cmake:189
&gt;&gt; +    -DENABLE_MEMORY_SAMPLER=1
&gt; 
&gt; This is not needed if you want to add it in OptionsTizen.cmake.

done. thanks.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:56
&gt;&gt; +const int maxBuffer = 128;
&gt; 
&gt; Do you want it to be exported? if not should be static or inside a nameless namespace.

done.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:59
&gt;&gt; +inline String getToken(FILE* file)
&gt; 
&gt; ditto. Even though &apos;inline&apos; may have similar qualities as &apos;static&apos; this behavior is compiler(and even compiler setting)-specific.

done.

&gt;&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:71
&gt;&gt;&gt; +inline void appendMemoryStats(WebMemoryStatistics&amp; webKitMemoryStats, String key, size_t value)
&gt;&gt; 
&gt;&gt; const String&amp; key
&gt; 
&gt; ditto.

done.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:77
&gt;&gt; +void sampleSystemMemoryInfo(WebMemoryStatistics&amp; statics)
&gt; 
&gt; ditto.

thanks your comments.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:106
&gt;&gt; +    if (fMemoryStatus) {
&gt; 
&gt; empty line is preffered.

done.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:118
&gt;&gt; +    return applicationStats;
&gt; 
&gt; need empty line.

done.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:134
&gt;&gt; +    return String();
&gt; 
&gt; need empty line.

done.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:748
&gt;&gt; +#endif
&gt; 
&gt; Is this related to context? I think that it should be in ewk_context.

it&apos;s better to stay in view. because memory sampler starts when view is created. I think it&apos;s nothing related with context. though it&apos;s using it.

&gt;&gt; Source/cmake/OptionsEfl.cmake:81
&gt;&gt; +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEMORY_SAMPLER ON)
&gt; 
&gt; I am not sure whether we can add this.
&gt; But I think that we are using GLIB_SUPPORT for similar reason, 
&gt; So it can be reasonable although this option is only WebKit2/MAC and WebKit2/Efl now.
&gt; 
&gt; Anyway, to add this, you should also put this in WebKitFeatures.cmake and cmakeconfig.cmake.

following your comment, I added defines to cmakeconfig.cmake and WebKitFeatures.cmake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706095</commentid>
    <comment_count>38</comment_count>
      <attachid>160897</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-27 23:16:56 -0700</bug_when>
    <thetext>Comment on attachment 160897
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:26
&gt; +    Shared/efl/WebMemorySamplerEfl.cpp

It seems that the implementation of the Sampler is not really EFL specific but rather Linux specific and perhaps instead belongs into Shared/linux/WebMemorySamplerLinux.cpp, for re-use by other ports. Then you can also get rid of the #if OS(LINUX) :)

&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:83
&gt; +    bool foundKeyName = false;
&gt; +    FILE* fSystemMemoryStatus = fopen(&quot;/proc/meminfo&quot;, &quot;r&quot;);
&gt; +    if (fSystemMemoryStatus) {
&gt; +        while (!feof(fSystemMemoryStatus)) {

I&apos;m inclined to say that it&apos;s more typical WebKit style to use early returns, i.e. instead of

FILE* f = fopen(...);
if (f) {
    ...
}

using

FILE* f = fopen(...);
if (!f)
    return;
...

and therefore achieving a lower level of indentation and presumably more readable code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706116</commentid>
    <comment_count>39</comment_count>
      <attachid>160897</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-27 23:43:54 -0700</bug_when>
    <thetext>Comment on attachment 160897
Patch

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

&gt;&gt; Source/WebKit2/PlatformEfl.cmake:26
&gt;&gt; +    Shared/efl/WebMemorySamplerEfl.cpp
&gt; 
&gt; It seems that the implementation of the Sampler is not really EFL specific but rather Linux specific and perhaps instead belongs into Shared/linux/WebMemorySamplerLinux.cpp, for re-use by other ports. Then you can also get rid of the #if OS(LINUX) :)

EFL also has own ports. ex) mac, linux and windows. so even though I change the file name to WebMemorySamplerLinux.cpp, #if OS(LINUX) is still needed inside the cpp file for EFL. Or I should separate cmake file.

&gt;&gt; Source/WebKit2/Shared/efl/WebMemorySamplerEfl.cpp:83
&gt;&gt; +        while (!feof(fSystemMemoryStatus)) {
&gt; 
&gt; I&apos;m inclined to say that it&apos;s more typical WebKit style to use early returns, i.e. instead of
&gt; 
&gt; FILE* f = fopen(...);
&gt; if (f) {
&gt;     ...
&gt; }
&gt; 
&gt; using
&gt; 
&gt; FILE* f = fopen(...);
&gt; if (!f)
&gt;     return;
&gt; ...
&gt; 
&gt; and therefore achieving a lower level of indentation and presumably more readable code :)

Thanks your help. I&apos;ll fix it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706121</commentid>
    <comment_count>40</comment_count>
      <attachid>160915</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-27 23:51:23 -0700</bug_when>
    <thetext>Created attachment 160915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706131</commentid>
    <comment_count>41</comment_count>
      <attachid>160915</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-28 00:06:54 -0700</bug_when>
    <thetext>Comment on attachment 160915
Patch

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

(In reply to comment #39)
 
&gt; EFL also has own ports. ex) mac, linux and windows. so even though I change the file name to WebMemorySamplerLinux.cpp, #if OS(LINUX) is still needed inside the cpp file for EFL. Or I should separate cmake file.


EFL port already uses linux file as below,
http://trac.webkit.org/browser/trunk/Source/WebCore/PlatformEfl.cmake#L77

As you may know, EFL port mainly supports linux platform so far. Of course, EFL port will may support other platforms, for example, window, mac and so on. However, I think we can support it in CMake file using platform macro. As far as I know, WebKit culturally has shared common file with many ports. So, in my opinion, this patch needs to be considered to move linux directory.

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [EFL][WK2][CMAKE] Add WebMemorySampler option.

You should keep to be sync with bug title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706167</commentid>
    <comment_count>42</comment_count>
      <attachid>160928</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-28 01:22:14 -0700</bug_when>
    <thetext>Created attachment 160928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706297</commentid>
    <comment_count>43</comment_count>
      <attachid>160915</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-28 06:48:35 -0700</bug_when>
    <thetext>Comment on attachment 160915
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt; +        [EFL][WK2][CMAKE] Add WebMemorySampler option.
&gt; 
&gt; You should keep to be sync with bug title.

all done. Thanks your guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706306</commentid>
    <comment_count>44</comment_count>
      <attachid>160928</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-28 07:03:31 -0700</bug_when>
    <thetext>Comment on attachment 160928
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:33
&gt; +    Shared/linux/WebMemorySamplerLinux.cpp

Excellent! :)

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:96
&gt; +static void sampleSystemMemoryInfo(WebMemoryStatistics&amp; statics)
&gt; +{
&gt; +    bool foundKeyName = false;
&gt; +    FILE* fSystemMemoryStatus = fopen(&quot;/proc/meminfo&quot;, &quot;r&quot;);
&gt; +    if (!fSystemMemoryStatus)
&gt; +        return;
&gt; +
&gt; +    while (!feof(fSystemMemoryStatus)) {
&gt; +        String strToken = getToken(fSystemMemoryStatus);
&gt; +        if (strToken.find(&apos;:&apos;) != notFound) {
&gt; +            String keyName = strToken.left(strToken.length() - 1);
&gt; +            statics.keys.append(keyName);
&gt; +            foundKeyName = true;
&gt; +        } else if (foundKeyName) {
&gt; +            statics.values.append(strToken.toInt());
&gt; +            foundKeyName = false;
&gt; +        }
&gt; +    }
&gt; +    fclose(fSystemMemoryStatus);
&gt; +}

I think instead of parsing /proc/meminfo you could use sysinfo(2) to get the same information with simpler code (no need to use insecure fscanf).

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:103
&gt; +    char processPath[maxProcessPath];
&gt; +    snprintf(processPath, maxProcessPath, &quot;/proc/%d/statm&quot;, getpid());
&gt; +    FILE* fMemoryStatus = fopen(processPath, &quot;r&quot;);

I think you can simplify this to

    FILE* fMemoryStatus = fopen(&quot;/proc/self/statm&quot;, &quot;r&quot;);

or alternatively get try to get the same information using getrusage(2) and getrlimit(2).

I think a programmatic approach is nicer than parsing files in /proc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707028</commentid>
    <comment_count>45</comment_count>
      <attachid>160928</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-28 19:39:58 -0700</bug_when>
    <thetext>Comment on attachment 160928
Patch

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

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:96
&gt;&gt; +}
&gt; 
&gt; I think instead of parsing /proc/meminfo you could use sysinfo(2) to get the same information with simpler code (no need to use insecure fscanf).

this is really good, thanks your help. I didn&apos;t know there is such an API for linux. I will replace the code with the API.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:103
&gt;&gt; +    FILE* fMemoryStatus = fopen(processPath, &quot;r&quot;);
&gt; 
&gt; I think you can simplify this to
&gt; 
&gt;     FILE* fMemoryStatus = fopen(&quot;/proc/self/statm&quot;, &quot;r&quot;);
&gt; 
&gt; or alternatively get try to get the same information using getrusage(2) and getrlimit(2).
&gt; 
&gt; I think a programmatic approach is nicer than parsing files in /proc.

I googled the usage of getrusage(2) and getrlimit(2) but I am not sure that I can replace info which is used now.
getrusage(2) gives some data but some fields of the data is unused on linux. getrlimit(2) is for getting the limitation of the resource the device provides.
I was also worried about using fscanf. so I&apos;ll change the code by not using fscanf for security.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707126</commentid>
    <comment_count>46</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-28 23:24:09 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 160672 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160672&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:748
&gt; &gt;&gt; +#endif
&gt; &gt; 
&gt; &gt; Is this related to context? I think that it should be in ewk_context.
&gt; 
&gt; it&apos;s better to stay in view. because memory sampler starts when view is created. I think it&apos;s nothing related with context. though it&apos;s using it.
&gt; 

I still believe that it should not be in ewk_view because WebMemorySampler collects information per webprocess.

For example, we can create ewk_view from new context (which is not default context) and new context may have a way to start sampler.

Anyway, why don&apos;t you add this as ewk API to enable/disable at run-time?
I think that it looks more useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707230</commentid>
    <comment_count>47</comment_count>
      <attachid>160672</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-29 02:06:10 -0700</bug_when>
    <thetext>Comment on attachment 160672
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:748
&gt;&gt;&gt;&gt; +#endif
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this related to context? I think that it should be in ewk_context.
&gt;&gt; 
&gt;&gt; it&apos;s better to stay in view. because memory sampler starts when view is created. I think it&apos;s nothing related with context. though it&apos;s using it.
&gt; 
&gt; I still believe that it should not be in ewk_view because WebMemorySampler collects information per webprocess.
&gt; 
&gt; For example, we can create ewk_view from new context (which is not default context) and new context may have a way to start sampler.
&gt; 
&gt; Anyway, why don&apos;t you add this as ewk API to enable/disable at run-time?
&gt; I think that it looks more useful.

if you see this (https://bugs.webkit.org/attachment.cgi?id=153474&amp;action=review), it was early code. I had same idea but Gyuyoung said there is no such APIs for debugging or profiling. So I removed it. I can move the code to context creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707420</commentid>
    <comment_count>48</comment_count>
      <attachid>161218</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-29 07:08:13 -0700</bug_when>
    <thetext>Created attachment 161218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707430</commentid>
    <comment_count>49</comment_count>
      <attachid>161218</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-29 07:32:54 -0700</bug_when>
    <thetext>Comment on attachment 161218
Patch

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

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:82
&gt; +static inline void appendMemoryStats(WebMemoryStatistics&amp; webKitMemoryStats, const String&amp; key, size_t value)

Statistics?

Why webKitMemoryStats and not just statistics... the class name already makes it clear what it is

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:86
&gt; +{
&gt; +    webKitMemoryStats.keys.append(key);
&gt; +    webKitMemoryStats.values.append(value);
&gt; +}

This methods seems a bit useless.

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:88
&gt; +static ApplicationMemoryStats sampleApplicationMalloc()

is malloc really the best word? Especially given that this is not tied to the malloc call?

sampleMemoryAllocatedForApplication ?

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:93
&gt; +    FILE* fMemoryStatus = fopen(processPath, &quot;r&quot;);

Why not statmFileDescriptor

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:97
&gt; +    applicationStats.totalProgramSize = getToken(fMemoryStatus).toInt();

nextToken seems like a better name

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:104
&gt; +    applicationStats.dirtyPageSize = getToken(fMemoryStatus).toInt();
&gt; +    fclose(fMemoryStatus);

add a newline before fclose to make it easier to spot

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:124
&gt; +WebMemoryStatistics WebMemorySampler::sampleWebKit() const

WebKit is the project name and the name of the API&apos;s. Maybe sampleWebRuntime() makes more sense?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:90
&gt; +        static bool memorySampler = false;

memory sampler doesn&apos;t sounds like a &quot;booload&quot; to me... sampleMemory?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:91
&gt; +        static const char environMemorySampler[] = &quot;MEMORY_SAMPLER&quot;;

environ? enviromentVariable? or ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707551</commentid>
    <comment_count>50</comment_count>
      <attachid>161218</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-29 09:53:18 -0700</bug_when>
    <thetext>Comment on attachment 161218
Patch

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

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:82
&gt;&gt; +static inline void appendMemoryStats(WebMemoryStatistics&amp; webKitMemoryStats, const String&amp; key, size_t value)
&gt; 
&gt; Statistics?
&gt; 
&gt; Why webKitMemoryStats and not just statistics... the class name already makes it clear what it is

done.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:86
&gt;&gt; +}
&gt; 
&gt; This methods seems a bit useless.

it makes lines in sampleWebKit function be shorten. :)

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:88
&gt;&gt; +static ApplicationMemoryStats sampleApplicationMalloc()
&gt; 
&gt; is malloc really the best word? Especially given that this is not tied to the malloc call?
&gt; 
&gt; sampleMemoryAllocatedForApplication ?

done.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:93
&gt;&gt; +    FILE* fMemoryStatus = fopen(processPath, &quot;r&quot;);
&gt; 
&gt; Why not statmFileDescriptor

done.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:97
&gt;&gt; +    applicationStats.totalProgramSize = getToken(fMemoryStatus).toInt();
&gt; 
&gt; nextToken seems like a better name

done.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:104
&gt;&gt; +    fclose(fMemoryStatus);
&gt; 
&gt; add a newline before fclose to make it easier to spot

done.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:124
&gt;&gt; +WebMemoryStatistics WebMemorySampler::sampleWebKit() const
&gt; 
&gt; WebKit is the project name and the name of the API&apos;s. Maybe sampleWebRuntime() makes more sense?

I think so but mac port uses the same name and I could not find where they are using this function. so I could not change it by myself. :)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:90
&gt;&gt; +        static bool memorySampler = false;
&gt; 
&gt; memory sampler doesn&apos;t sounds like a &quot;booload&quot; to me... sampleMemory?

MemorySampler is already using as a file and class name, so how about initializeMemorySampler?

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:91
&gt;&gt; +        static const char environMemorySampler[] = &quot;MEMORY_SAMPLER&quot;;
&gt; 
&gt; environ? enviromentVariable? or ?

done! thanks your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707555</commentid>
    <comment_count>51</comment_count>
      <attachid>161254</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-29 09:55:32 -0700</bug_when>
    <thetext>Created attachment 161254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707649</commentid>
    <comment_count>52</comment_count>
      <attachid>161254</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-29 11:02:55 -0700</bug_when>
    <thetext>Comment on attachment 161254
Patch

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

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:67
&gt; +    int index = 0;

unsigned?

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:70
&gt; +        if (ch == EOF || (isASCIISpace(ch) &amp;&amp; foundPrintable))

You don&apos;t need foundPrintable, you can just look at the index instead.

if (ch == EOF || isASCIISpace(ch) &amp;&amp; index) // Break on non-initial ASCII space.
   break;

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:82
&gt; +static inline void appendMemoryStatistics(WebMemoryStatistics&amp; webKitMemoryStats, const String&amp; key, size_t value)

I would just call the argument &quot;stats&quot; it seems more correct

static inline void appendKeyValuePair(WebMemoryStatistics&amp; stats, const String&amp; key, size_t value)


Anyway I think I find this more readable (from the *Mac version)

    webKitMemoryStats.keys.append(String(&quot;Timestamp&quot;));
    webKitMemoryStats.values.append(now);
    webKitMemoryStats.keys.append(String(&quot;Total Bytes of Memory In Use&quot;));
    webKitMemoryStats.values.append(totalBytesInUse);

It results in shorter, easy to read lines

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:126
&gt; +WebMemoryStatistics WebMemorySampler::sampleWebKit() const

I guess I would just call this sample(), but I see that it is used elsewhere, so fine

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:136
&gt; +    FastMallocStatistics fastMallocStatistics = WTF::fastMallocStatistics();

What is fast malloc is disabled (common on mobile platforms where is often ends up using too much memory in comparison with the performance gain)

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:158
&gt; +    appendMemoryStatistics(webKitMemoryStats, String(&quot;Shared&quot;), applicationStats.sharedSize);

You should use ASCIILiteral(&quot;Shared&quot;), it is faster. http://trac.webkit.org/wiki/EfficientStrings

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:164
&gt; +#if USE(JSC)

Why can&apos;t these two USE ifdefs not be joined?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708175</commentid>
    <comment_count>53</comment_count>
      <attachid>161254</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-29 18:34:59 -0700</bug_when>
    <thetext>Comment on attachment 161254
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [EFL][WK2][CMAKE] Add WebMemorySampler feature.

I think &quot;[EFL][WK2]&quot; prefix is correct.

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:61
&gt; +    ASSERT(file);

I think this is unnecessary double checking because *file* is being checked if it is null just below.

&gt; ChangeLog:3
&gt; +        [EFL][WK2][CMAKE] Add WebMemorySampler feature.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708490</commentid>
    <comment_count>54</comment_count>
      <attachid>161254</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-30 04:23:01 -0700</bug_when>
    <thetext>Comment on attachment 161254
Patch

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

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:61
&gt;&gt; +    ASSERT(file);
&gt; 
&gt; I think this is unnecessary double checking because *file* is being checked if it is null just below.

Maybe it is not, If it is not intented to be null adding an assert and a return is fine. The return could be to make sure this doesn&apos;t crash if there is someone using the API wrongly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708500</commentid>
    <comment_count>55</comment_count>
      <attachid>161254</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-08-30 04:46:48 -0700</bug_when>
    <thetext>Comment on attachment 161254
Patch

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

&gt;&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:61
&gt;&gt;&gt; +    ASSERT(file);
&gt;&gt; 
&gt;&gt; I think this is unnecessary double checking because *file* is being checked if it is null just below.
&gt; 
&gt; Maybe it is not, If it is not intented to be null adding an assert and a return is fine. The return could be to make sure this doesn&apos;t crash if there is someone using the API wrongly.

I&apos;d like to understand exactly what did you mean. I meant ASSERT can be removed because file parameter is checked by *if (!file)* condition below. Do you think ASSERT is still needed ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708507</commentid>
    <comment_count>56</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-30 05:00:10 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; (From update of attachment 161254 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161254&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:61
&gt; &gt;&gt;&gt; +    ASSERT(file);
&gt; &gt;&gt; 
&gt; &gt;&gt; I think this is unnecessary double checking because *file* is being checked if it is null just below.
&gt; &gt; 
&gt; &gt; Maybe it is not, If it is not intented to be null adding an assert and a return is fine. The return could be to make sure this doesn&apos;t crash if there is someone using the API wrongly.
&gt; 
&gt; I&apos;d like to understand exactly what did you mean. I meant ASSERT can be removed because file parameter is checked by *if (!file)* condition below. Do you think ASSERT is still needed ?

I understand Kenneth&apos;s opinion. ASSERT is able to help to find the wrong use in debug build as well as to expose problems. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708638</commentid>
    <comment_count>57</comment_count>
      <attachid>161254</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-30 08:25:01 -0700</bug_when>
    <thetext>Comment on attachment 161254
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt; +        [EFL][WK2][CMAKE] Add WebMemorySampler feature.
&gt; 
&gt; I think &quot;[EFL][WK2]&quot; prefix is correct.

done!

&gt;&gt;&gt;&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:61
&gt;&gt;&gt;&gt;&gt; +    ASSERT(file);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I think this is unnecessary double checking because *file* is being checked if it is null just below.
&gt;&gt;&gt; 
&gt;&gt;&gt; Maybe it is not, If it is not intented to be null adding an assert and a return is fine. The return could be to make sure this doesn&apos;t crash if there is someone using the API wrongly.
&gt;&gt; 
&gt;&gt; I&apos;d like to understand exactly what did you mean. I meant ASSERT can be removed because file parameter is checked by *if (!file)* condition below. Do you think ASSERT is still needed ?
&gt; 
&gt; I understand Kenneth&apos;s opinion. ASSERT is able to help to find the wrong use in debug build as well as to expose problems. Thanks.

it was intended. I have same idea with kenneth. thanks all.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:67
&gt;&gt; +    int index = 0;
&gt; 
&gt; unsigned?

done!

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:70
&gt;&gt; +        if (ch == EOF || (isASCIISpace(ch) &amp;&amp; foundPrintable))
&gt; 
&gt; You don&apos;t need foundPrintable, you can just look at the index instead.
&gt; 
&gt; if (ch == EOF || isASCIISpace(ch) &amp;&amp; index) // Break on non-initial ASCII space.
&gt;    break;

sharp eyes! thanks your comment.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:82
&gt;&gt; +static inline void appendMemoryStatistics(WebMemoryStatistics&amp; webKitMemoryStats, const String&amp; key, size_t value)
&gt; 
&gt; I would just call the argument &quot;stats&quot; it seems more correct
&gt; 
&gt; static inline void appendKeyValuePair(WebMemoryStatistics&amp; stats, const String&amp; key, size_t value)
&gt; 
&gt; 
&gt; Anyway I think I find this more readable (from the *Mac version)
&gt; 
&gt;     webKitMemoryStats.keys.append(String(&quot;Timestamp&quot;));
&gt;     webKitMemoryStats.values.append(now);
&gt;     webKitMemoryStats.keys.append(String(&quot;Total Bytes of Memory In Use&quot;));
&gt;     webKitMemoryStats.values.append(totalBytesInUse);
&gt; 
&gt; It results in shorter, easy to read lines

yes, I knew that and my proposal code was same with mac. however kang-il suggested using this inline function. And I thought it was not so bad... :) Thank you for comment.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:158
&gt;&gt; +    appendMemoryStatistics(webKitMemoryStats, String(&quot;Shared&quot;), applicationStats.sharedSize);
&gt; 
&gt; You should use ASCIILiteral(&quot;Shared&quot;), it is faster. http://trac.webkit.org/wiki/EfficientStrings

done. thanks.

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:164
&gt;&gt; +#if USE(JSC)
&gt; 
&gt; Why can&apos;t these two USE ifdefs not be joined?

done.

&gt;&gt; ChangeLog:3
&gt;&gt; +        [EFL][WK2][CMAKE] Add WebMemorySampler feature.
&gt; 
&gt; ditto.

done. thank your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708656</commentid>
    <comment_count>58</comment_count>
      <attachid>161479</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-30 08:40:27 -0700</bug_when>
    <thetext>Created attachment 161479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708672</commentid>
    <comment_count>59</comment_count>
      <attachid>161479</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-30 08:49:39 -0700</bug_when>
    <thetext>Comment on attachment 161479
Patch

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

&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:150
&gt; +    FastMallocStatistics fastMallocStatistics = WTF::fastMallocStatistics();
&gt; +    size_t fastMallocBytesInUse = fastMallocStatistics.committedVMBytes - fastMallocStatistics.freeListBytes;
&gt; +    size_t fastMallocBytesCommitted = fastMallocStatistics.committedVMBytes;
&gt; +    totalBytesInUse += fastMallocBytesInUse;
&gt; +    totalBytesCommitted += fastMallocBytesCommitted;

i like the fast malloc to use an ifdef as well

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:91
&gt; +        static const char environmentVariable[] = &quot;MEMORY_SAMPLER&quot;;

Wouldn&apos;t SAMPLE_MEMORY not be better? What does other ports use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708786</commentid>
    <comment_count>60</comment_count>
      <attachid>161479</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-30 10:22:09 -0700</bug_when>
    <thetext>Comment on attachment 161479
Patch

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

&gt;&gt; Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:150
&gt;&gt; +    totalBytesCommitted += fastMallocBytesCommitted;
&gt; 
&gt; i like the fast malloc to use an ifdef as well

done!

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:91
&gt;&gt; +        static const char environmentVariable[] = &quot;MEMORY_SAMPLER&quot;;
&gt; 
&gt; Wouldn&apos;t SAMPLE_MEMORY not be better? What does other ports use?

done! And mac port only uses this feature but I think they do not activate this feature currently as far as I know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708791</commentid>
    <comment_count>61</comment_count>
      <attachid>161509</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-30 10:24:08 -0700</bug_when>
    <thetext>Created attachment 161509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708796</commentid>
    <comment_count>62</comment_count>
      <attachid>161510</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-08-30 10:31:40 -0700</bug_when>
    <thetext>Created attachment 161510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709057</commentid>
    <comment_count>63</comment_count>
      <attachid>161510</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 14:56:22 -0700</bug_when>
    <thetext>Comment on attachment 161510
Patch

Clearing flags on attachment: 161510

Committed r127195: &lt;http://trac.webkit.org/changeset/127195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709058</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 14:56:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153226</attachid>
            <date>2012-07-19 04:34:46 -0700</date>
            <delta_ts>2012-07-19 05:28:03 -0700</delta_ts>
            <desc>proposal patch</desc>
            <filename>WebMemorySampler.patch</filename>
            <type>text/plain</type>
            <size>14767</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjOWIyNzAxLi45OTk3NzUy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDctMTkgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IFdlYk1lbW9yeVNhbXBs
ZXIgZmVhdHVyZSBvbi4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtl
OgorCiAyMDEyLTA3LTE4ICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIERyYWcgaW1hZ2UgZm9yIGltYWdlIGVsZW1lbnRzIHNob3VsZCBi
ZSBzY2FsZWQgd2l0aCBkZXZpY2Ugc2NhbGUgZmFjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggZjY4MTMxMS4uOTc4MTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDctMTkgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViTWVtb3J5
U2FtcGxlciBpbmNsdWRlIGphdmFzY3JpcHQgbWVtb3J5IHVzYWdlLgorICAgICAgICBBbmQgZ2xv
YmFsTWVtb3J5U3RhdGlzdGljcyBpbiBNZW1vcnlTdGF0aXN0aWMgcmV0dXJucyBKSVQgbWVtb3J5
IHVzYWdlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisKIDIwMTItMDctMTggIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIGVtaXQg
aW5saW5lIGNvZGUgZm9yIHByb3BlcnR5IHN0b3JhZ2UgKHJlKWFsbG9jYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0NDg4MzRjLi40ZDQ5MjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNyw2ICsxNywxMiBAQCBJ
RiAoRU5BQkxFX0dMSUJfU1VQUE9SVCkKICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9NRU1P
UllfU0FNUExFUikKKyAgTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUworICAgIHJ1
bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKKyAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQg
SmF2YVNjcmlwdENvcmVfTElOS19GTEFHUwogICAgICR7RUNPUkVfTERGTEFHU30KICkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
M2Q5NjY0Ni4uMjEzZTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0xOSAgSnVuZ0pp
ayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgV2Vi
TWVtb3J5U2FtcGxlciBvcHRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuYWJsZSBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEyLTA3LTE4ICBZb25nIExpICA8eW9saUByaW0uY29tPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgY3VycmVudFRpbWUoKSBhbmQgbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgZm9yIE9TKFFOWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGMxN2Yz
ZTEuLjEwMWQ4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTE1Miw0ICsxMTUyLDggQEAKICNlbmRpZgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisjZGVmaW5lIEVOQUJMRV9NRU1PUllfU0FNUExF
UiAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YmMzMjY5Ni4uOGI5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTE5
ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
IEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUgdG8gRUZM
IHBvcnQuIFdlYk1lbW9yeVNhbXBsZXIgcmVjb3JkcyBtZW1vcnkgdXNhZ2Ugb2YKKyAgICAgICAg
V2ViUHJvY2VzcyBhbmQgVUkgUHJvY2VzcyBhbmQgYWxzbyBpdCByZWNvcmRzIGFwcGxpY2F0aW9u
IG1lbW9yeSBzdGF0dXMgaW4gcmVhbCB0aW1lLgorICAgICAgICBJbmNsdWRlZCBpdGVtcyBvbiB0
aGUgcmVzdWx0IGFyZSBKSVQsIEpTIGhlYXAsIGZhc3RtYWxsb2MgYnl0ZXMgYW5kCisgICAgICAg
IGFwcGxpY2F0aW9uIG1lbW9yeSBpbmZvIGZyb20gL3Byb2MvcHJvY2Vzc19pZC9zdGF0bS4KKwor
ICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViTWVt
b3J5U2FtcGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEFw
cGxpY2F0aW9uTWVtb3J5U3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpnZXRUb2tlbik6CisgICAg
ICAgIChXZWJLaXQ6OnNhbXBsZVN5c3RlbU1lbW9yeUluZm8pOgorICAgICAgICAoV2ViS2l0Ojpz
YW1wbGVBcHBsaWNhdGlvbk1hbGxvYyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBs
ZXI6OnByb2Nlc3NOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6c2Ft
cGxlV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6c2VuZE1lbW9y
eVByZXNzdXJlRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcDoKKyAgICAgICAgKGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0YXJ0KToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0b3ApOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisKIDIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEVGTCBz
aG91bGQgdXNlIERvd25sb2FkU291cCBpbnN0ZWFkIG9mIGRlZmluaW5nIERvd25sb2FkRWZsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDk3ZjcwOTUuLmExMmE0MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0yMSw2ICsyMSwxMCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBTaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcAogICAgIFNo
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorICAgIFNoYXJlZC9XZWJNZW1v
cnlTYW1wbGVyLmgKKyAgICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKyAgICBTaGFyZWQv
ZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCisKICAgICBTaGFyZWQvZWZsL05hdGl2ZVdlYktl
eWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZs
LmNwcAogICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MTU3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCkBAIC0wLDAg
KzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBs
ZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL01lbW9yeVN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwordXNp
bmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3R5cGVkZWYgc3RydWN0
IEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgeworICAgIHNpemVfdCB0b3RhbFByb2dyYW1TaXplOwor
ICAgIHNpemVfdCByZXNpZGVudFNldFNpemU7CisgICAgc2l6ZV90IHNoYXJlZFNpemU7CisgICAg
c2l6ZV90IHRleHRTaXplOworICAgIHNpemVfdCBsaWJyYXJ5U2l6ZTsKKyAgICBzaXplX3QgZGF0
YVN0YWNrU2l6ZTsKKyAgICBzaXplX3QgZGlydHlQYWdlU2l6ZTsKK30gQXBwbGljYXRpb25NZW1v
cnlTdGF0czsKKworY29uc3QgaW50IE1BWF9CVUZGRVIgPSAxMjg7Citjb25zdCBpbnQgTUFYX1BS
T0NFU1NfUEFUSCA9IDM1OworCitpbmxpbmUgU3RyaW5nIGdldFRva2VuKEZJTEUqIGZpbGUpCit7
CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgY2hhciBidWZm
ZXJbTUFYX0JVRkZFUl07CisgICAgbWVtc2V0KGJ1ZmZlciwgMCwgTUFYX0JVRkZFUik7CisgICAg
ZnNjYW5mKGZpbGUsICIlcyIsIGJ1ZmZlcik7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIpOwor
fQorCit2b2lkIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8oV2ViTWVtb3J5U3RhdGlzdGljcyYgc3Rh
dGljcykKK3sKKyAgICBib29sIGZvdW5kS2V5TmFtZSA9IGZhbHNlOworICAgIEZJTEUqIGZTeXN0
ZW1NZW1vcnlTdGF0dXMgPSBmb3BlbigiL3Byb2MvbWVtaW5mbyIsICJyIik7CisgICAgaWYgKGZT
eXN0ZW1NZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgd2hpbGUgKCFmZW9mKGZTeXN0ZW1NZW1vcnlT
dGF0dXMpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyVG9rZW4gPSBnZXRUb2tlbihmU3lzdGVt
TWVtb3J5U3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdHJUb2tlbi5maW5kKCc6JykgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9IHN0clRva2VuLmxlZnQo
c3RyVG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNzLmtleXMuYXBw
ZW5kKGtleU5hbWUpOworICAgICAgICAgICAgICAgIGZvdW5kS2V5TmFtZSA9IHRydWU7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkgeworICAgICAgICAgICAgICAgIHN0YXRp
Y3MudmFsdWVzLmFwcGVuZChzdHJUb2tlbi50b0ludCgpKTsKKyAgICAgICAgICAgICAgICBmb3Vu
ZEtleU5hbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmY2xv
c2UoZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgfQorfQorCitBcHBsaWNhdGlvbk1lbW9yeVN0
YXRzIHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCkKK3sKKyAgICBBcHBsaWNhdGlvbk1lbW9yeVN0
YXRzIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBjaGFyIHByb2Nlc3NQYXRoW01BWF9QUk9DRVNT
X1BBVEhdOworICAgIHNwcmludGYocHJvY2Vzc1BhdGgsICIvcHJvYy8lZC9zdGF0bSIsIGdldHBp
ZCgpKTsKKyAgICBGSUxFKiBmTWVtb3J5U3RhdHVzID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7
CisgICAgaWYgKGZNZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgZnNjYW5mKGZNZW1vcnlTdGF0dXMs
ICIlZCAlZCAlZCAlZCAlZCAlZCAlZCIsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3Rh
dHMudG90YWxQcm9ncmFtU2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy5y
ZXNpZGVudFNldFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuc2hhcmVk
U2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6ZSwKKyAgICAg
ICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy5saWJyYXJ5U2l6ZSwKKyAgICAgICAgICAgICAg
ICAmYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tTaXplLAorICAgICAgICAgICAgICAgICZhcHBs
aWNhdGlvblN0YXRzLmRpcnR5UGFnZVNpemUpOworICAgICAgICBmY2xvc2UoZk1lbW9yeVN0YXR1
cyk7CisgICAgfQorCisgICAgcmV0dXJuIGFwcGxpY2F0aW9uU3RhdHM7Cit9CisKK1N0cmluZyBX
ZWJNZW1vcnlTYW1wbGVyOjpwcm9jZXNzTmFtZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHByb2Nl
c3NOYW1lOworICAgIGNoYXIgcHJvY2Vzc1BhdGhbTUFYX1BST0NFU1NfUEFUSF07CisgICAgc3By
aW50Zihwcm9jZXNzUGF0aCwgIi9wcm9jLyVkL3N0YXR1cyIsIGdldHBpZCgpKTsKKyAgICBGSUxF
KiBmUHJvY2Vzc1N0YXR1cyA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAgIGlmIChmUHJv
Y2Vzc1N0YXR1cykgeworICAgICAgICBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7CisgICAgICAg
IHByb2Nlc3NOYW1lID0gZ2V0VG9rZW4oZlByb2Nlc3NTdGF0dXMpOworICAgICAgICBmY2xvc2Uo
ZlByb2Nlc3NTdGF0dXMpOworICAgIH0KKworICAgIHJldHVybiBwcm9jZXNzTmFtZTsKK30KKwor
V2ViTWVtb3J5U3RhdGlzdGljcyBXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQoKSBjb25z
dAoreworICAgIHNpemVfdCB0b3RhbEJ5dGVzSW5Vc2UgPSAwLCB0b3RhbEJ5dGVzQ29tbWl0dGVk
ID0gMDsKKworICAgIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBwbGljYXRpb25TdGF0cyA9IHNh
bXBsZUFwcGxpY2F0aW9uTWFsbG9jKCk7CisKKyAgICBXZWJNZW1vcnlTdGF0aXN0aWNzIHdlYktp
dE1lbW9yeVN0YXRzOworCisgICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRp
c3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CisgICAgc2l6ZV90IGZhc3RNYWxs
b2NCeXRlc0luVXNlID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcyAtIGZh
c3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXM7CisgICAgc2l6ZV90IGZhc3RNYWxsb2NC
eXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXM7Cisg
ICAgdG90YWxCeXRlc0luVXNlICs9IGZhc3RNYWxsb2NCeXRlc0luVXNlOworICAgIHRvdGFsQnl0
ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkOworCisgICAgc2l6ZV90IGpz
Y0hlYXBCeXRlc0luVXNlID0gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFw
LnNpemUoKTsKKyAgICBzaXplX3QganNjSGVhcEJ5dGVzQ29tbWl0dGVkID0gSlNET01XaW5kb3c6
OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmNhcGFjaXR5KCk7CisgICAgdG90YWxCeXRlc0lu
VXNlICs9IGpzY0hlYXBCeXRlc0luVXNlOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0ganNj
SGVhcEJ5dGVzQ29tbWl0dGVkOworCisgICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxN
ZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKKyAgICB0b3RhbEJ5dGVzSW5V
c2UgKz0gZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0YXRzLkpJ
VEJ5dGVzOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZ2xvYmFsTWVtb3J5U3RhdHMuc3Rh
Y2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzOworCisgICAgZG91YmxlIG5vdyA9
IGN1cnJlbnRUaW1lKCk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJp
bmcoIlRpbWVzdGFtcCIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKG5v
dyk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRvdGFsIFBy
b2dyYW0gU2l6ZSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxp
Y2F0aW9uU3RhdHMudG90YWxQcm9ncmFtU2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5
cy5hcHBlbmQoU3RyaW5nKCJSU1MiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFw
cGVuZChhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5
U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJTaGFyZWQiKSk7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLnNoYXJlZFNpemUpOworICAgIHdlYktp
dE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVGV4dCIpKTsKKyAgICB3ZWJLaXRNZW1v
cnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUpOworICAgIHdl
YktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiTGlicmFyeSIpKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMubGlicmFyeVNpemUp
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiRGF0YS9TdGFjayIp
KTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMu
ZGF0YVN0YWNrU2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5n
KCJEaXJ0eSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0
aW9uU3RhdHMuZGlydHlQYWdlU2l6ZSk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFw
cGVuZChTdHJpbmcoIlRvdGFsIE1lbW9yeSBJbiBVc2UiKSk7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMudmFsdWVzLmFwcGVuZCh0b3RhbEJ5dGVzSW5Vc2UpOworICAgIHdlYktpdE1lbW9yeVN0YXRz
LmtleXMuYXBwZW5kKFN0cmluZygiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGZhc3RNYWxsb2NCeXRlc0luVXNlKTsKKyAgICB3
ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSGVhcCBCeXRl
cyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGpzY0hlYXBCeXRlc0lu
VXNlKTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwg
Q29tbWl0dGVkIE1lbW9yeSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5k
KHRvdGFsQnl0ZXNDb21taXR0ZWQpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5k
KFN0cmluZygiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy52YWx1ZXMuYXBwZW5kKGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZCk7CisgICAgd2ViS2l0TWVt
b3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiKSk7Cisg
ICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChqc2NIZWFwQnl0ZXNDb21taXR0ZWQp
OworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0
IFN0YWNrIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xv
YmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEpJVCBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlT
dGF0cy52YWx1ZXMuYXBwZW5kKGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKTsKKworICAgIHNh
bXBsZVN5c3RlbU1lbW9yeUluZm8od2ViS2l0TWVtb3J5U3RhdHMpOworCisgICAgcmV0dXJuIHdl
YktpdE1lbW9yeVN0YXRzOworfQorCit2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQ
cmVzc3VyZUV2ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
CmluZGV4IDIxYzE1N2MuLjM0ODE2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUg
IkJhdHRlcnlQcm92aWRlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
TnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaCIKQEAg
LTgzLDMgKzg0LDE2IEBAIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCiAK
ICAgICByZXR1cm4gZGVmYXVsdENvbnRleHQ7CiB9CisKK3ZvaWQgZXdrX2NvbnRleHRfbWVtb3J5
X3NhbXBsZXJfc3RhcnQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIGRvdWJsZSB0aW1lckludGVy
dmFsKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a0NvbnRleHQpOworICAg
IFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBpbnRlcnZhbChBZG9wdFdLLCBXS0RvdWJsZUNyZWF0
ZSh0aW1lckludGVydmFsKSk7CisgICAgV0tDb250ZXh0U3RhcnRNZW1vcnlTYW1wbGVyKGV3a19j
b250ZXh0X1dLQ29udGV4dF9nZXQoZXdrQ29udGV4dCksIGludGVydmFsLmdldCgpKTsKK30KKwor
dm9pZCBld2tfY29udGV4dF9tZW1vcnlfc2FtcGxlcl9zdG9wKEV3a19Db250ZXh0KiBld2tDb250
ZXh0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a0NvbnRleHQpOworICAg
IFdLQ29udGV4dFN0b3BNZW1vcnlTYW1wbGVyKGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoZXdr
Q29udGV4dCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmgKaW5kZXggZTg5MDM3Ny4uZjZkZTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCkBAIC01NSw2ICs1NSwyNSBAQCBFQVBJIEV3
a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOwogICovCiBFQVBJIEV3a19Db29r
aWVfTWFuYWdlciAqZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250
ZXh0ICpjb250ZXh0KTsKIAorCisvKioKKyogU3RhcnQgbWVtb3J5IHNhbXBsZXIuCisqCisqIFRo
aXMgZnVuY3Rpb24gaXMgZm9yIGxvZ2dpbmcgdGhlIG1lbW9yeSB1c2FnZXMgb2YgYm90aCBXZWJQ
cm9jZXNzIGFuZCBVSVByb2Nlc3MuCisqIExvZyBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpbiAvdG1w
IHBhdGguCisqCisqIEBwYXJhbSBjb250ZXh0IGNvbnRleHQgb2JqZWN0CisqIEBwYXJhbSBpbnRl
cnZhbCB0aW1lIGdhcCB0byBmaXJlIHRoZSB0aW1lcgorKi8KK0VBUEkgdm9pZCBld2tfY29udGV4
dF9tZW1vcnlfc2FtcGxlcl9zdGFydChFd2tfQ29udGV4dCogY29udGV4dCwgZG91YmxlIHRpbWVy
X2ludGVydmFsKTsKKworLyoqCisqIFN0b3AgbWVtb3J5IHNhbXBsZXIuCisqCisqIEBwYXJhbSBj
b250ZXh0IGNvbnRleHQgb2JqZWN0CisqLworRUFQSSB2b2lkIGV3a19jb250ZXh0X21lbW9yeV9z
YW1wbGVyX3N0b3AoRXdrX0NvbnRleHQqIGNvbnRleHQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA4ODlmMjJlLi45YTgwNzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQpAQCAtNTMsNiArNTMsOCBAQCBBRERfREVGSU5JVElPTlMoLURXVEZf
VVNFX0lDVV9VTklDT0RFPTEpCiBTRVQoV1RGX1VTRV9DQUlSTyAxKQogQUREX0RFRklOSVRJT05T
KC1EV1RGX1VTRV9DQUlSTz0xKQogCitTRVQoRU5BQkxFX01FTU9SWV9TQU1QTEVSIE9OKQorCiBT
RVQoSlNDX0VYRUNVVEFCTEVfTkFNRSBqc2MpCiAKIFNFVChXVEZfTElCUkFSWV9OQU1FIHd0Zl9l
ZmwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153233</attachid>
            <date>2012-07-19 05:28:03 -0700</date>
            <delta_ts>2012-07-20 03:56:36 -0700</delta_ts>
            <desc>fix style error.</desc>
            <filename>WebMemorySampler.patch</filename>
            <type>text/plain</type>
            <size>14760</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjOWIyNzAxLi45OTk3NzUy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDctMTkgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IFdlYk1lbW9yeVNhbXBs
ZXIgZmVhdHVyZSBvbi4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtl
OgorCiAyMDEyLTA3LTE4ICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIERyYWcgaW1hZ2UgZm9yIGltYWdlIGVsZW1lbnRzIHNob3VsZCBi
ZSBzY2FsZWQgd2l0aCBkZXZpY2Ugc2NhbGUgZmFjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggZjY4MTMxMS4uOTc4MTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDctMTkgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViTWVtb3J5
U2FtcGxlciBpbmNsdWRlIGphdmFzY3JpcHQgbWVtb3J5IHVzYWdlLgorICAgICAgICBBbmQgZ2xv
YmFsTWVtb3J5U3RhdGlzdGljcyBpbiBNZW1vcnlTdGF0aXN0aWMgcmV0dXJucyBKSVQgbWVtb3J5
IHVzYWdlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisKIDIwMTItMDctMTggIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIGVtaXQg
aW5saW5lIGNvZGUgZm9yIHByb3BlcnR5IHN0b3JhZ2UgKHJlKWFsbG9jYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0NDg4MzRjLi40ZDQ5MjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNyw2ICsxNywxMiBAQCBJ
RiAoRU5BQkxFX0dMSUJfU1VQUE9SVCkKICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9NRU1P
UllfU0FNUExFUikKKyAgTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUworICAgIHJ1
bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKKyAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQg
SmF2YVNjcmlwdENvcmVfTElOS19GTEFHUwogICAgICR7RUNPUkVfTERGTEFHU30KICkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
M2Q5NjY0Ni4uMjEzZTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0xOSAgSnVuZ0pp
ayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgV2Vi
TWVtb3J5U2FtcGxlciBvcHRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuYWJsZSBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEyLTA3LTE4ICBZb25nIExpICA8eW9saUByaW0uY29tPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgY3VycmVudFRpbWUoKSBhbmQgbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgZm9yIE9TKFFOWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGMxN2Yz
ZTEuLjEwMWQ4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTE1Miw0ICsxMTUyLDggQEAKICNlbmRpZgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisjZGVmaW5lIEVOQUJMRV9NRU1PUllfU0FNUExF
UiAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YmMzMjY5Ni4uOGI5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTE5
ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
IEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUgdG8gRUZM
IHBvcnQuIFdlYk1lbW9yeVNhbXBsZXIgcmVjb3JkcyBtZW1vcnkgdXNhZ2Ugb2YKKyAgICAgICAg
V2ViUHJvY2VzcyBhbmQgVUkgUHJvY2VzcyBhbmQgYWxzbyBpdCByZWNvcmRzIGFwcGxpY2F0aW9u
IG1lbW9yeSBzdGF0dXMgaW4gcmVhbCB0aW1lLgorICAgICAgICBJbmNsdWRlZCBpdGVtcyBvbiB0
aGUgcmVzdWx0IGFyZSBKSVQsIEpTIGhlYXAsIGZhc3RtYWxsb2MgYnl0ZXMgYW5kCisgICAgICAg
IGFwcGxpY2F0aW9uIG1lbW9yeSBpbmZvIGZyb20gL3Byb2MvcHJvY2Vzc19pZC9zdGF0bS4KKwor
ICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViTWVt
b3J5U2FtcGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEFw
cGxpY2F0aW9uTWVtb3J5U3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpnZXRUb2tlbik6CisgICAg
ICAgIChXZWJLaXQ6OnNhbXBsZVN5c3RlbU1lbW9yeUluZm8pOgorICAgICAgICAoV2ViS2l0Ojpz
YW1wbGVBcHBsaWNhdGlvbk1hbGxvYyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBs
ZXI6OnByb2Nlc3NOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6c2Ft
cGxlV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6c2VuZE1lbW9y
eVByZXNzdXJlRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcDoKKyAgICAgICAgKGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0YXJ0KToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0b3ApOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisKIDIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEVGTCBz
aG91bGQgdXNlIERvd25sb2FkU291cCBpbnN0ZWFkIG9mIGRlZmluaW5nIERvd25sb2FkRWZsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDk3ZjcwOTUuLmExMmE0MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0yMSw2ICsyMSwxMCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBTaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcAogICAgIFNo
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorICAgIFNoYXJlZC9XZWJNZW1v
cnlTYW1wbGVyLmgKKyAgICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKyAgICBTaGFyZWQv
ZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCisKICAgICBTaGFyZWQvZWZsL05hdGl2ZVdlYktl
eWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZs
LmNwcAogICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3Y2QyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCkBAIC0wLDAg
KzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllf
U0FNUExFUikKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5k
b3cuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1
c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordHlwZWRlZiBzdHJ1
Y3QgQXBwbGljYXRpb25NZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRvdGFsUHJvZ3JhbVNpemU7
CisgICAgc2l6ZV90IHJlc2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qgc2hhcmVkU2l6ZTsKKyAg
ICBzaXplX3QgdGV4dFNpemU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXplOworICAgIHNpemVfdCBk
YXRhU3RhY2tTaXplOworICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOworfSBBcHBsaWNhdGlvbk1l
bW9yeVN0YXRzOworCitjb25zdCBpbnQgbWF4QnVmZmVyID0gMTI4OworY29uc3QgaW50IG1heFBy
b2Nlc3NQYXRoID0gMzU7CisKK2lubGluZSBTdHJpbmcgZ2V0VG9rZW4oRklMRSogZmlsZSkKK3sK
KyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBjaGFyIGJ1ZmZl
clttYXhCdWZmZXJdOworICAgIG1lbXNldChidWZmZXIsIDAsIG1heEJ1ZmZlcik7CisgICAgZnNj
YW5mKGZpbGUsICIlcyIsIGJ1ZmZlcik7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIpOworfQor
Cit2b2lkIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8oV2ViTWVtb3J5U3RhdGlzdGljcyYgc3RhdGlj
cykKK3sKKyAgICBib29sIGZvdW5kS2V5TmFtZSA9IGZhbHNlOworICAgIEZJTEUqIGZTeXN0ZW1N
ZW1vcnlTdGF0dXMgPSBmb3BlbigiL3Byb2MvbWVtaW5mbyIsICJyIik7CisgICAgaWYgKGZTeXN0
ZW1NZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgd2hpbGUgKCFmZW9mKGZTeXN0ZW1NZW1vcnlTdGF0
dXMpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyVG9rZW4gPSBnZXRUb2tlbihmU3lzdGVtTWVt
b3J5U3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdHJUb2tlbi5maW5kKCc6JykgIT0gbm90Rm91
bmQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9IHN0clRva2VuLmxlZnQoc3Ry
VG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNzLmtleXMuYXBwZW5k
KGtleU5hbWUpOworICAgICAgICAgICAgICAgIGZvdW5kS2V5TmFtZSA9IHRydWU7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkgeworICAgICAgICAgICAgICAgIHN0YXRpY3Mu
dmFsdWVzLmFwcGVuZChzdHJUb2tlbi50b0ludCgpKTsKKyAgICAgICAgICAgICAgICBmb3VuZEtl
eU5hbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmY2xvc2Uo
ZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgfQorfQorCitBcHBsaWNhdGlvbk1lbW9yeVN0YXRz
IHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCkKK3sKKyAgICBBcHBsaWNhdGlvbk1lbW9yeVN0YXRz
IGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRo
XTsKKyAgICBzcHJpbnRmKHByb2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3RhdG0iLCBnZXRwaWQoKSk7
CisgICAgRklMRSogZk1lbW9yeVN0YXR1cyA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAg
IGlmIChmTWVtb3J5U3RhdHVzKSB7CisgICAgICAgIGZzY2FuZihmTWVtb3J5U3RhdHVzLCAiJWQg
JWQgJWQgJWQgJWQgJWQgJWQiLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLnRv
dGFsUHJvZ3JhbVNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMucmVzaWRl
bnRTZXRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLnNoYXJlZFNpemUs
CisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUsCisgICAgICAgICAg
ICAgICAgJmFwcGxpY2F0aW9uU3RhdHMubGlicmFyeVNpemUsCisgICAgICAgICAgICAgICAgJmFw
cGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGljYXRp
b25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKyAgICAgICAgZmNsb3NlKGZNZW1vcnlTdGF0dXMpOwor
ICAgIH0KKworICAgIHJldHVybiBhcHBsaWNhdGlvblN0YXRzOworfQorCitTdHJpbmcgV2ViTWVt
b3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworICAgIFN0cmluZyBwcm9jZXNzTmFt
ZTsKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzcHJpbnRmKHBy
b2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3RhdHVzIiwgZ2V0cGlkKCkpOworICAgIEZJTEUqIGZQcm9j
ZXNzU3RhdHVzID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAgaWYgKGZQcm9jZXNzU3Rh
dHVzKSB7CisgICAgICAgIGdldFRva2VuKGZQcm9jZXNzU3RhdHVzKTsKKyAgICAgICAgcHJvY2Vz
c05hbWUgPSBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7CisgICAgICAgIGZjbG9zZShmUHJvY2Vz
c1N0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIHByb2Nlc3NOYW1lOworfQorCitXZWJNZW1v
cnlTdGF0aXN0aWNzIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCgpIGNvbnN0Cit7Cisg
ICAgc2l6ZV90IHRvdGFsQnl0ZXNJblVzZSA9IDAsIHRvdGFsQnl0ZXNDb21taXR0ZWQgPSAwOwor
CisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBsaWNhdGlvblN0YXRzID0gc2FtcGxlQXBw
bGljYXRpb25NYWxsb2MoKTsKKworICAgIFdlYk1lbW9yeVN0YXRpc3RpY3Mgd2ViS2l0TWVtb3J5
U3RhdHM7CisKKyAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcyA9
IFdURjo6ZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKKyAgICBzaXplX3QgZmFzdE1hbGxvY0J5dGVz
SW5Vc2UgPSBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzIC0gZmFzdE1hbGxv
Y1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlczsKKyAgICBzaXplX3QgZmFzdE1hbGxvY0J5dGVzQ29t
bWl0dGVkID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlczsKKyAgICB0b3Rh
bEJ5dGVzSW5Vc2UgKz0gZmFzdE1hbGxvY0J5dGVzSW5Vc2U7CisgICAgdG90YWxCeXRlc0NvbW1p
dHRlZCArPSBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBzaXplX3QganNjSGVhcEJ5
dGVzSW5Vc2UgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuc2l6ZSgp
OworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNDb21taXR0ZWQgPSBKU0RPTVdpbmRvdzo6Y29tbW9u
SlNHbG9iYWxEYXRhKCktPmhlYXAuY2FwYWNpdHkoKTsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0g
anNjSGVhcEJ5dGVzSW5Vc2U7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBqc2NIZWFwQnl0
ZXNDb21taXR0ZWQ7CisKKyAgICBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0
YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOworICAgIHRvdGFsQnl0ZXNJblVzZSArPSBn
bG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7
CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVz
ICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7CisKKyAgICBkb3VibGUgbm93ID0gY3VycmVu
dFRpbWUoKTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVGlt
ZXN0YW1wIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQobm93KTsKKwor
ICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwgUHJvZ3JhbSBT
aXplIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25T
dGF0cy50b3RhbFByb2dyYW1TaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChTdHJpbmcoIlJTUyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFw
cGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5r
ZXlzLmFwcGVuZChTdHJpbmcoIlNoYXJlZCIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1
ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5
U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUZXh0IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRz
LnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6ZSk7CisgICAgd2ViS2l0TWVt
b3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJMaWJyYXJ5IikpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy5saWJyYXJ5U2l6ZSk7CisgICAg
d2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJEYXRhL1N0YWNrIikpOworICAg
IHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy5kYXRhU3Rh
Y2tTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRpcnR5
IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0
cy5kaXJ0eVBhZ2VTaXplKTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0
cmluZygiVG90YWwgTWVtb3J5IEluIFVzZSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1
ZXMuYXBwZW5kKHRvdGFsQnl0ZXNJblVzZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzSW5Vc2UpOworICAgIHdlYktpdE1l
bW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOwor
ICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVzSW5Vc2UpOwor
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUb3RhbCBDb21taXR0
ZWQgTWVtb3J5IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQodG90YWxC
eXRlc0NvbW1pdHRlZCk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5n
KCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVl
cy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSGVhcCBCeXRlcyIpKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGpzY0hlYXBCeXRlc0NvbW1pdHRlZCk7CisKKyAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgU3RhY2sg
Qnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChnbG9iYWxNZW1v
cnlTdGF0cy5zdGFja0J5dGVzKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChT
dHJpbmcoIkphdmFTY3JpcHQgSklUIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZh
bHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOworCisgICAgc2FtcGxlU3lz
dGVtTWVtb3J5SW5mbyh3ZWJLaXRNZW1vcnlTdGF0cyk7CisKKyAgICByZXR1cm4gd2ViS2l0TWVt
b3J5U3RhdHM7Cit9CisKK3ZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c2VuZE1lbW9yeVByZXNzdXJl
RXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXgg
MjFjMTU3Yy4uMzQ4MTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQmF0dGVy
eVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tOdW1iZXIu
aCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oIgpAQCAtODMsMyAr
ODQsMTYgQEAgRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKIAogICAgIHJl
dHVybiBkZWZhdWx0Q29udGV4dDsKIH0KKwordm9pZCBld2tfY29udGV4dF9tZW1vcnlfc2FtcGxl
cl9zdGFydChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgZG91YmxlIHRpbWVySW50ZXJ2YWwpCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrQ29udGV4dCk7CisgICAgV0tSZXRh
aW5QdHI8V0tEb3VibGVSZWY+IGludGVydmFsKEFkb3B0V0ssIFdLRG91YmxlQ3JlYXRlKHRpbWVy
SW50ZXJ2YWwpKTsKKyAgICBXS0NvbnRleHRTdGFydE1lbW9yeVNhbXBsZXIoZXdrX2NvbnRleHRf
V0tDb250ZXh0X2dldChld2tDb250ZXh0KSwgaW50ZXJ2YWwuZ2V0KCkpOworfQorCit2b2lkIGV3
a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0b3AoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrQ29udGV4dCk7CisgICAgV0tDb250
ZXh0U3RvcE1lbW9yeVNhbXBsZXIoZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChld2tDb250ZXh0
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
aAppbmRleCBlODkwMzc3Li5mNmRlNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTU1LDYgKzU1LDI1IEBAIEVBUEkgRXdrX0NvbnRl
eHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CiAgKi8KIEVBUEkgRXdrX0Nvb2tpZV9NYW5h
Z2VyICpld2tfY29udGV4dF9jb29raWVfbWFuYWdlcl9nZXQoY29uc3QgRXdrX0NvbnRleHQgKmNv
bnRleHQpOwogCisKKy8qKgorKiBTdGFydCBtZW1vcnkgc2FtcGxlci4KKyoKKyogVGhpcyBmdW5j
dGlvbiBpcyBmb3IgbG9nZ2luZyB0aGUgbWVtb3J5IHVzYWdlcyBvZiBib3RoIFdlYlByb2Nlc3Mg
YW5kIFVJUHJvY2Vzcy4KKyogTG9nIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGluIC90bXAgcGF0aC4K
KyoKKyogQHBhcmFtIGNvbnRleHQgY29udGV4dCBvYmplY3QKKyogQHBhcmFtIGludGVydmFsIHRp
bWUgZ2FwIHRvIGZpcmUgdGhlIHRpbWVyCisqLworRUFQSSB2b2lkIGV3a19jb250ZXh0X21lbW9y
eV9zYW1wbGVyX3N0YXJ0KEV3a19Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgdGltZXJfaW50ZXJ2
YWwpOworCisvKioKKyogU3RvcCBtZW1vcnkgc2FtcGxlci4KKyoKKyogQHBhcmFtIGNvbnRleHQg
Y29udGV4dCBvYmplY3QKKyovCitFQVBJIHZvaWQgZXdrX2NvbnRleHRfbWVtb3J5X3NhbXBsZXJf
c3RvcChFd2tfQ29udGV4dCogY29udGV4dCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDg4OWYyMmUuLjlhODA3NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCkBAIC01Myw2ICs1Myw4IEBAIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfSUNV
X1VOSUNPREU9MSkKIFNFVChXVEZfVVNFX0NBSVJPIDEpCiBBRERfREVGSU5JVElPTlMoLURXVEZf
VVNFX0NBSVJPPTEpCiAKK1NFVChFTkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCisKIFNFVChKU0Nf
RVhFQ1VUQUJMRV9OQU1FIGpzYykKIAogU0VUKFdURl9MSUJSQVJZX05BTUUgd3RmX2VmbCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153474</attachid>
            <date>2012-07-20 03:56:44 -0700</date>
            <delta_ts>2012-08-16 07:12:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120720195639.patch</filename>
            <type>text/plain</type>
            <size>15355</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NWE0NWQ1OTE2YWRjMmJjZjMwNTk4NDI5Yzk5YjhiOGU5ZWY5OGU3Li5jMTJlOTMxZTFlMGNkMWQ2
ZmVlZjM4ZTkzMmEyYmFmN2RlMWQ1YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wNy0yMCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtDTUFLRV0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJNZW1v
cnlTYW1wbGVyIGNvbGxlY3RzIEphdmFzY3JpcHQgc3RhY2sgYW5kIEpJVCBtZW1vcnkgdXNhZ2Ug
aW4gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorCiAyMDEyLTA3LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgREZHIGNlbGwgY2hlY2tzIHNob3VsZCBiZSBob2lzdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTM1OTc4NDI2NjRh
OTY1NzE0M2Q2NjdiMzA1ZWE0NGZjNTVhZjAuLmZhMWE3ODlhN2QzOTRmNTRkYjk5ZmE2YTk2OGU3
MDZiMTBmZDc1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjAgIEp1bmdKaWsgTGVl
ICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdlYk1lbW9y
eVNhbXBsZXIgb3B0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFbmFibGUgV2ViTWVtb3J5U2FtcGxlciBvcHRpb24uCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKwogMjAxMi0wNy0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIFRoZSBBVFNVSS1iYXNlZCBjb21wbGV4IHRleHQgY29kZSBpcyB1bnVzZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlOTJlNGFmYmFjOTNjNDBkNGE5ZmNjYmVkZDFlZTdhYTFhOGEwMjMyLi4y
ZDhlMjc5NGM2MTAyMzg2ZjM1MjdjOTQ0MjM3YWIyY2NiMTIyZWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTItMDctMjAgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYk1lbW9y
eVNhbXBsZXIgZmVhdHVyZSB0byBFRkwgcG9ydC4gV2ViTWVtb3J5U2FtcGxlciByZWNvcmRzIG1l
bW9yeSB1c2FnZSBvZgorICAgICAgICBXZWJQcm9jZXNzIGFuZCBVSSBQcm9jZXNzIGFuZCBhbHNv
IGl0IHJlY29yZHMgYXBwbGljYXRpb24gbWVtb3J5IHN0YXR1cyBpbiByZWFsIHRpbWUuCisgICAg
ICAgIEluY2x1ZGVkIGl0ZW1zIG9uIHRoZSByZXN1bHQgYXJlIEpJVCwgSlMgaGVhcCwgZmFzdG1h
bGxvYyBieXRlcyBhbmQKKyAgICAgICAgYXBwbGljYXRpb24gbWVtb3J5IGluZm8gZnJvbSAvcHJv
Yy9wcm9jZXNzX2lkL3N0YXRtLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoQXBwbGljYXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAgIChX
ZWJLaXQ6OmdldFRva2VuKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlU3lzdGVtTWVtb3J5SW5m
byk6CisgICAgICAgIChXZWJLaXQ6OnNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZW1vcnlTYW1wbGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVtb3J5
X3NhbXBsZXJfc3RhcnQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVtb3J5X3NhbXBsZXJfc3Rv
cCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKwogMjAxMi0w
Ny0yMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjMwODUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggNDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1
NjY4ZS4uNGQ0OTIyZTk2ZGI1ZjQyYmY0OWJjMmViMzlkNzcxNDQ5MWY4OTEzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTcsNiArMTcsMTIgQEAgSUYgKEVO
QUJMRV9HTElCX1NVUFBPUlQpCiAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfTUVNT1JZX1NB
TVBMRVIpCisgIExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBydW50aW1l
L01lbW9yeVN0YXRpc3RpY3MuY3BwCisgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIEphdmFT
Y3JpcHRDb3JlX0xJTktfRkxBR1MKICAgICAke0VDT1JFX0xERkxBR1N9CiApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApp
bmRleCBhN2UxZDUyZTNmNGZlZGVhOGEzM2Y5MTkxYjY0MThmMWM2MTcyMGE2Li43OWZlNzU0NzQ4
Yzk3ZWM5NjlhNWFkYTY1YzJmMjM1Y2Y0MjE1YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTExNDMsNCAr
MTE0Myw4IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorI2RlZmluZSBF
TkFCTEVfTUVNT1JZX1NBTVBMRVIgMQorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1f
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5N2Y3MDk1YTY1ZGY3ZTEyMDVlNjQw
NGJkOTJkNzFjYTAxYjExMmU4Li5hMTJhNDE2OGFlZGU3NDY4MGQ0ZTE5Yzc5OTIyYmU5NGE5MmMx
ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjEsNiArMjEsMTAgQEAgTElTVChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL2NhaXJvL0xheWVyVHJlZUNvbnRleHRD
YWlyby5jcHAKICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKKyAg
ICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisgICAgU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIu
Y3BwCisgICAgU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcAorCiAgICAgU2hhcmVk
L2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcAogICAgIFNoYXJlZC9lZmwvTmF0aXZl
V2ViV2hlZWxFdmVudEVmbC5jcHAKICAgICBTaGFyZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRF
ZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNh
bXBsZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVy
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41N2NkMjJjOTU4YTk4NTEyMTk4OTM1YWZhNGRjMzRjZmM0YWRh
YzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJNZW1v
cnlTYW1wbGVyRWZsLmNwcApAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVy
LmgiCisKKyNpZiBFTkFCTEUoTUVNT1JZX1NBTVBMRVIpCisKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01lbW9yeVN0YXRpc3RpY3MuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Cit1c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3R5cGVkZWYgc3RydWN0IEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgeworICAg
IHNpemVfdCB0b3RhbFByb2dyYW1TaXplOworICAgIHNpemVfdCByZXNpZGVudFNldFNpemU7Cisg
ICAgc2l6ZV90IHNoYXJlZFNpemU7CisgICAgc2l6ZV90IHRleHRTaXplOworICAgIHNpemVfdCBs
aWJyYXJ5U2l6ZTsKKyAgICBzaXplX3QgZGF0YVN0YWNrU2l6ZTsKKyAgICBzaXplX3QgZGlydHlQ
YWdlU2l6ZTsKK30gQXBwbGljYXRpb25NZW1vcnlTdGF0czsKKworY29uc3QgaW50IG1heEJ1ZmZl
ciA9IDEyODsKK2NvbnN0IGludCBtYXhQcm9jZXNzUGF0aCA9IDM1OworCitpbmxpbmUgU3RyaW5n
IGdldFRva2VuKEZJTEUqIGZpbGUpCit7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgY2hhciBidWZmZXJbbWF4QnVmZmVyXTsKKyAgICBtZW1zZXQoYnVmZmVy
LCAwLCBtYXhCdWZmZXIpOworICAgIGZzY2FuZihmaWxlLCAiJXMiLCBidWZmZXIpOworICAgIHJl
dHVybiBTdHJpbmcoYnVmZmVyKTsKK30KKwordm9pZCBzYW1wbGVTeXN0ZW1NZW1vcnlJbmZvKFdl
Yk1lbW9yeVN0YXRpc3RpY3MmIHN0YXRpY3MpCit7CisgICAgYm9vbCBmb3VuZEtleU5hbWUgPSBm
YWxzZTsKKyAgICBGSUxFKiBmU3lzdGVtTWVtb3J5U3RhdHVzID0gZm9wZW4oIi9wcm9jL21lbWlu
Zm8iLCAiciIpOworICAgIGlmIChmU3lzdGVtTWVtb3J5U3RhdHVzKSB7CisgICAgICAgIHdoaWxl
ICghZmVvZihmU3lzdGVtTWVtb3J5U3RhdHVzKSkgeworICAgICAgICAgICAgU3RyaW5nIHN0clRv
a2VuID0gZ2V0VG9rZW4oZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgICAgICAgICBpZiAoc3Ry
VG9rZW4uZmluZCgnOicpICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGtl
eU5hbWUgPSBzdHJUb2tlbi5sZWZ0KHN0clRva2VuLmxlbmd0aCgpIC0gMSk7CisgICAgICAgICAg
ICAgICAgc3RhdGljcy5rZXlzLmFwcGVuZChrZXlOYW1lKTsKKyAgICAgICAgICAgICAgICBmb3Vu
ZEtleU5hbWUgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChmb3VuZEtleU5hbWUpIHsK
KyAgICAgICAgICAgICAgICBzdGF0aWNzLnZhbHVlcy5hcHBlbmQoc3RyVG9rZW4udG9JbnQoKSk7
CisgICAgICAgICAgICAgICAgZm91bmRLZXlOYW1lID0gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZmNsb3NlKGZTeXN0ZW1NZW1vcnlTdGF0dXMpOworICAgIH0KK30K
KworQXBwbGljYXRpb25NZW1vcnlTdGF0cyBzYW1wbGVBcHBsaWNhdGlvbk1hbGxvYygpCit7Cisg
ICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBsaWNhdGlvblN0YXRzOworCisgICAgY2hhciBw
cm9jZXNzUGF0aFttYXhQcm9jZXNzUGF0aF07CisgICAgc3ByaW50Zihwcm9jZXNzUGF0aCwgIi9w
cm9jLyVkL3N0YXRtIiwgZ2V0cGlkKCkpOworICAgIEZJTEUqIGZNZW1vcnlTdGF0dXMgPSBmb3Bl
bihwcm9jZXNzUGF0aCwgInIiKTsKKyAgICBpZiAoZk1lbW9yeVN0YXR1cykgeworICAgICAgICBm
c2NhbmYoZk1lbW9yeVN0YXR1cywgIiVkICVkICVkICVkICVkICVkICVkIiwKKyAgICAgICAgICAg
ICAgICAmYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplLAorICAgICAgICAgICAgICAg
ICZhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBw
bGljYXRpb25TdGF0cy5zaGFyZWRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0
YXRzLnRleHRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLmxpYnJhcnlT
aXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLmRhdGFTdGFja1NpemUsCisg
ICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuZGlydHlQYWdlU2l6ZSk7CisgICAgICAg
IGZjbG9zZShmTWVtb3J5U3RhdHVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gYXBwbGljYXRpb25T
dGF0czsKK30KKworU3RyaW5nIFdlYk1lbW9yeVNhbXBsZXI6OnByb2Nlc3NOYW1lKCkgY29uc3QK
K3sKKyAgICBTdHJpbmcgcHJvY2Vzc05hbWU7CisgICAgY2hhciBwcm9jZXNzUGF0aFttYXhQcm9j
ZXNzUGF0aF07CisgICAgc3ByaW50Zihwcm9jZXNzUGF0aCwgIi9wcm9jLyVkL3N0YXR1cyIsIGdl
dHBpZCgpKTsKKyAgICBGSUxFKiBmUHJvY2Vzc1N0YXR1cyA9IGZvcGVuKHByb2Nlc3NQYXRoLCAi
ciIpOworICAgIGlmIChmUHJvY2Vzc1N0YXR1cykgeworICAgICAgICBnZXRUb2tlbihmUHJvY2Vz
c1N0YXR1cyk7CisgICAgICAgIHByb2Nlc3NOYW1lID0gZ2V0VG9rZW4oZlByb2Nlc3NTdGF0dXMp
OworICAgICAgICBmY2xvc2UoZlByb2Nlc3NTdGF0dXMpOworICAgIH0KKworICAgIHJldHVybiBw
cm9jZXNzTmFtZTsKK30KKworV2ViTWVtb3J5U3RhdGlzdGljcyBXZWJNZW1vcnlTYW1wbGVyOjpz
YW1wbGVXZWJLaXQoKSBjb25zdAoreworICAgIHNpemVfdCB0b3RhbEJ5dGVzSW5Vc2UgPSAwLCB0
b3RhbEJ5dGVzQ29tbWl0dGVkID0gMDsKKworICAgIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBw
bGljYXRpb25TdGF0cyA9IHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCk7CisKKyAgICBXZWJNZW1v
cnlTdGF0aXN0aWNzIHdlYktpdE1lbW9yeVN0YXRzOworCisgICAgRmFzdE1hbGxvY1N0YXRpc3Rp
Y3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7Cisg
ICAgc2l6ZV90IGZhc3RNYWxsb2NCeXRlc0luVXNlID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29t
bWl0dGVkVk1CeXRlcyAtIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXM7CisgICAg
c2l6ZV90IGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNv
bW1pdHRlZFZNQnl0ZXM7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGZhc3RNYWxsb2NCeXRlc0lu
VXNlOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVk
OworCisgICAgc2l6ZV90IGpzY0hlYXBCeXRlc0luVXNlID0gSlNET01XaW5kb3c6OmNvbW1vbkpT
R2xvYmFsRGF0YSgpLT5oZWFwLnNpemUoKTsKKyAgICBzaXplX3QganNjSGVhcEJ5dGVzQ29tbWl0
dGVkID0gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmNhcGFjaXR5KCk7
CisgICAgdG90YWxCeXRlc0luVXNlICs9IGpzY0hlYXBCeXRlc0luVXNlOworICAgIHRvdGFsQnl0
ZXNDb21taXR0ZWQgKz0ganNjSGVhcEJ5dGVzQ29tbWl0dGVkOworCisgICAgR2xvYmFsTWVtb3J5
U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsK
KyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyArIGds
b2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZ2xv
YmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzOwor
CisgICAgZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1lKCk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRpbWVzdGFtcCIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy52YWx1ZXMuYXBwZW5kKG5vdyk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChTdHJpbmcoIlRvdGFsIFByb2dyYW0gU2l6ZSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52
YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMudG90YWxQcm9ncmFtU2l6ZSk7CisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJSU1MiKSk7CisgICAgd2ViS2l0TWVt
b3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6ZSk7
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJTaGFyZWQiKSk7Cisg
ICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLnNoYXJl
ZFNpemUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVGV4dCIp
KTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMu
dGV4dFNpemUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiTGli
cmFyeSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9u
U3RhdHMubGlicmFyeVNpemUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0
cmluZygiRGF0YS9TdGFjayIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5k
KGFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMu
a2V5cy5hcHBlbmQoU3RyaW5nKCJEaXJ0eSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1
ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMuZGlydHlQYWdlU2l6ZSk7CisKKyAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRvdGFsIE1lbW9yeSBJbiBVc2UiKSk7Cisg
ICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZCh0b3RhbEJ5dGVzSW5Vc2UpOworICAg
IHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiRmFzdCBNYWxsb2MgWm9uZSBC
eXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGZhc3RNYWxsb2NC
eXRlc0luVXNlKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkph
dmFTY3JpcHQgSGVhcCBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBw
ZW5kKGpzY0hlYXBCeXRlc0luVXNlKTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBw
ZW5kKFN0cmluZygiVG90YWwgQ29tbWl0dGVkIE1lbW9yeSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlT
dGF0cy52YWx1ZXMuYXBwZW5kKHRvdGFsQnl0ZXNDb21taXR0ZWQpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRl
ZCk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0
IEhlYXAgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChqc2NI
ZWFwQnl0ZXNDb21taXR0ZWQpOworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQo
U3RyaW5nKCJKYXZhU2NyaXB0IFN0YWNrIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRz
LnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyk7CisgICAgd2ViS2l0
TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEpJVCBCeXRlcyIpKTsK
KyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGdsb2JhbE1lbW9yeVN0YXRzLkpJ
VEJ5dGVzKTsKKworICAgIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8od2ViS2l0TWVtb3J5U3RhdHMp
OworCisgICAgcmV0dXJuIHdlYktpdE1lbW9yeVN0YXRzOworfQorCit2b2lkIFdlYk1lbW9yeVNh
bXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IDIxYzE1N2MyMjViNTEyYzE0NDc0MGFkMmFlNjg4MWQx
NmJkNmMwMTAuLjM0ODE2MjQzMjZlOTU3ZTk3OGEyNjU1NzA2OTA1ZWQ4ZGM0MWE1YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkJhdHRlcnlQcm92aWRlci5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5Q
dHIuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Nv
b2tpZV9tYW5hZ2VyX3ByaXZhdGUuaCIKQEAgLTgzLDMgKzg0LDE2IEBAIEV3a19Db250ZXh0KiBl
d2tfY29udGV4dF9kZWZhdWx0X2dldCgpCiAKICAgICByZXR1cm4gZGVmYXVsdENvbnRleHQ7CiB9
CisKK3ZvaWQgZXdrX2NvbnRleHRfbWVtb3J5X3NhbXBsZXJfc3RhcnQoRXdrX0NvbnRleHQqIGV3
a0NvbnRleHQsIGRvdWJsZSB0aW1lckludGVydmFsKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGV3a0NvbnRleHQpOworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBpbnRl
cnZhbChBZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZSh0aW1lckludGVydmFsKSk7CisgICAgV0tDb250
ZXh0U3RhcnRNZW1vcnlTYW1wbGVyKGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoZXdrQ29udGV4
dCksIGludGVydmFsLmdldCgpKTsKK30KKwordm9pZCBld2tfY29udGV4dF9tZW1vcnlfc2FtcGxl
cl9zdG9wKEV3a19Db250ZXh0KiBld2tDb250ZXh0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGV3a0NvbnRleHQpOworICAgIFdLQ29udGV4dFN0b3BNZW1vcnlTYW1wbGVyKGV3
a19jb250ZXh0X1dLQ29udGV4dF9nZXQoZXdrQ29udGV4dCkpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXggZTg5MDM3NzY2MjI5ZTEx
YmVjY2UwNzFlY2ZmMjA2ZDkyODVhMzU1OC4uZjZkZTRlODkzZTJjZmJkN2JmYzA1NzJiNDEyZThm
MTllNzI2NWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5oCkBAIC01NSw2ICs1NSwyNSBAQCBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4
dF9kZWZhdWx0X2dldCgpOwogICovCiBFQVBJIEV3a19Db29raWVfTWFuYWdlciAqZXdrX2NvbnRl
eHRfY29va2llX21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0ICpjb250ZXh0KTsKIAorCisv
KioKKyogU3RhcnQgbWVtb3J5IHNhbXBsZXIuCisqCisqIFRoaXMgZnVuY3Rpb24gaXMgZm9yIGxv
Z2dpbmcgdGhlIG1lbW9yeSB1c2FnZXMgb2YgYm90aCBXZWJQcm9jZXNzIGFuZCBVSVByb2Nlc3Mu
CisqIExvZyBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpbiAvdG1wIHBhdGguCisqCisqIEBwYXJhbSBj
b250ZXh0IGNvbnRleHQgb2JqZWN0CisqIEBwYXJhbSBpbnRlcnZhbCB0aW1lIGdhcCB0byBmaXJl
IHRoZSB0aW1lcgorKi8KK0VBUEkgdm9pZCBld2tfY29udGV4dF9tZW1vcnlfc2FtcGxlcl9zdGFy
dChFd2tfQ29udGV4dCogY29udGV4dCwgZG91YmxlIHRpbWVyX2ludGVydmFsKTsKKworLyoqCisq
IFN0b3AgbWVtb3J5IHNhbXBsZXIuCisqCisqIEBwYXJhbSBjb250ZXh0IGNvbnRleHQgb2JqZWN0
CisqLworRUFQSSB2b2lkIGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0b3AoRXdrX0NvbnRl
eHQqIGNvbnRleHQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0Vm
bC5jbWFrZQppbmRleCBmMzQ4YzkzNTI0OGRiN2QxNGE5OWRkOTNhZjU5OTdlYzUxNGU5MDkxLi5m
M2I2ODY3NzA5MDE5OTk0NmY0ZThjZjdlNGIxMDU5MWI3YmUzYTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQpAQCAtNTMsNiArNTMsOCBAQCBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0lDVV9VTklD
T0RFPTEpCiBTRVQoV1RGX1VTRV9DQUlSTyAxKQogQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9D
QUlSTz0xKQogCitTRVQoRU5BQkxFX01FTU9SWV9TQU1QTEVSIE9OKQorCiBTRVQoSlNDX0VYRUNV
VEFCTEVfTkFNRSBqc2MpCiAKIFNFVChXVEZfTElCUkFSWV9OQU1FIHd0Zl9lZmwpCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTVkNDY5MGQ1NGVhZDY5MDUxOGM4NjNh
ZDZmOTgyODkxY2VkMDkxMi4uN2FjM2I0YTg1ZjRhY2JmMzI1MjY1MTNhODNiMzA1NzI0Mzk4YzM4
YSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTA3LTIwICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtFRkxdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBvcHRpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBXZWJNZW1vcnlTYW1w
bGVyIGZlYXR1cmUgb24uCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZToKKwogMjAxMi0wNy0xOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbUmVmYWN0b3JpbmddIFJlcGxhY2UgTm9kZSdzIERvY3VtZW50IHBvaW50ZXIgd2l0
aCBhIFRyZWVTY29wZSBwb2ludGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158812</attachid>
            <date>2012-08-16 07:12:37 -0700</date>
            <delta_ts>2012-08-17 00:04:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120816231202.patch</filename>
            <type>text/plain</type>
            <size>15683</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjE1MTllYmRlYmE4MmQ1OGJhMDc0MDE3YzMzNDVhYTA0MmFiNjUwLi5lNDNhOTdlZDAxNTYyZTlj
NzM5ZmEzN2U5Yjc2YWUzNDgyNzk3ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0xNiAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtDTUFLRV0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJNZW1v
cnlTYW1wbGVyIGNvbGxlY3RzIEphdmFzY3JpcHQgc3RhY2sgYW5kIEpJVCBtZW1vcnkgdXNhZ2Ug
aW4gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorCiAyMDEyLTA4LTE1ICBCcnVubyBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFiaW5h
ZGVyQGJhc3lza29tLmNvbT4KIAogICAgICAgICBbY3NzMy10ZXh0XSBBZGQgQ1NTMyBUZXh0IGRl
Y29yYXRpb24gY29tcGlsZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU0MjFlZWRmYTIyY2EyMTQ0ZGZjMjMxZTk2YTNk
ZjE3OWUzZjA4NzQuLjExM2VlZWM1NGM4ZDVmODVmYjY1ZmU0ZTVmNzMwMDc0ODE4Y2MxZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMTYgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVA
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUg
V2ViTWVtb3J5U2FtcGxlciBvcHRpb24uCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwog
MjAxMi0wOC0xNCAgTWlsaWFuIFdvbGZmICA8bWlsaWFuLndvbGZmQGtkYWIuY29tPgogCiAgICAg
ICAgIFtRdF0gUU5YIGJ1aWxkIGZhaWxzIGR1ZSB0byByZWZlcmVuY2UgdG8gTUFEVl9GUkVFX1JF
VVNFIGFuZCBNQURWX0ZSRUVfUkVVU0FCTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYTM3YzA2OTM4ZjI0NGU1
OWU4NWE1OTM1YjUxN2U4ZDQ1ZTY0ODA5Li5jMWYwM2RjNmZjYmI1M2UzY2U1MDI5MWMzNTQxMTRm
MTgzMTFlM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDgtMTYgIEp1bmdK
aWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdl
Yk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSB0byBFRkwgcG9ydC4g
V2ViTWVtb3J5U2FtcGxlciByZWNvcmRzIG1lbW9yeSB1c2FnZSBvZgorICAgICAgICBXZWJQcm9j
ZXNzIGFuZCBVSSBQcm9jZXNzIGFuZCBhbHNvIGl0IHJlY29yZHMgYXBwbGljYXRpb24gbWVtb3J5
IHN0YXR1cyBpbiByZWFsIHRpbWUuCisgICAgICAgIEluY2x1ZGVkIGl0ZW1zIG9uIHRoZSByZXN1
bHQgYXJlIEpJVCwgSlMgaGVhcCwgZmFzdG1hbGxvYyBieXRlcyBhbmQKKyAgICAgICAgYXBwbGlj
YXRpb24gbWVtb3J5IGluZm8gZnJvbSAvcHJvYy9wcm9jZXNzX2lkL3N0YXRtLgorCisgICAgICAg
ICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1w
bGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQXBwbGljYXRp
b25NZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6OmdldFRva2VuKToKKyAgICAgICAgKFdl
YktpdDo6c2FtcGxlU3lzdGVtTWVtb3J5SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OnNhbXBsZUFw
cGxpY2F0aW9uTWFsbG9jKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6cHJv
Y2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpzZW5kTWVtb3J5UHJlc3N1
cmVFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgor
ICAgICAgICAoZXdrX2NvbnRleHRfbWVtb3J5X3NhbXBsZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X2NvbnRleHRfbWVtb3J5X3NhbXBsZXJfc3RvcCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuaDoKKwogMjAxMi0wOC0xNiAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEdyYXBoaWNzU3VyZmFjZSBkb3VibGUgYnVmZmVyZWQg
YnkgZGVmYXVsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0
NDg4MzRjZjc1NWY3NzBkYjFiN2M0NDViOTZiMTNjM2E0ZTU2NjhlLi40ZDQ5MjJlOTZkYjVmNDJi
ZjQ5YmMyZWIzOWQ3NzE0NDkxZjg5MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0xNyw2ICsxNywxMiBAQCBJRiAoRU5BQkxFX0dMSUJfU1VQUE9SVCkKICAg
KQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9NRU1PUllfU0FNUExFUikKKyAgTElTVChBUFBFTkQg
SmF2YVNjcmlwdENvcmVfU09VUkNFUworICAgIHJ1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAK
KyAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElOS19GTEFHUwog
ICAgICR7RUNPUkVfTERGTEFHU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDJmNDliZWU4NjU4OTlmMGZj
NDVhYjI3NTBmNDQ4ZGQ4ZDY4NzExNTQuLjQzNjdlYzU5NWFlN2FhMTViNThlNTYzNmRjYjFlNjcz
OGI0NTllMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTE0OSw0ICsxMTQ5LDggQEAKICNlbmRpZgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisjZGVmaW5lIEVOQUJMRV9NRU1PUllfU0FNUExFUiAx
CisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDFmNWZmYTkzMWYyNzczZjIxMTllZTY5YzI1NzU2YTM2Njc2MjJiZGIuLmI2
NzlhNDA2ZGQxMTQzNTNmOTMyMDI5ODBkZmExZDY5MDVjYmUwODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0yMSw2ICsyMSwxMCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
IAogICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorICAgIFNoYXJl
ZC9XZWJNZW1vcnlTYW1wbGVyLmgKKyAgICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKyAg
ICBTaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCisKICAgICBTaGFyZWQvZWZsL0xh
eWVyVHJlZUNvbnRleHRFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50RWZsLmNwcAogICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU3Y2QyMmM5NThhOTg1MTIxOTg5MzVhZmE0ZGMzNGNmYzRhZGFjODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJF
ZmwuY3BwCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIuaCIKKworI2lm
IEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7Cit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordHlwZWRlZiBzdHJ1Y3QgQXBwbGljYXRpb25NZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRv
dGFsUHJvZ3JhbVNpemU7CisgICAgc2l6ZV90IHJlc2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qg
c2hhcmVkU2l6ZTsKKyAgICBzaXplX3QgdGV4dFNpemU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXpl
OworICAgIHNpemVfdCBkYXRhU3RhY2tTaXplOworICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOwor
fSBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzOworCitjb25zdCBpbnQgbWF4QnVmZmVyID0gMTI4Owor
Y29uc3QgaW50IG1heFByb2Nlc3NQYXRoID0gMzU7CisKK2lubGluZSBTdHJpbmcgZ2V0VG9rZW4o
RklMRSogZmlsZSkKK3sKKyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICBjaGFyIGJ1ZmZlclttYXhCdWZmZXJdOworICAgIG1lbXNldChidWZmZXIsIDAsIG1heEJ1
ZmZlcik7CisgICAgZnNjYW5mKGZpbGUsICIlcyIsIGJ1ZmZlcik7CisgICAgcmV0dXJuIFN0cmlu
ZyhidWZmZXIpOworfQorCit2b2lkIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8oV2ViTWVtb3J5U3Rh
dGlzdGljcyYgc3RhdGljcykKK3sKKyAgICBib29sIGZvdW5kS2V5TmFtZSA9IGZhbHNlOworICAg
IEZJTEUqIGZTeXN0ZW1NZW1vcnlTdGF0dXMgPSBmb3BlbigiL3Byb2MvbWVtaW5mbyIsICJyIik7
CisgICAgaWYgKGZTeXN0ZW1NZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgd2hpbGUgKCFmZW9mKGZT
eXN0ZW1NZW1vcnlTdGF0dXMpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyVG9rZW4gPSBnZXRU
b2tlbihmU3lzdGVtTWVtb3J5U3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdHJUb2tlbi5maW5k
KCc6JykgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9IHN0
clRva2VuLmxlZnQoc3RyVG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgICAgICBzdGF0
aWNzLmtleXMuYXBwZW5kKGtleU5hbWUpOworICAgICAgICAgICAgICAgIGZvdW5kS2V5TmFtZSA9
IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkgeworICAgICAgICAg
ICAgICAgIHN0YXRpY3MudmFsdWVzLmFwcGVuZChzdHJUb2tlbi50b0ludCgpKTsKKyAgICAgICAg
ICAgICAgICBmb3VuZEtleU5hbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBmY2xvc2UoZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgfQorfQorCitBcHBsaWNh
dGlvbk1lbW9yeVN0YXRzIHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCkKK3sKKyAgICBBcHBsaWNh
dGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBjaGFyIHByb2Nlc3NQYXRo
W21heFByb2Nlc3NQYXRoXTsKKyAgICBzcHJpbnRmKHByb2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3Rh
dG0iLCBnZXRwaWQoKSk7CisgICAgRklMRSogZk1lbW9yeVN0YXR1cyA9IGZvcGVuKHByb2Nlc3NQ
YXRoLCAiciIpOworICAgIGlmIChmTWVtb3J5U3RhdHVzKSB7CisgICAgICAgIGZzY2FuZihmTWVt
b3J5U3RhdHVzLCAiJWQgJWQgJWQgJWQgJWQgJWQgJWQiLAorICAgICAgICAgICAgICAgICZhcHBs
aWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0
aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0
YXRzLnNoYXJlZFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMudGV4dFNp
emUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMubGlicmFyeVNpemUsCisgICAg
ICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSwKKyAgICAgICAgICAg
ICAgICAmYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKyAgICAgICAgZmNsb3NlKGZN
ZW1vcnlTdGF0dXMpOworICAgIH0KKworICAgIHJldHVybiBhcHBsaWNhdGlvblN0YXRzOworfQor
CitTdHJpbmcgV2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworICAgIFN0
cmluZyBwcm9jZXNzTmFtZTsKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsK
KyAgICBzcHJpbnRmKHByb2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3RhdHVzIiwgZ2V0cGlkKCkpOwor
ICAgIEZJTEUqIGZQcm9jZXNzU3RhdHVzID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAg
aWYgKGZQcm9jZXNzU3RhdHVzKSB7CisgICAgICAgIGdldFRva2VuKGZQcm9jZXNzU3RhdHVzKTsK
KyAgICAgICAgcHJvY2Vzc05hbWUgPSBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7CisgICAgICAg
IGZjbG9zZShmUHJvY2Vzc1N0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIHByb2Nlc3NOYW1l
OworfQorCitXZWJNZW1vcnlTdGF0aXN0aWNzIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktp
dCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHRvdGFsQnl0ZXNJblVzZSA9IDAsIHRvdGFsQnl0ZXND
b21taXR0ZWQgPSAwOworCisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBsaWNhdGlvblN0
YXRzID0gc2FtcGxlQXBwbGljYXRpb25NYWxsb2MoKTsKKworICAgIFdlYk1lbW9yeVN0YXRpc3Rp
Y3Mgd2ViS2l0TWVtb3J5U3RhdHM7CisKKyAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFs
bG9jU3RhdGlzdGljcyA9IFdURjo6ZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKKyAgICBzaXplX3Qg
ZmFzdE1hbGxvY0J5dGVzSW5Vc2UgPSBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5
dGVzIC0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlczsKKyAgICBzaXplX3QgZmFz
dE1hbGxvY0J5dGVzQ29tbWl0dGVkID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1C
eXRlczsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZmFzdE1hbGxvY0J5dGVzSW5Vc2U7CisgICAg
dG90YWxCeXRlc0NvbW1pdHRlZCArPSBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBz
aXplX3QganNjSGVhcEJ5dGVzSW5Vc2UgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRh
KCktPmhlYXAuc2l6ZSgpOworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNDb21taXR0ZWQgPSBKU0RP
TVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuY2FwYWNpdHkoKTsKKyAgICB0b3Rh
bEJ5dGVzSW5Vc2UgKz0ganNjSGVhcEJ5dGVzSW5Vc2U7CisgICAgdG90YWxCeXRlc0NvbW1pdHRl
ZCArPSBqc2NIZWFwQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBHbG9iYWxNZW1vcnlTdGF0aXN0aWNz
IGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOworICAgIHRvdGFs
Qnl0ZXNJblVzZSArPSBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5
U3RhdHMuSklUQnl0ZXM7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBnbG9iYWxNZW1vcnlT
dGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7CisKKyAgICBkb3Vi
bGUgbm93ID0gY3VycmVudFRpbWUoKTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBw
ZW5kKFN0cmluZygiVGltZXN0YW1wIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQobm93KTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygi
VG90YWwgUHJvZ3JhbSBTaXplIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBl
bmQoYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlT
dGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlJTUyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52
YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlNoYXJlZCIpKTsKKyAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSk7Cisg
ICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUZXh0IikpOworICAgIHdl
YktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6ZSk7
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJMaWJyYXJ5IikpOwor
ICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy5saWJy
YXJ5U2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJEYXRh
L1N0YWNrIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRp
b25TdGF0cy5kYXRhU3RhY2tTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChTdHJpbmcoIkRpcnR5IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQo
YXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRz
LmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwgTWVtb3J5IEluIFVzZSIpKTsKKyAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKHRvdGFsQnl0ZXNJblVzZSk7CisgICAgd2ViS2l0TWVt
b3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOwor
ICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzSW5Vc2Up
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBI
ZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVh
cEJ5dGVzSW5Vc2UpOworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5n
KCJUb3RhbCBDb21taXR0ZWQgTWVtb3J5IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVl
cy5hcHBlbmQodG90YWxCeXRlc0NvbW1pdHRlZCk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5
cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1l
bW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKKyAgICB3
ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSGVhcCBCeXRl
cyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGpzY0hlYXBCeXRlc0Nv
bW1pdHRlZCk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkph
dmFTY3JpcHQgU3RhY2sgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFw
cGVuZChnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSklUIEJ5dGVzIikpOworICAgIHdlYktp
dE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOwor
CisgICAgc2FtcGxlU3lzdGVtTWVtb3J5SW5mbyh3ZWJLaXRNZW1vcnlTdGF0cyk7CisKKyAgICBy
ZXR1cm4gd2ViS2l0TWVtb3J5U3RhdHM7Cit9CisKK3ZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c2Vu
ZE1lbW9yeVByZXNzdXJlRXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAKaW5kZXggZDY0NTM3NTdlYjJjMjkxN2Q2ZTM3ZWVmMTJjY2EyMzNkOGVmNjliYy4u
YWI1NWQ1MTkwMzZlNjhiYzc5NjU4MGE4NTg2ODY0NGMxNjhmZDkwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgorI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUg
ImV3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudF9wcml2YXRlLmgiCkBAIC0yMzEsMyArMjMyLDE2
IEBAIHZvaWQgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0KEV3a19D
b250ZXh0KiBld2tDb250ZXh0LCBFd2tfVmliCiAgICAgZXdrQ29udGV4dC0+dmlicmF0aW9uUHJv
dmlkZXItPnNldFZpYnJhdGlvbkNsaWVudENhbGxiYWNrcyh2aWJyYXRlLCBjYW5jZWwsIGRhdGEp
OwogI2VuZGlmCiB9CisKK3ZvaWQgZXdrX2NvbnRleHRfbWVtb3J5X3NhbXBsZXJfc3RhcnQoRXdr
X0NvbnRleHQqIGV3a0NvbnRleHQsIGRvdWJsZSB0aW1lckludGVydmFsKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGV3a0NvbnRleHQpOworICAgIFdLUmV0YWluUHRyPFdLRG91
YmxlUmVmPiBpbnRlcnZhbChBZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZSh0aW1lckludGVydmFsKSk7
CisgICAgV0tDb250ZXh0U3RhcnRNZW1vcnlTYW1wbGVyKGV3a19jb250ZXh0X1dLQ29udGV4dF9n
ZXQoZXdrQ29udGV4dCksIGludGVydmFsLmdldCgpKTsKK30KKwordm9pZCBld2tfY29udGV4dF9t
ZW1vcnlfc2FtcGxlcl9zdG9wKEV3a19Db250ZXh0KiBld2tDb250ZXh0KQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGV3a0NvbnRleHQpOworICAgIFdLQ29udGV4dFN0b3BNZW1v
cnlTYW1wbGVyKGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoZXdrQ29udGV4dCkpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXggNWU0
ZDM0MjYyZWYzOGUyMzZlMjUyMmIwNDE0ZGUzMGViMjIwNDlmMS4uN2UyZmQzZTExNDAzMDMwOWJh
NzI1Nzc4YzlhY2NmYjNjODNmNDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5oCkBAIC0xMzUsNiArMTM1LDI0IEBAIEVBUEkgRWluYV9Cb29s
IGV3a19jb250ZXh0X3VyaV9zY2hlbWVfcmVnaXN0ZXIoRXdrX0NvbnRleHQgKmNvbnRleHQsIGNv
bnN0IGNoYXIKICAqLwogRUFQSSB2b2lkIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2Fs
bGJhY2tzX3NldChFd2tfQ29udGV4dCAqY29udGV4dCwgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmli
cmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0Ni
IGNhbmNlbCwgdm9pZCAqZGF0YSk7CiAKKy8qKgorKiBTdGFydCBtZW1vcnkgc2FtcGxlci4KKyoK
KyogVGhpcyBmdW5jdGlvbiBpcyBmb3IgbG9nZ2luZyB0aGUgbWVtb3J5IHVzYWdlcyBvZiBib3Ro
IFdlYlByb2Nlc3MgYW5kIFVJUHJvY2Vzcy4KKyogTG9nIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlu
IC90bXAgcGF0aC4KKyoKKyogQHBhcmFtIGNvbnRleHQgY29udGV4dCBvYmplY3QKKyogQHBhcmFt
IGludGVydmFsIHRpbWUgZ2FwIHRvIGZpcmUgdGhlIHRpbWVyCisqLworRUFQSSB2b2lkIGV3a19j
b250ZXh0X21lbW9yeV9zYW1wbGVyX3N0YXJ0KEV3a19Db250ZXh0KiBjb250ZXh0LCBkb3VibGUg
dGltZXJfaW50ZXJ2YWwpOworCisvKioKKyogU3RvcCBtZW1vcnkgc2FtcGxlci4KKyoKKyogQHBh
cmFtIGNvbnRleHQgY29udGV4dCBvYmplY3QKKyovCitFQVBJIHZvaWQgZXdrX2NvbnRleHRfbWVt
b3J5X3NhbXBsZXJfc3RvcChFd2tfQ29udGV4dCogY29udGV4dCk7CisKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDNhM2Q5ODA0ODFjZmY1YzU4
NWZmMGYwYWUwYTBjZmQ2NTg5YjI0NjQuLjQ3OWNiOWYyMGQ2Mjg4N2NhMmZmMWZhODRkNWNlOGMz
ZTA4NWY2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC01Miw2ICs1Miw4IEBAIEFERF9ERUZJ
TklUSU9OUygtRFdURl9VU0VfSUNVX1VOSUNPREU9MSkKIFNFVChXVEZfVVNFX0NBSVJPIDEpCiBB
RERfREVGSU5JVElPTlMoLURXVEZfVVNFX0NBSVJPPTEpCiAKK1NFVChFTkFCTEVfTUVNT1JZX1NB
TVBMRVIgT04pCisKIFNFVChKU0NfRVhFQ1VUQUJMRV9OQU1FIGpzYykKIAogU0VUKFdURl9MSUJS
QVJZX05BTUUgd3RmX2VmbCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCAwNWJiMzNiNWZkZWNlNDcxMjBhNWUwNTdhNjY3N2Y5MjBlMDIwZDQ5Li5jY2UwZGFmMTcwOTYz
OTE2ODc5NDFlYjNkZTRlMWM1NjAyYmI1ZmJlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMTYgIEp1bmdKaWsgTGVlICA8anVu
Z2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bQ01BS0VdIEFkZCBXZWJNZW1v
cnlTYW1wbGVyIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2V0IFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSBvbi4KKworICAgICAgICAqIFNv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgorCiAyMDEyLTA4LTE2ICBNYXJqYSBIw7ZsdHTD
pCAgPG1hcmphQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGb3JtQ29udHJvbGxlciwgV2ViSGlz
dG9yeUl0ZW06IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUgbmFtZXMgZnJvbSBkb2N1bWVu
dCBzdGF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159015</attachid>
            <date>2012-08-17 00:04:08 -0700</date>
            <delta_ts>2012-08-24 01:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120817160332.patch</filename>
            <type>text/plain</type>
            <size>18299</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
Yzk1NzIzMDIxYzRmNmRlZDc1MjcwMGI3MjgzNTQyYjg1ZDM4OWQyLi43NjUyMGI0ZDgwMTY0Yjdj
NTU1N2Q2MTUyNmMyMjI2NGZkMmFmNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0xNiAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtDTUFLRV0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJNZW1v
cnlTYW1wbGVyIGNvbGxlY3RzIEphdmFzY3JpcHQgc3RhY2sgYW5kIEpJVCBtZW1vcnkgdXNhZ2Ug
aW4gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorCiAyMDEyLTA4LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgU3RydWN0dXJlIGNoZWNrIGhvaXN0aW5nIHNob3VsZCBiZSBsZXNzIGV4cGVuc2l2ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCAwNjIxYjFjYTA2NDdlZjk5YTk1ZDk1MmNhNzMwMjYxYThjZjYxY2IyLi5iNGUzYTZmZDlhMDcy
YjFlYmE1NTI1MTUwMzkwMmZkMDBkMmUxYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4
LTE2ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9uLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTItMDgtMTYgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTCBQYXJzZXIgc2hvdWxkIHByb2R1
Y2UgOGJpdCBzdWJzdHJpbmdzIGZvciBpbmxpbmUgc3R5bGUgYW5kIHNjcmlwdCBlbGVtZW50cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDc2ODcyN2E1ODdkOWQ2MzUxYzlkNjcxZDMxZmE5OWZlYTBkOWE5YjEuLjgx
ZDJmNTUzMDE1ZjA3ZTgxNWFmNjEwNWU0ZGRhODA4MmJmNDRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxMi0wOC0xNiAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViTWVtb3J5
U2FtcGxlciBmZWF0dXJlIHRvIEVGTCBwb3J0LiBXZWJNZW1vcnlTYW1wbGVyIHJlY29yZHMgbWVt
b3J5IHVzYWdlIG9mCisgICAgICAgIFdlYlByb2Nlc3MgYW5kIFVJIFByb2Nlc3MgYW5kIGFsc28g
aXQgcmVjb3JkcyBhcHBsaWNhdGlvbiBtZW1vcnkgc3RhdHVzIGluIHJlYWwgdGltZS4KKyAgICAg
ICAgSW5jbHVkZWQgaXRlbXMgb24gdGhlIHJlc3VsdCBhcmUgSklULCBKUyBoZWFwLCBmYXN0bWFs
bG9jIGJ5dGVzIGFuZAorICAgICAgICBhcHBsaWNhdGlvbiBtZW1vcnkgaW5mbyBmcm9tIC9wcm9j
L3Byb2Nlc3NfaWQvc3RhdG0uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBTaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChBcHBsaWNhdGlvbk1lbW9yeVN0YXRzKToKKyAgICAgICAgKFdl
YktpdDo6Z2V0VG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpzYW1wbGVTeXN0ZW1NZW1vcnlJbmZv
KToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlQXBwbGljYXRpb25NYWxsb2MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpwcm9jZXNzTmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
bW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChld2tfY29udGV4dF9tZW1vcnlf
c2FtcGxlcl9zdGFydCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW1vcnlfc2FtcGxlcl9zdG9w
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorCiAyMDEyLTA4
LTE2ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBSZW1vdmUgYW4gdW51c2VkIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNh
NGU1NjY4ZS4uYjY4OWZhNThmZGMwZTRiOTZhMzBjNTc1ZGJjODAyMGVlYzhmMjAzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw2ICsxLDcgQEAKIExJU1Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ckZpeGVkVk1Qb29sLmNwcAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorICAgIHJ1
bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKICkKIAogTElTVChBUFBFTkQgSmF2YVNjcmlwdENv
cmVfTElCUkFSSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAyZjQ5YmVlODY1ODk5ZjBmYzQ1YWIyNzUwZjQ0
OGRkOGQ2ODcxMTU0Li40MzY3ZWM1OTVhZTdhYTE1YjU4ZTU2MzZkY2IxZTY3MzhiNDU5ZTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTExNDksNCArMTE0OSw4IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oRUZMKQorI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIgMQorI2VuZGlmCisK
ICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCAxZjVmZmE5MzFmMjc3M2YyMTE5ZWU2OWMyNTc1NmEzNjY3NjIyYmRiLi5mZGRkOTAzNWExZmVj
NWYxYjg1M2U0ZjdhNzJjODM5YTRiYjM1Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMjEsNiArMjEsOSBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJl
ZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorICAgIFNoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmgKKyAgICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKyAgICBTaGFyZWQvZWZs
L1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9MYXllclRyZWVDb250ZXh0
RWZsLmNwcAogICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5jcHAKICAg
ICBTaGFyZWQvZWZsL05hdGl2ZVdlYldoZWVsRXZlbnRFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTc4
NmU0YzQ0NjMxNTA0NTEzNjZjYzYxZjZkMDcwOGNmNmQxYTlmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcApAQCAtMCww
ICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FN
UExFUikKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cu
aD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1c2lu
ZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IEFwcGxpY2F0
aW9uTWVtb3J5U3RhdHMgeworICAgIHNpemVfdCB0b3RhbFByb2dyYW1TaXplOworICAgIHNpemVf
dCByZXNpZGVudFNldFNpemU7CisgICAgc2l6ZV90IHNoYXJlZFNpemU7CisgICAgc2l6ZV90IHRl
eHRTaXplOworICAgIHNpemVfdCBsaWJyYXJ5U2l6ZTsKKyAgICBzaXplX3QgZGF0YVN0YWNrU2l6
ZTsKKyAgICBzaXplX3QgZGlydHlQYWdlU2l6ZTsKK307CisKK2NvbnN0IGludCBtYXhCdWZmZXIg
PSAxMjg7Citjb25zdCBpbnQgbWF4UHJvY2Vzc1BhdGggPSAzNTsKKworaW5saW5lIFN0cmluZyBn
ZXRUb2tlbihGSUxFKiBmaWxlKQoreworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworCisgICAgY2hhciBidWZmZXJbbWF4QnVmZmVyXTsKKyAgICBtZW1zZXQoYnVmZmVy
LCAwLCBtYXhCdWZmZXIpOworICAgIGZzY2FuZihmaWxlLCAiJXMiLCBidWZmZXIpOworCisgICAg
cmV0dXJuIFN0cmluZyhidWZmZXIpOworfQorCit2b2lkIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8o
V2ViTWVtb3J5U3RhdGlzdGljcyYgc3RhdGljcykKK3sKKyAgICBib29sIGZvdW5kS2V5TmFtZSA9
IGZhbHNlOworICAgIEZJTEUqIGZTeXN0ZW1NZW1vcnlTdGF0dXMgPSBmb3BlbigiL3Byb2MvbWVt
aW5mbyIsICJyIik7CisgICAgaWYgKGZTeXN0ZW1NZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgd2hp
bGUgKCFmZW9mKGZTeXN0ZW1NZW1vcnlTdGF0dXMpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3Ry
VG9rZW4gPSBnZXRUb2tlbihmU3lzdGVtTWVtb3J5U3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChz
dHJUb2tlbi5maW5kKCc6JykgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcg
a2V5TmFtZSA9IHN0clRva2VuLmxlZnQoc3RyVG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAg
ICAgICAgICBzdGF0aWNzLmtleXMuYXBwZW5kKGtleU5hbWUpOworICAgICAgICAgICAgICAgIGZv
dW5kS2V5TmFtZSA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkg
eworICAgICAgICAgICAgICAgIHN0YXRpY3MudmFsdWVzLmFwcGVuZChzdHJUb2tlbi50b0ludCgp
KTsKKyAgICAgICAgICAgICAgICBmb3VuZEtleU5hbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBmY2xvc2UoZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgfQor
fQorCitBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCkKK3sK
KyAgICBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBjaGFy
IHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzcHJpbnRmKHByb2Nlc3NQYXRoLCAi
L3Byb2MvJWQvc3RhdG0iLCBnZXRwaWQoKSk7CisgICAgRklMRSogZk1lbW9yeVN0YXR1cyA9IGZv
cGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAgIGlmIChmTWVtb3J5U3RhdHVzKSB7CisgICAgICAg
IGZzY2FuZihmTWVtb3J5U3RhdHVzLCAiJWQgJWQgJWQgJWQgJWQgJWQgJWQiLAorICAgICAgICAg
ICAgICAgICZhcHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUsCisgICAgICAgICAgICAg
ICAgJmFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplLAorICAgICAgICAgICAgICAgICZh
cHBsaWNhdGlvblN0YXRzLnNoYXJlZFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9u
U3RhdHMudGV4dFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMubGlicmFy
eVNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSwK
KyAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKyAgICAg
ICAgZmNsb3NlKGZNZW1vcnlTdGF0dXMpOworICAgIH0KKworICAgIHJldHVybiBhcHBsaWNhdGlv
blN0YXRzOworfQorCitTdHJpbmcgV2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUoKSBjb25z
dAoreworICAgIFN0cmluZyBwcm9jZXNzTmFtZTsKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFBy
b2Nlc3NQYXRoXTsKKyAgICBzcHJpbnRmKHByb2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3RhdHVzIiwg
Z2V0cGlkKCkpOworICAgIEZJTEUqIGZQcm9jZXNzU3RhdHVzID0gZm9wZW4ocHJvY2Vzc1BhdGgs
ICJyIik7CisgICAgaWYgKGZQcm9jZXNzU3RhdHVzKSB7CisgICAgICAgIGdldFRva2VuKGZQcm9j
ZXNzU3RhdHVzKTsKKyAgICAgICAgcHJvY2Vzc05hbWUgPSBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1
cyk7CisgICAgICAgIGZjbG9zZShmUHJvY2Vzc1N0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJu
IHByb2Nlc3NOYW1lOworfQorCitXZWJNZW1vcnlTdGF0aXN0aWNzIFdlYk1lbW9yeVNhbXBsZXI6
OnNhbXBsZVdlYktpdCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHRvdGFsQnl0ZXNJblVzZSA9IDAs
IHRvdGFsQnl0ZXNDb21taXR0ZWQgPSAwOworCisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBh
cHBsaWNhdGlvblN0YXRzID0gc2FtcGxlQXBwbGljYXRpb25NYWxsb2MoKTsKKworICAgIFdlYk1l
bW9yeVN0YXRpc3RpY3Mgd2ViS2l0TWVtb3J5U3RhdHM7CisKKyAgICBGYXN0TWFsbG9jU3RhdGlz
dGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcyA9IFdURjo6ZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsK
KyAgICBzaXplX3QgZmFzdE1hbGxvY0J5dGVzSW5Vc2UgPSBmYXN0TWFsbG9jU3RhdGlzdGljcy5j
b21taXR0ZWRWTUJ5dGVzIC0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlczsKKyAg
ICBzaXplX3QgZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkID0gZmFzdE1hbGxvY1N0YXRpc3RpY3Mu
Y29tbWl0dGVkVk1CeXRlczsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZmFzdE1hbGxvY0J5dGVz
SW5Vc2U7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBmYXN0TWFsbG9jQnl0ZXNDb21taXR0
ZWQ7CisKKyAgICBzaXplX3QganNjSGVhcEJ5dGVzSW5Vc2UgPSBKU0RPTVdpbmRvdzo6Y29tbW9u
SlNHbG9iYWxEYXRhKCktPmhlYXAuc2l6ZSgpOworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNDb21t
aXR0ZWQgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuY2FwYWNpdHko
KTsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0ganNjSGVhcEJ5dGVzSW5Vc2U7CisgICAgdG90YWxC
eXRlc0NvbW1pdHRlZCArPSBqc2NIZWFwQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBHbG9iYWxNZW1v
cnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygp
OworICAgIHRvdGFsQnl0ZXNJblVzZSArPSBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsg
Z2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBn
bG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7
CisKKyAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKKworICAgIHdlYktpdE1lbW9yeVN0
YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVGltZXN0YW1wIikpOworICAgIHdlYktpdE1lbW9yeVN0
YXRzLnZhbHVlcy5hcHBlbmQobm93KTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBw
ZW5kKFN0cmluZygiVG90YWwgUHJvZ3JhbSBTaXplIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRz
LnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsKKyAgICB3
ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlJTUyIpKTsKKyAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXpl
KTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlNoYXJlZCIpKTsK
KyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMuc2hh
cmVkU2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUZXh0
IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0
cy50ZXh0U2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJM
aWJyYXJ5IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRp
b25TdGF0cy5saWJyYXJ5U2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQo
U3RyaW5nKCJEYXRhL1N0YWNrIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBl
bmQoYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRpcnR5IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZh
bHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworICAgIHdlYktp
dE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwgTWVtb3J5IEluIFVzZSIpKTsK
KyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKHRvdGFsQnl0ZXNJblVzZSk7Cisg
ICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25l
IEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxv
Y0J5dGVzSW5Vc2UpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygi
SmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQoanNjSGVhcEJ5dGVzSW5Vc2UpOworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoU3RyaW5nKCJUb3RhbCBDb21taXR0ZWQgTWVtb3J5IikpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQodG90YWxCeXRlc0NvbW1pdHRlZCk7CisgICAgd2ViS2l0TWVt
b3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOwor
ICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzQ29tbWl0
dGVkKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3Jp
cHQgSGVhcCBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGpz
Y0hlYXBCeXRlc0NvbW1pdHRlZCk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChTdHJpbmcoIkphdmFTY3JpcHQgU3RhY2sgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMudmFsdWVzLmFwcGVuZChnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSklUIEJ5dGVzIikp
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMu
SklUQnl0ZXMpOworCisgICAgc2FtcGxlU3lzdGVtTWVtb3J5SW5mbyh3ZWJLaXRNZW1vcnlTdGF0
cyk7CisKKyAgICByZXR1cm4gd2ViS2l0TWVtb3J5U3RhdHM7Cit9CisKK3ZvaWQgV2ViTWVtb3J5
U2FtcGxlcjo6c2VuZE1lbW9yeVByZXNzdXJlRXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggZDY0NTM3NTdlYjJjMjkxN2Q2ZTM3ZWVmMTJjY2Ey
MzNkOGVmNjliYy4uM2UxM2E1MDE1YjY3YWQ5ODBjMTE0ZGU1OTRjYWJjN2E1YjVhOTVlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgorI2luY2x1ZGUgIldL
TnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5o
IgogI2luY2x1ZGUgImV3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudF9wcml2YXRlLmgiCkBAIC0y
MzEsMyArMjMyLDE4IEBAIHZvaWQgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFj
a3Nfc2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfVmliCiAgICAgZXdrQ29udGV4dC0+
dmlicmF0aW9uUHJvdmlkZXItPnNldFZpYnJhdGlvbkNsaWVudENhbGxiYWNrcyh2aWJyYXRlLCBj
YW5jZWwsIGRhdGEpOwogI2VuZGlmCiB9CisKK3ZvaWQgZXdrX2NvbnRleHRfbWVtb3J5X3NhbXBs
ZXJfc3RhcnQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIGRvdWJsZSB0aW1lckludGVydmFsKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a0NvbnRleHQpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tEb3VibGVSZWY+IGludGVydmFsKEFkb3B0V0ssIFdLRG91YmxlQ3JlYXRlKHRp
bWVySW50ZXJ2YWwpKTsKKyAgICBXS0NvbnRleHRTdGFydE1lbW9yeVNhbXBsZXIoZXdrX2NvbnRl
eHRfV0tDb250ZXh0X2dldChld2tDb250ZXh0KSwgaW50ZXJ2YWwuZ2V0KCkpOworfQorCit2b2lk
IGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0b3AoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQp
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrQ29udGV4dCk7CisKKyAgICBX
S0NvbnRleHRTdG9wTWVtb3J5U2FtcGxlcihld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGV3a0Nv
bnRleHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oCmluZGV4IDVlNGQzNDI2MmVmMzhlMjM2ZTI1MjJiMDQxNGRlMzBlYjIyMDQ5ZjEuLjA5
ZTVlNjg3MmViZjBiNmU1YmYzZWNlNjY0ZDhhMGRmMzAxNDI5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMTM1LDYgKzEzNSwyNCBA
QCBFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF91cmlfc2NoZW1lX3JlZ2lzdGVyKEV3a19Db250
ZXh0ICpjb250ZXh0LCBjb25zdCBjaGFyCiAgKi8KIEVBUEkgdm9pZCBld2tfY29udGV4dF92aWJy
YXRpb25fY2xpZW50X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQgKmNvbnRleHQsIEV3a19WaWJy
YXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IgdmlicmF0ZSwgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmli
cmF0aW9uX0NhbmNlbF9DYiBjYW5jZWwsIHZvaWQgKmRhdGEpOwogCisvKioKKyAqIFN0YXJ0IG1l
bW9yeSBzYW1wbGVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgZm9yIGxvZ2dpbmcgdGhlIG1l
bW9yeSB1c2FnZXMgb2YgYm90aCBXZWJQcm9jZXNzIGFuZCBVSVByb2Nlc3MuCisgKiBMb2cgZmls
ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gL3RtcCBwYXRoLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IGNv
bnRleHQgb2JqZWN0CisgKiBAcGFyYW0gaW50ZXJ2YWwgdGltZSBnYXAgdG8gZmlyZSB0aGUgdGlt
ZXIKKyAqLworRUFQSSB2b2lkIGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0YXJ0KEV3a19D
b250ZXh0ICpjb250ZXh0LCBkb3VibGUgdGltZXJfaW50ZXJ2YWwpOworCisvKioKKyAqIFN0b3Ag
bWVtb3J5IHNhbXBsZXIuCisgKgorICogQHBhcmFtIGNvbnRleHQgY29udGV4dCBvYmplY3QKKyAq
LworRUFQSSB2b2lkIGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0b3AoRXdrX0NvbnRleHQg
KmNvbnRleHQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQppbmRleCAzYTNkOTgwNDgxY2ZmNWM1ODVmZjBmMGFlMGEwY2ZkNjU4OWIyNDY0Li40NTMw
NDBjZjMwNWYwNDcwMDM2N2JkMzMxM2Y2ODc3MjQ1ZTJhNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZQpAQCAtODQsNiArODQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJTERFUiBPTikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MSU5LX1BSRUZFVENIIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX0NBUFRVUkUgT04pCitXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktfSU5GTyBPTikKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNTc2NjQz
NWZiNzdjMmRjMDcwODQyMWNlODM4ZWIxYWExM2NhYWJjLi45ZGNiMTZmMGEzZWRkYjk0ZGI1NjUx
ZThjMDBkYWM5Yzg3OWY4N2QwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMTYgIEp1bmdKaWsgTGVlICA8
anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gTGF1bmNoIE1pbmktQnJv
d3NlciB3aXRoIG1lbW9yeSBzYW1wbGVyIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnQgTWluaS1Ccm93c2VyIHdpdGggbWVtb3J5IHNh
bXBsZXIgb3B0aW9uKC0tbWVtb3J5LXNhbXBsZXIpLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
ZWZsL21haW4uYzoKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA4LTE2ICBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgd2FybmluZyBm
aXgsIHN5cy5hcmd2IGlzIGEgcHl0aG9uIGNvbnN0cnVjdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4
IDAyNjMwZjFhODI3MDNkNmE5YjNlMmU1OGUzNDIwNTk2ZWRlODY2NWEuLjZlZDczMzcxZDFjZTUx
ZTc3YWYxNjQ5OWNhMWI0MmJkNmQ0NGVjNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtMjMsNiAr
MjMsOCBAQAogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAKKyNpbmNsdWRl
IDxzdGRsaWIuaD4KKwogc3RhdGljIGNvbnN0IGludCBERUZBVUxUX1dJRFRIID0gODAwOwogc3Rh
dGljIGNvbnN0IGludCBERUZBVUxUX0hFSUdIVCA9IDYwMDsKIHN0YXRpYyBjb25zdCBjaGFyIERF
RkFVTFRfVVJMW10gPSAiaHR0cDovL3d3dy5nb29nbGUuY29tLyI7CkBAIC01Niw2ICs1OCw4IEBA
IHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0aW9ucyA9IHsKICAgICAgICAgRUNPUkVfR0VU
T1BUX0NBTExCQUNLX05PQVJHUwogICAgICAgICAgICAgKCdFJywgImxpc3QtZW5naW5lcyIsICJs
aXN0IGVjb3JlLWV2YXMgZW5naW5lcy4iLAogICAgICAgICAgICAgIGVjb3JlX2dldG9wdF9jYWxs
YmFja19lY29yZV9ldmFzX2xpc3RfZW5naW5lcywgTlVMTCksCisgICAgICAgIEVDT1JFX0dFVE9Q
VF9TVE9SRV9UUlVFCisgICAgICAgICAgICAoJ00nLCAibWVtb3J5LXNhbXBsZXIiLCAic3RhcnQg
TWluaS1Ccm93c2VyIHdpdGggbWVtb3J5IHNhbXBsZXIgb3B0aW9uLiIpLAogICAgICAgICBFQ09S
RV9HRVRPUFRfVkVSU0lPTgogICAgICAgICAgICAgKCdWJywgInZlcnNpb24iKSwKICAgICAgICAg
RUNPUkVfR0VUT1BUX0NPUFlSSUdIVApAQCAtMjQzLDEwICsyNDcsMTIgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpbnQgYXJncyA9IDE7CiAgICAgY2hhciAqZW5naW5l
ID0gTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyIHF1aXRPcHRpb24gPSAwOworICAgIHVuc2lnbmVk
IGNoYXIgbWVtb3J5U2FtcGxlck9wdGlvbiA9IDA7CiAKICAgICBFY29yZV9HZXRvcHRfVmFsdWUg
dmFsdWVzW10gPSB7CiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIoZW5naW5lKSwKICAg
ICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0wocXVpdE9wdGlvbiksCisgICAgICAgIEVDT1JF
X0dFVE9QVF9WQUxVRV9CT09MKG1lbW9yeVNhbXBsZXJPcHRpb24pLAogICAgICAgICBFQ09SRV9H
RVRPUFRfVkFMVUVfQk9PTChxdWl0T3B0aW9uKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVF
X0JPT0wocXVpdE9wdGlvbiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKHF1aXRP
cHRpb24pLApAQCAtMjc0LDYgKzI4MCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCiAgICAgaWYgKCFicm93c2VyKQogICAgICAgICByZXR1cm4gcXVpdChFSU5BX0ZBTFNFLCAi
RVJST1I6IGNvdWxkIG5vdCBjcmVhdGUgYnJvd3Nlci5cbiIpOwogCisgICAgaWYgKG1lbW9yeVNh
bXBsZXJPcHRpb24pCisgICAgICAgIGV3a19jb250ZXh0X21lbW9yeV9zYW1wbGVyX3N0YXJ0KGV3
a19jb250ZXh0X2RlZmF1bHRfZ2V0KCksIDApOworCiAgICAgRWNvcmVfRXZlbnRfSGFuZGxlciAq
aGFuZGxlID0gZWNvcmVfZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfRVZFTlRfU0lHTkFMX0VYSVQs
IG1haW5fc2lnbmFsX2V4aXQsIDApOwogCiAgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7CmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjg0ZTBkYWYyNDc0MDc1YTI0
MjY2NzExOGI5ZWNkNmY2MDdlNjZhMC4uOTk4ZjhlZWI5N2Q0ZTk3MjNhZjUyNjkyMGZkZjQxOWFk
YWQ3N2VlYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA4LTE2ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtFRkxdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBvcHRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBXZWJNZW1v
cnlTYW1wbGVyIGZlYXR1cmUgb24uCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0Vm
bC5jbWFrZToKKwogMjAxMi0wOC0xNiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21l
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHNwZWN1bGF0aXZlIDMyIGJpdHMgYnVpbGQgZml4
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160361</attachid>
            <date>2012-08-24 01:56:33 -0700</date>
            <delta_ts>2012-08-24 06:43:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120824175629.patch</filename>
            <type>text/plain</type>
            <size>14507</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODdjYThlY2ZmNzhlMjliYjZjZDU2MmE5ZjE2M2E5M2UwNzFiOGVjLi4yYzQ3NjcxZWQyYzRkOWFi
M2ViMzA0YWYxZTUzNWQxNzRkNWJmOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yMyAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtDTUFLRV0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJNZW1v
cnlTYW1wbGVyIGNvbGxlY3RzIEphdmFzY3JpcHQgc3RhY2sgYW5kIEpJVCBtZW1vcnkgdXNhZ2Ug
aW4gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorCiAyMDEyLTA4LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQXJyYXkgYWNjZXNzZXMgc2hvdWxkIHJlbWVtYmVyIHdoYXQga2luZCBvZiBhcnJheSB0aGV5
IGFyZSBwcmVkaWN0ZWQgdG8gYWNjZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU2Yzc2OTM0ZTFjNmI4ZDAwN2VkMDNlZDFi
ZmVlYTg4MmQ4MjdlYWMuLmUzY2M2NWViYTA2ZGQ1NjlhOTQ4NDRjMjk4MGY2ZWZlNGNjMzEzYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMjMgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5s
ZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0
aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEy
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFi
bGUgV2ViTWVtb3J5U2FtcGxlciBvcHRpb24uCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoK
KwogMjAxMi0wOC0yMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgc2hvdWxkIGJlIG9wdC1pbiwgbm90IG9wdC1v
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA1NWZlZjU5ZGE2ZDBlMWJmMzY4NTNlZDJiMDQ2ODMzNTVhNmUwM2Iy
Li41NWU3YWNiNzcyY2IzNDMyZTg0MDE2YjhkYTk2YzI2ODc3MDM2NjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTItMDgtMjMgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYk1l
bW9yeVNhbXBsZXIgZmVhdHVyZSB0byBFRkwgcG9ydC4gV2ViTWVtb3J5U2FtcGxlciByZWNvcmRz
IG1lbW9yeSB1c2FnZSBvZgorICAgICAgICBXZWJQcm9jZXNzIGFuZCBVSSBQcm9jZXNzIGFuZCBh
bHNvIGl0IHJlY29yZHMgYXBwbGljYXRpb24gbWVtb3J5IHN0YXR1cyBpbiByZWFsIHRpbWUuCisg
ICAgICAgIEluY2x1ZGVkIGl0ZW1zIG9uIHRoZSByZXN1bHQgYXJlIEpJVCwgSlMgaGVhcCwgZmFz
dG1hbGxvYyBieXRlcyBhbmQKKyAgICAgICAgYXBwbGljYXRpb24gbWVtb3J5IGluZm8gZnJvbSAv
cHJvYy9wcm9jZXNzX2lkL3N0YXRtLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6Cisg
ICAgICAgICogU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoQXBwbGljYXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAg
IChXZWJLaXQ6OmdldFRva2VuKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlU3lzdGVtTWVtb3J5
SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OnNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZW1vcnlTYW1wbGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfc21hcnRfYWRk
KToKKwogMjAxMi0wOC0yMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292
QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXSBSZWZhY3RvcmluZzogV2ViQmFja0ZvcndhcmRM
aXN0IGdldHRlcnMgc2hvdWxkIGJlIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggNDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1NjY4ZS4u
YjY4OWZhNThmZGMwZTRiOTZhMzBjNTc1ZGJjODAyMGVlYzhmMjAzMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw2ICsxLDcgQEAKIExJU1QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Q
b29sLmNwcAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorICAgIHJ1bnRpbWUvTWVt
b3J5U3RhdGlzdGljcy5jcHAKICkKIAogTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFS
SUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAppbmRleCBkMTM4M2RmMjkzMmFmZDk5NGFmODExNDgwNGI4ZTU5Y2JlNDg0
ZDMxLi41NmNjMDI2MTcwYTIxOWJkM2QxNTE4ZGU4ZmUzYWU4MmFhMWYxZGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKQEAgLTExNjAsNCArMTE2MCw4IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
RUZMKQorI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIgMQorI2VuZGlmCisKICNlbmRpZiAv
KiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBkNGIwOGY4
YmUwMDNmODRlZjIxYTBhNDRjODEyNjViYTJkNmM4ZWE2Li5mNTZjNmI1ZDUwNDYwYzg3NGY3MDg1
OTI3MjgxMzFkMDgzNzc2OWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjEsNiAr
MjEsOSBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9jYWlyby9T
aGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorICAgIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgK
KyAgICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKyAgICBTaGFyZWQvZWZsL1dlYk1lbW9y
eVNhbXBsZXJFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9MYXllclRyZWVDb250ZXh0RWZsLmNwcAog
ICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5jcHAKICAgICBTaGFyZWQv
ZWZsL05hdGl2ZVdlYldoZWVsRXZlbnRFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTc4NmU0YzQ0NjMx
NTA0NTEzNjZjYzYxZjZkMDcwOGNmNmQxYTlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcApAQCAtMCwwICsxLDIwMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIldlYk1lbW9yeVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKwor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVt
b3J5U3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNs
dWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1c2luZyBuYW1lc3Bh
Y2UgV1RGOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IEFwcGxpY2F0aW9uTWVtb3J5
U3RhdHMgeworICAgIHNpemVfdCB0b3RhbFByb2dyYW1TaXplOworICAgIHNpemVfdCByZXNpZGVu
dFNldFNpemU7CisgICAgc2l6ZV90IHNoYXJlZFNpemU7CisgICAgc2l6ZV90IHRleHRTaXplOwor
ICAgIHNpemVfdCBsaWJyYXJ5U2l6ZTsKKyAgICBzaXplX3QgZGF0YVN0YWNrU2l6ZTsKKyAgICBz
aXplX3QgZGlydHlQYWdlU2l6ZTsKK307CisKK2NvbnN0IGludCBtYXhCdWZmZXIgPSAxMjg7Citj
b25zdCBpbnQgbWF4UHJvY2Vzc1BhdGggPSAzNTsKKworaW5saW5lIFN0cmluZyBnZXRUb2tlbihG
SUxFKiBmaWxlKQoreworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgY2hhciBidWZmZXJbbWF4QnVmZmVyXTsKKyAgICBtZW1zZXQoYnVmZmVyLCAwLCBtYXhC
dWZmZXIpOworICAgIGZzY2FuZihmaWxlLCAiJXMiLCBidWZmZXIpOworCisgICAgcmV0dXJuIFN0
cmluZyhidWZmZXIpOworfQorCit2b2lkIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8oV2ViTWVtb3J5
U3RhdGlzdGljcyYgc3RhdGljcykKK3sKKyAgICBib29sIGZvdW5kS2V5TmFtZSA9IGZhbHNlOwor
ICAgIEZJTEUqIGZTeXN0ZW1NZW1vcnlTdGF0dXMgPSBmb3BlbigiL3Byb2MvbWVtaW5mbyIsICJy
Iik7CisgICAgaWYgKGZTeXN0ZW1NZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgd2hpbGUgKCFmZW9m
KGZTeXN0ZW1NZW1vcnlTdGF0dXMpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyVG9rZW4gPSBn
ZXRUb2tlbihmU3lzdGVtTWVtb3J5U3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdHJUb2tlbi5m
aW5kKCc6JykgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9
IHN0clRva2VuLmxlZnQoc3RyVG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgICAgICBz
dGF0aWNzLmtleXMuYXBwZW5kKGtleU5hbWUpOworICAgICAgICAgICAgICAgIGZvdW5kS2V5TmFt
ZSA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkgeworICAgICAg
ICAgICAgICAgIHN0YXRpY3MudmFsdWVzLmFwcGVuZChzdHJUb2tlbi50b0ludCgpKTsKKyAgICAg
ICAgICAgICAgICBmb3VuZEtleU5hbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBmY2xvc2UoZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgfQorfQorCitBcHBs
aWNhdGlvbk1lbW9yeVN0YXRzIHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCkKK3sKKyAgICBBcHBs
aWNhdGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBjaGFyIHByb2Nlc3NQ
YXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzcHJpbnRmKHByb2Nlc3NQYXRoLCAiL3Byb2MvJWQv
c3RhdG0iLCBnZXRwaWQoKSk7CisgICAgRklMRSogZk1lbW9yeVN0YXR1cyA9IGZvcGVuKHByb2Nl
c3NQYXRoLCAiciIpOworICAgIGlmIChmTWVtb3J5U3RhdHVzKSB7CisgICAgICAgIGZzY2FuZihm
TWVtb3J5U3RhdHVzLCAiJWQgJWQgJWQgJWQgJWQgJWQgJWQiLAorICAgICAgICAgICAgICAgICZh
cHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxp
Y2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlv
blN0YXRzLnNoYXJlZFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMudGV4
dFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMubGlicmFyeVNpemUsCisg
ICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSwKKyAgICAgICAg
ICAgICAgICAmYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKyAgICAgICAgZmNsb3Nl
KGZNZW1vcnlTdGF0dXMpOworICAgIH0KKworICAgIHJldHVybiBhcHBsaWNhdGlvblN0YXRzOwor
fQorCitTdHJpbmcgV2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworICAg
IFN0cmluZyBwcm9jZXNzTmFtZTsKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRo
XTsKKyAgICBzcHJpbnRmKHByb2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3RhdHVzIiwgZ2V0cGlkKCkp
OworICAgIEZJTEUqIGZQcm9jZXNzU3RhdHVzID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7Cisg
ICAgaWYgKGZQcm9jZXNzU3RhdHVzKSB7CisgICAgICAgIGdldFRva2VuKGZQcm9jZXNzU3RhdHVz
KTsKKyAgICAgICAgcHJvY2Vzc05hbWUgPSBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7CisgICAg
ICAgIGZjbG9zZShmUHJvY2Vzc1N0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIHByb2Nlc3NO
YW1lOworfQorCitXZWJNZW1vcnlTdGF0aXN0aWNzIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdl
YktpdCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHRvdGFsQnl0ZXNJblVzZSA9IDAsIHRvdGFsQnl0
ZXNDb21taXR0ZWQgPSAwOworCisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBsaWNhdGlv
blN0YXRzID0gc2FtcGxlQXBwbGljYXRpb25NYWxsb2MoKTsKKworICAgIFdlYk1lbW9yeVN0YXRp
c3RpY3Mgd2ViS2l0TWVtb3J5U3RhdHM7CisKKyAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0
TWFsbG9jU3RhdGlzdGljcyA9IFdURjo6ZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKKyAgICBzaXpl
X3QgZmFzdE1hbGxvY0J5dGVzSW5Vc2UgPSBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRW
TUJ5dGVzIC0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlczsKKyAgICBzaXplX3Qg
ZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVk
Vk1CeXRlczsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZmFzdE1hbGxvY0J5dGVzSW5Vc2U7Cisg
ICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQ7CisKKyAg
ICBzaXplX3QganNjSGVhcEJ5dGVzSW5Vc2UgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCktPmhlYXAuc2l6ZSgpOworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNDb21taXR0ZWQgPSBK
U0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuY2FwYWNpdHkoKTsKKyAgICB0
b3RhbEJ5dGVzSW5Vc2UgKz0ganNjSGVhcEJ5dGVzSW5Vc2U7CisgICAgdG90YWxCeXRlc0NvbW1p
dHRlZCArPSBqc2NIZWFwQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBHbG9iYWxNZW1vcnlTdGF0aXN0
aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOworICAgIHRv
dGFsQnl0ZXNJblVzZSArPSBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVt
b3J5U3RhdHMuSklUQnl0ZXM7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBnbG9iYWxNZW1v
cnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7CisKKyAgICBk
b3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMu
YXBwZW5kKFN0cmluZygiVGltZXN0YW1wIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVl
cy5hcHBlbmQobm93KTsKKworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmlu
ZygiVG90YWwgUHJvZ3JhbSBTaXplIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQoYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsKKyAgICB3ZWJLaXRNZW1v
cnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlJTUyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICB3
ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlNoYXJlZCIpKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSk7
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUZXh0IikpOworICAg
IHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6
ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJMaWJyYXJ5Iikp
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRpb25TdGF0cy5s
aWJyYXJ5U2l6ZSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJE
YXRhL1N0YWNrIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGlj
YXRpb25TdGF0cy5kYXRhU3RhY2tTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFw
cGVuZChTdHJpbmcoIkRpcnR5IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBl
bmQoYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworICAgIHdlYktpdE1lbW9yeVN0
YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwgTWVtb3J5IEluIFVzZSIpKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKHRvdGFsQnl0ZXNJblVzZSk7CisgICAgd2ViS2l0
TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikp
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzSW5V
c2UpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlw
dCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNj
SGVhcEJ5dGVzSW5Vc2UpOworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3Ry
aW5nKCJUb3RhbCBDb21taXR0ZWQgTWVtb3J5IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZh
bHVlcy5hcHBlbmQodG90YWxCeXRlc0NvbW1pdHRlZCk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMu
a2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktp
dE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKKyAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSGVhcCBC
eXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGpzY0hlYXBCeXRl
c0NvbW1pdHRlZCk7CisKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmco
IkphdmFTY3JpcHQgU3RhY2sgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVz
LmFwcGVuZChnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKTsKKyAgICB3ZWJLaXRNZW1vcnlT
dGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSklUIEJ5dGVzIikpOworICAgIHdl
YktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMp
OworCisgICAgc2FtcGxlU3lzdGVtTWVtb3J5SW5mbyh3ZWJLaXRNZW1vcnlTdGF0cyk7CisKKyAg
ICByZXR1cm4gd2ViS2l0TWVtb3J5U3RhdHM7Cit9CisKK3ZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6
c2VuZE1lbW9yeVByZXNzdXJlRXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKaW5kZXggY2U3ZjdiNDU0OTQ2M2MxMGZiYWNjYjc1NzNhM2JlYWFkZTI1M2IwZC4uZWJk
NmIwY2EzNjA1YjBlODM5MDllYTdiOGFlYjZiMGU1NWU2NTg4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2lu
Y2x1ZGUgIldLRmluZE9wdGlvbnMuaCIKKyNpbmNsdWRlICJXS051bWJlci5oIgogI2luY2x1ZGUg
IldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5o
IgpAQCAtNzM1LDYgKzczNiwxNyBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRfYWRkKEV2
YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjbwogCiAgICAgX2V3
a192aWV3X2luaXRpYWxpemUoZXdrVmlldywgY29udGV4dCwgMCk7CiAKKyNpZiBFTkFCTEUoTUVN
T1JZX1NBTVBMRVIpCisgICAgc3RhdGljIGJvb2wgbWVtb3J5U2FtcGxlciA9IGZhbHNlOworICAg
IHN0YXRpYyBjb25zdCBjaGFyIGVudmlyb25NZW1vcnlTYW1wbGVyW10gPSAiTUVNT1JZX1NBTVBM
RVIiOworCisgICAgaWYgKCFtZW1vcnlTYW1wbGVyICYmIGdldGVudihlbnZpcm9uTWVtb3J5U2Ft
cGxlcikpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tEb3VibGVSZWY+IGludGVydmFsKEFkb3B0
V0ssIFdLRG91YmxlQ3JlYXRlKDAuMCkpOworICAgICAgICBXS0NvbnRleHRTdGFydE1lbW9yeVNh
bXBsZXIoZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb250ZXh0KSwgaW50ZXJ2YWwuZ2V0KCkp
OworICAgICAgICBtZW1vcnlTYW1wbGVyID0gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIHJl
dHVybiBld2tWaWV3OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDU4MWY0YWI4OWVhZjMw
YmUxODFiZWU5M2E1YzJkMmExOThlMTliMWIuLjBlMjY3MGUzNDFjMmZiNjI3MzM4MmMxM2RiMDEy
NWViMTUzMTRjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC03OSw2ICs3OSw3IEBAIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9XRUJLSVRfQkxP
Ql9CVUlMREVSIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xJ
TktfUFJFRkVUQ0ggT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TUVESUFfQ0FQVFVSRSBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9NRU1PUllfU0FNUExFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9NSUNST0RBVEEgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTkVUV09SS19JTkZPIE9OKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCmluZGV4IGNlNzg0NDMzOWM1ODMxODU0YmRjMGJlODYxYjRhM2Q1NTQ5YjY0OGYuLjc5
YjhhYjViMzNhN2EwNzVkNDY2NGRjMDljNmJkNGUyMjFiMjRlMGMgMTAwNjQ0Ci0tLSBhL0NoYW5n
ZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0yMyAgSnVuZ0pp
ayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtDTUFLRV0g
QWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTZXQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlIG9uLgorCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6CisKIDIwMTItMDgtMjIgIEJl
dGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQwMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160413</attachid>
            <date>2012-08-24 06:43:10 -0700</date>
            <delta_ts>2012-08-24 18:29:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120824224305.patch</filename>
            <type>text/plain</type>
            <size>14526</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODQzNGNjYzc2ZGVmZTUxZTg1MTU2N2NjYzQ2NDJjYjM3NjM1MDNhLi43ZWQ2YTgzYWNjYTlkMTM0
MDM1NDc2ZTlkZTI1NWRkNjg4ZGM5NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yNCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBv
cHRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Yk1lbW9yeVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1lbW9yeSB1
c2FnZSBpbiBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisKIDIwMTEtMDgtMjMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2NTA1LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjNWE3ZDE3
YmIxODdlYmRmZDA2MzhkNjE4N2QwOWMwNGVjNzVhNDllLi4xMjM2NDI0YTc5Y2M4Y2I2NDdhYjI0
OWJhNWUwNWJhZWY5ZmQ0ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTI0ICBKdW5n
SmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
QWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViTWVtb3J5U2FtcGxlciBvcHRpb24uCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wOC0yNCAgQW5kcmFzIEJlY3NpICA8YW5k
cmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEJlIG1vcmUgZXhwbGljaXQgYWJv
dXQgdGhlIElDVSBkZXBlbmRlbmN5IGluIHRoZSBlcnJvciBtZXNzYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YzMwNTUxNmM3YTJjYzU2N2I4N2ZiOTJjZGIwYTI0MWM5YzM1YzI3NC4uNWJjYTE5M2RhNzgyZGJh
Yjc1YTIzNjYwMWQ0NWIzMWQzNzRhYWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDEyLTA4LTI0ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtFRkxdW1dLMl0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYk1lbW9yeVNhbXBsZXIg
ZmVhdHVyZSB0byBFRkwgcG9ydC4gV2ViTWVtb3J5U2FtcGxlciByZWNvcmRzIG1lbW9yeSB1c2Fn
ZSBvZgorICAgICAgICBXZWJQcm9jZXNzIGFuZCBVSSBQcm9jZXNzIGFuZCBhbHNvIGl0IHJlY29y
ZHMgYXBwbGljYXRpb24gbWVtb3J5IHN0YXR1cyBpbiByZWFsIHRpbWUuCisgICAgICAgIEluY2x1
ZGVkIGl0ZW1zIG9uIHRoZSByZXN1bHQgYXJlIEpJVCwgSlMgaGVhcCwgZmFzdG1hbGxvYyBieXRl
cyBhbmQKKyAgICAgICAgYXBwbGljYXRpb24gbWVtb3J5IGluZm8gZnJvbSAvcHJvYy9wcm9jZXNz
X2lkL3N0YXRtLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hh
cmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoQXBwbGljYXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6Omdl
dFRva2VuKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlU3lzdGVtTWVtb3J5SW5mbyk6CisgICAg
ICAgIChXZWJLaXQ6OnNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1v
cnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1w
bGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfc21hcnRfYWRkKToKKwogMjAxMi0w
OC0yNCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
IAogICAgICAgICBbRUZMXVtXSzJdIEJhY2stZm9yd2FyZCBsaXN0IEFQSSBuZWVkcyBleHRlbnNp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0NDg4MzRjZjc1
NWY3NzBkYjFiN2M0NDViOTZiMTNjM2E0ZTU2NjhlLi43OGEzYTFmMTdiZTY5NzIzMGIxNDY4YWRh
MTFiZGIwYjBhYTdhZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC0xLDYgKzEsOCBAQAogTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCiAgICAgaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCisKKyAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuY3BwCiApCiAK
IExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggNGE0
ZWZlODQ2ZWI1NTgwMWE4ZTU4YmVhZGM3ZmY3YThkZGYyMTY0OS4uYmQwYzViMTUzYWVmNGFkZWMz
ZDZmYTBjNTZlZjhkY2E1ODM4Zjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTY4LDQgKzExNjgsOCBA
QAogI2VuZGlmCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyNkZWZpbmUgRU5BQkxFX01F
TU9SWV9TQU1QTEVSIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1
YmEyZDZjOGVhNi4uYThmM2Y5OWY1MTM0YmMxNTA4MjBiOGFiYThkZDlhYWJmYjFiYjgyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIxLDYgKzIxLDEwIEBAIExJU1QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNw
cAogCisgICAgU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaAorICAgIFNoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmNwcAorCisgICAgU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcAogICAg
IFNoYXJlZC9lZmwvTGF5ZXJUcmVlQ29udGV4dEVmbC5jcHAKICAgICBTaGFyZWQvZWZsL05hdGl2
ZVdlYktleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2
ZW50RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJNZW1v
cnlTYW1wbGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViTWVtb3J5U2Ft
cGxlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRlMzhhZjYxZmY5YWZkZTNhNDVkZDczNzdjY2IxNGE0
ZDA5MGFjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2Vi
TWVtb3J5U2FtcGxlckVmbC5jcHAKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTWVtb3J5U2FtcGxlci5o
IgorCisjaWYgRU5BQkxFKE1FTU9SWV9TQU1QTEVSKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NZW1vcnlTdGF0aXN0aWNzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgQXBwbGljYXRpb25NZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRv
dGFsUHJvZ3JhbVNpemU7CisgICAgc2l6ZV90IHJlc2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qg
c2hhcmVkU2l6ZTsKKyAgICBzaXplX3QgdGV4dFNpemU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXpl
OworICAgIHNpemVfdCBkYXRhU3RhY2tTaXplOworICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOwor
fTsKKworY29uc3QgaW50IG1heEJ1ZmZlciA9IDEyODsKK2NvbnN0IGludCBtYXhQcm9jZXNzUGF0
aCA9IDM1OworCitpbmxpbmUgU3RyaW5nIGdldFRva2VuKEZJTEUqIGZpbGUpCit7CisgICAgaWYg
KCFmaWxlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1ZmZlclttYXhC
dWZmZXJdOworICAgIG1lbXNldChidWZmZXIsIDAsIG1heEJ1ZmZlcik7CisgICAgZnNjYW5mKGZp
bGUsICIlcyIsIGJ1ZmZlcik7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7Cit9CisKK3Zv
aWQgc2FtcGxlU3lzdGVtTWVtb3J5SW5mbyhXZWJNZW1vcnlTdGF0aXN0aWNzJiBzdGF0aWNzKQor
eworICAgIGJvb2wgZm91bmRLZXlOYW1lID0gZmFsc2U7CisgICAgRklMRSogZlN5c3RlbU1lbW9y
eVN0YXR1cyA9IGZvcGVuKCIvcHJvYy9tZW1pbmZvIiwgInIiKTsKKyAgICBpZiAoZlN5c3RlbU1l
bW9yeVN0YXR1cykgeworICAgICAgICB3aGlsZSAoIWZlb2YoZlN5c3RlbU1lbW9yeVN0YXR1cykp
IHsKKyAgICAgICAgICAgIFN0cmluZyBzdHJUb2tlbiA9IGdldFRva2VuKGZTeXN0ZW1NZW1vcnlT
dGF0dXMpOworICAgICAgICAgICAgaWYgKHN0clRva2VuLmZpbmQoJzonKSAhPSBub3RGb3VuZCkg
eworICAgICAgICAgICAgICAgIFN0cmluZyBrZXlOYW1lID0gc3RyVG9rZW4ubGVmdChzdHJUb2tl
bi5sZW5ndGgoKSAtIDEpOworICAgICAgICAgICAgICAgIHN0YXRpY3Mua2V5cy5hcHBlbmQoa2V5
TmFtZSk7CisgICAgICAgICAgICAgICAgZm91bmRLZXlOYW1lID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoZm91bmRLZXlOYW1lKSB7CisgICAgICAgICAgICAgICAgc3RhdGljcy52YWx1
ZXMuYXBwZW5kKHN0clRva2VuLnRvSW50KCkpOworICAgICAgICAgICAgICAgIGZvdW5kS2V5TmFt
ZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZjbG9zZShmU3lz
dGVtTWVtb3J5U3RhdHVzKTsKKyAgICB9Cit9CisKK0FwcGxpY2F0aW9uTWVtb3J5U3RhdHMgc2Ft
cGxlQXBwbGljYXRpb25NYWxsb2MoKQoreworICAgIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBw
bGljYXRpb25TdGF0czsKKworICAgIGNoYXIgcHJvY2Vzc1BhdGhbbWF4UHJvY2Vzc1BhdGhdOwor
ICAgIHNwcmludGYocHJvY2Vzc1BhdGgsICIvcHJvYy8lZC9zdGF0bSIsIGdldHBpZCgpKTsKKyAg
ICBGSUxFKiBmTWVtb3J5U3RhdHVzID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAgaWYg
KGZNZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgZnNjYW5mKGZNZW1vcnlTdGF0dXMsICIlZCAlZCAl
ZCAlZCAlZCAlZCAlZCIsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMudG90YWxQ
cm9ncmFtU2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy5yZXNpZGVudFNl
dFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSwKKyAg
ICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6ZSwKKyAgICAgICAgICAgICAg
ICAmYXBwbGljYXRpb25TdGF0cy5saWJyYXJ5U2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGlj
YXRpb25TdGF0cy5kYXRhU3RhY2tTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0
YXRzLmRpcnR5UGFnZVNpemUpOworICAgICAgICBmY2xvc2UoZk1lbW9yeVN0YXR1cyk7CisgICAg
fQorCisgICAgcmV0dXJuIGFwcGxpY2F0aW9uU3RhdHM7Cit9CisKK1N0cmluZyBXZWJNZW1vcnlT
YW1wbGVyOjpwcm9jZXNzTmFtZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHByb2Nlc3NOYW1lOwor
ICAgIGNoYXIgcHJvY2Vzc1BhdGhbbWF4UHJvY2Vzc1BhdGhdOworICAgIHNwcmludGYocHJvY2Vz
c1BhdGgsICIvcHJvYy8lZC9zdGF0dXMiLCBnZXRwaWQoKSk7CisgICAgRklMRSogZlByb2Nlc3NT
dGF0dXMgPSBmb3Blbihwcm9jZXNzUGF0aCwgInIiKTsKKyAgICBpZiAoZlByb2Nlc3NTdGF0dXMp
IHsKKyAgICAgICAgZ2V0VG9rZW4oZlByb2Nlc3NTdGF0dXMpOworICAgICAgICBwcm9jZXNzTmFt
ZSA9IGdldFRva2VuKGZQcm9jZXNzU3RhdHVzKTsKKyAgICAgICAgZmNsb3NlKGZQcm9jZXNzU3Rh
dHVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvY2Vzc05hbWU7Cit9CisKK1dlYk1lbW9yeVN0
YXRpc3RpY3MgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KCkgY29uc3QKK3sKKyAgICBz
aXplX3QgdG90YWxCeXRlc0luVXNlID0gMCwgdG90YWxCeXRlc0NvbW1pdHRlZCA9IDA7CisKKyAg
ICBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHMgPSBzYW1wbGVBcHBsaWNh
dGlvbk1hbGxvYygpOworCisgICAgV2ViTWVtb3J5U3RhdGlzdGljcyB3ZWJLaXRNZW1vcnlTdGF0
czsKKworICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzID0gV1RG
OjpmYXN0TWFsbG9jU3RhdGlzdGljcygpOworICAgIHNpemVfdCBmYXN0TWFsbG9jQnl0ZXNJblVz
ZSA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMgLSBmYXN0TWFsbG9jU3Rh
dGlzdGljcy5mcmVlTGlzdEJ5dGVzOworICAgIHNpemVfdCBmYXN0TWFsbG9jQnl0ZXNDb21taXR0
ZWQgPSBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzOworICAgIHRvdGFsQnl0
ZXNJblVzZSArPSBmYXN0TWFsbG9jQnl0ZXNJblVzZTsKKyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVk
ICs9IGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZDsKKworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNJ
blVzZSA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5zaXplKCk7Cisg
ICAgc2l6ZV90IGpzY0hlYXBCeXRlc0NvbW1pdHRlZCA9IEpTRE9NV2luZG93Ojpjb21tb25KU0ds
b2JhbERhdGEoKS0+aGVhcC5jYXBhY2l0eSgpOworICAgIHRvdGFsQnl0ZXNJblVzZSArPSBqc2NI
ZWFwQnl0ZXNJblVzZTsKKyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGpzY0hlYXBCeXRlc0Nv
bW1pdHRlZDsKKworICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMg
PSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGdsb2Jh
bE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMgKyBnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlczsKKyAg
ICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMgKyBn
bG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlczsKKworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGlt
ZSgpOworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUaW1lc3Rh
bXAiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChub3cpOworCisgICAg
d2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUb3RhbCBQcm9ncmFtIFNpemUi
KSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRz
LnRvdGFsUHJvZ3JhbVNpemUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0
cmluZygiUlNTIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGlj
YXRpb25TdGF0cy5yZXNpZGVudFNldFNpemUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMu
YXBwZW5kKFN0cmluZygiU2hhcmVkIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQoYXBwbGljYXRpb25TdGF0cy5zaGFyZWRTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRleHQiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFs
dWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLnRleHRTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlT
dGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkxpYnJhcnkiKSk7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLmxpYnJhcnlTaXplKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRhdGEvU3RhY2siKSk7CisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLmRhdGFTdGFja1Np
emUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiRGlydHkiKSk7
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLmRp
cnR5UGFnZVNpemUpOworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5n
KCJUb3RhbCBNZW1vcnkgSW4gVXNlIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQodG90YWxCeXRlc0luVXNlKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChTdHJpbmcoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMudmFsdWVzLmFwcGVuZChmYXN0TWFsbG9jQnl0ZXNJblVzZSk7CisgICAgd2ViS2l0TWVtb3J5
U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiKSk7CisgICAg
d2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChqc2NIZWFwQnl0ZXNJblVzZSk7CisKKyAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRvdGFsIENvbW1pdHRlZCBN
ZW1vcnkiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZCh0b3RhbEJ5dGVz
Q29tbWl0dGVkKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkZh
c3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFw
cGVuZChmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtl
eXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1l
bW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVzQ29tbWl0dGVkKTsKKworICAgIHdl
YktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBTdGFjayBCeXRl
cyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGdsb2JhbE1lbW9yeVN0
YXRzLnN0YWNrQnl0ZXMpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmlu
ZygiSmF2YVNjcmlwdCBKSVQgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVz
LmFwcGVuZChnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcyk7CisKKyAgICBzYW1wbGVTeXN0ZW1N
ZW1vcnlJbmZvKHdlYktpdE1lbW9yeVN0YXRzKTsKKworICAgIHJldHVybiB3ZWJLaXRNZW1vcnlT
dGF0czsKK30KKwordm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVu
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBjZTdmN2I0NTQ5
NDYzYzEwZmJhY2NiNzU3M2EzYmVhYWRlMjUzYjBkLi5lYmQ2YjBjYTM2MDViMGU4MzkwOWVhN2I4
YWViNmIwZTU1ZTY1ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9ucy5o
IgorI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNs
dWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCkBAIC03MzUsNiArNzM2LDE3IEBA
IEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0
KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvCiAKICAgICBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShld2tW
aWV3LCBjb250ZXh0LCAwKTsKIAorI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKyAgICBzdGF0
aWMgYm9vbCBtZW1vcnlTYW1wbGVyID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZW52
aXJvbk1lbW9yeVNhbXBsZXJbXSA9ICJNRU1PUllfU0FNUExFUiI7CisKKyAgICBpZiAoIW1lbW9y
eVNhbXBsZXIgJiYgZ2V0ZW52KGVudmlyb25NZW1vcnlTYW1wbGVyKSkgeworICAgICAgICBXS1Jl
dGFpblB0cjxXS0RvdWJsZVJlZj4gaW50ZXJ2YWwoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoMC4w
KSk7CisgICAgICAgIFdLQ29udGV4dFN0YXJ0TWVtb3J5U2FtcGxlcihld2tfY29udGV4dF9XS0Nv
bnRleHRfZ2V0KGNvbnRleHQpLCBpbnRlcnZhbC5nZXQoKSk7CisgICAgICAgIG1lbW9yeVNhbXBs
ZXIgPSB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2UKaW5kZXggMjViZjU5N2Q5M2RiZjg1OWUzNThhNTRmNDQ3OWZhNmE5MTQ0
ZTU2OC4uZjU0Yzg4MTRjYjZiNmQ5YTZmNjg2MDExNDI2Y2NlZDg2MDJkNDkzNSAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKQEAgLTc4LDYgKzc4LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX1dFQktJVF9CTE9CX0JVSUxERVIgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTElOS19QUkVGRVRDSCBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DQVBUVVJFIE9OKQorV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01JQ1JPREFUQSBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJ
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lO
Rk8gT04pCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTczZTYwODcy
ODYzM2JmZTY2YzZlMTlkM2FhOTBlMTBkNmUzZDZmMC4uNTI0NWUwYjkzNGY0OGVjYmZiY2E1MjY4
OWYwNThmYjZkZjVhMzgyNCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTI0ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1w
bGVyIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2V0IFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSBvbi4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlOgorCiAyMDEyLTA4LTIzICBLZXZpbiBPbGxpdmllciAgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBm
aXguIERpc2FibGUgY29tcGlsYXRpb24gb2YgV2ViRE9NIGZpbGUgZm9yIG5vdywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160467</attachid>
            <date>2012-08-24 11:55:21 -0700</date>
            <delta_ts>2012-08-27 02:12:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120825035515.patch</filename>
            <type>text/plain</type>
            <size>14580</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODQzNGNjYzc2ZGVmZTUxZTg1MTU2N2NjYzQ2NDJjYjM3NjM1MDNhLi43ZWQ2YTgzYWNjYTlkMTM0
MDM1NDc2ZTlkZTI1NWRkNjg4ZGM5NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yNCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBv
cHRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Yk1lbW9yeVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1lbW9yeSB1
c2FnZSBpbiBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisKIDIwMTEtMDgtMjMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2NTA1LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjNWE3ZDE3
YmIxODdlYmRmZDA2MzhkNjE4N2QwOWMwNGVjNzVhNDllLi4xMjM2NDI0YTc5Y2M4Y2I2NDdhYjI0
OWJhNWUwNWJhZWY5ZmQ0ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTI0ICBKdW5n
SmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
QWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViTWVtb3J5U2FtcGxlciBvcHRpb24uCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wOC0yNCAgQW5kcmFzIEJlY3NpICA8YW5k
cmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEJlIG1vcmUgZXhwbGljaXQgYWJv
dXQgdGhlIElDVSBkZXBlbmRlbmN5IGluIHRoZSBlcnJvciBtZXNzYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ODhhMjA3ZTQ3ZjIwOTAwNmEzZTczMzdiYzQ1NWQwZmU3NGFhYmRmNS4uM2IyY2Y4YWU2YWQwOTE3
N2Q3NjJkMzVjYzNiMmVhNDAwYzUwZWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDEyLTA4LTI0ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtFRkxdW1dLMl0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYk1lbW9yeVNhbXBsZXIg
ZmVhdHVyZSB0byBFRkwgcG9ydC4gV2ViTWVtb3J5U2FtcGxlciByZWNvcmRzIG1lbW9yeSB1c2Fn
ZSBvZgorICAgICAgICBXZWJQcm9jZXNzIGFuZCBVSSBQcm9jZXNzIGFuZCBhbHNvIGl0IHJlY29y
ZHMgYXBwbGljYXRpb24gbWVtb3J5IHN0YXR1cyBpbiByZWFsIHRpbWUuCisgICAgICAgIEluY2x1
ZGVkIGl0ZW1zIG9uIHRoZSByZXN1bHQgYXJlIEpJVCwgSlMgaGVhcCwgZmFzdG1hbGxvYyBieXRl
cyBhbmQKKyAgICAgICAgYXBwbGljYXRpb24gbWVtb3J5IGluZm8gZnJvbSAvcHJvYy9wcm9jZXNz
X2lkL3N0YXRtLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hh
cmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoQXBwbGljYXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6Omdl
dFRva2VuKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlU3lzdGVtTWVtb3J5SW5mbyk6CisgICAg
ICAgIChXZWJLaXQ6OnNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1v
cnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1w
bGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfc21hcnRfYWRkKToKKwogMjAxMi0w
OC0yNCAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBb
UXRdW1dLMl0gRml4IGN1c3RvbSBkZXZpY2UgcGl4ZWwgcmF0aW8gcHJvcGFnYXRpb24gYW5kIGFk
ZCBRTUwgQVBJIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggNDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1NjY4ZS4uNzhhM2ExZjE3YmU2
OTcyMzBiMTQ2OGFkYTExYmRiMGIwYWE3YWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMSw2ICsxLDggQEAKIExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAogICAg
IGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorCisgICAgcnVudGltZS9NZW1vcnlTdGF0aXN0
aWNzLmNwcAogKQogCiBMSVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCmluZGV4IDRhNGVmZTg0NmViNTU4MDFhOGU1OGJlYWRjN2ZmN2E4ZGRmMjE2NDkuLmJkMGM1
YjE1M2FlZjRhZGVjM2Q2ZmEwYzU2ZWY4ZGNhNTgzOGY4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTE2
OCw0ICsxMTY4LDggQEAKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisjZGVm
aW5lIEVOQUJMRV9NRU1PUllfU0FNUExFUiAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0
Zm9ybV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGQ0YjA4ZjhiZTAwM2Y4NGVm
MjFhMGE0NGM4MTI2NWJhMmQ2YzhlYTYuLmE4ZjNmOTlmNTEzNGJjMTUwODIwYjhhYmE4ZGQ5YWFi
ZmIxYmI4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yMSw2ICsyMSwxMCBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAKIAorICAgIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKKyAgICBTaGFy
ZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKworICAgIFNoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxl
ckVmbC5jcHAKICAgICBTaGFyZWQvZWZsL0xheWVyVHJlZUNvbnRleHRFZmwuY3BwCiAgICAgU2hh
cmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcAogICAgIFNoYXJlZC9lZmwvTmF0
aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1ZGRjNzYyNWFjZTgwYWIxN2Zm
NTUwNmYzOTY5MGZkYzM2NmUyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCkBAIC0wLDAgKzEsMjAxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1l
bW9yeVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5U3RhdGlz
dGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNsdWRlIDxtYWxs
b2MuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgewor
ICAgIHNpemVfdCB0b3RhbFByb2dyYW1TaXplOworICAgIHNpemVfdCByZXNpZGVudFNldFNpemU7
CisgICAgc2l6ZV90IHNoYXJlZFNpemU7CisgICAgc2l6ZV90IHRleHRTaXplOworICAgIHNpemVf
dCBsaWJyYXJ5U2l6ZTsKKyAgICBzaXplX3QgZGF0YVN0YWNrU2l6ZTsKKyAgICBzaXplX3QgZGly
dHlQYWdlU2l6ZTsKK307CisKK2NvbnN0IGludCBtYXhCdWZmZXIgPSAxMjg7Citjb25zdCBpbnQg
bWF4UHJvY2Vzc1BhdGggPSAzNTsKKworaW5saW5lIFN0cmluZyBnZXRUb2tlbihGSUxFKiBmaWxl
KQoreworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgY2hh
ciBidWZmZXJbbWF4QnVmZmVyXTsKKyAgICBtZW1zZXQoYnVmZmVyLCAwLCBtYXhCdWZmZXIpOwor
ICAgIGZzY2FuZihmaWxlLCAiJXMiLCBidWZmZXIpOworCisgICAgcmV0dXJuIFN0cmluZyhidWZm
ZXIpOworfQorCit2b2lkIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8oV2ViTWVtb3J5U3RhdGlzdGlj
cyYgc3RhdGljcykKK3sKKyAgICBib29sIGZvdW5kS2V5TmFtZSA9IGZhbHNlOworICAgIEZJTEUq
IGZTeXN0ZW1NZW1vcnlTdGF0dXMgPSBmb3BlbigiL3Byb2MvbWVtaW5mbyIsICJyIik7CisgICAg
aWYgKGZTeXN0ZW1NZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgd2hpbGUgKCFmZW9mKGZTeXN0ZW1N
ZW1vcnlTdGF0dXMpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyVG9rZW4gPSBnZXRUb2tlbihm
U3lzdGVtTWVtb3J5U3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdHJUb2tlbi5maW5kKCc6Jykg
IT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9IHN0clRva2Vu
LmxlZnQoc3RyVG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNzLmtl
eXMuYXBwZW5kKGtleU5hbWUpOworICAgICAgICAgICAgICAgIGZvdW5kS2V5TmFtZSA9IHRydWU7
CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkgeworICAgICAgICAgICAgICAg
IHN0YXRpY3MudmFsdWVzLmFwcGVuZChzdHJUb2tlbi50b0ludCgpKTsKKyAgICAgICAgICAgICAg
ICBmb3VuZEtleU5hbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBmY2xvc2UoZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgfQorfQorCitBcHBsaWNhdGlvbk1l
bW9yeVN0YXRzIHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCkKK3sKKyAgICBBcHBsaWNhdGlvbk1l
bW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFBy
b2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIv
cHJvYy8lZC9zdGF0bSIsIGdldHBpZCgpKTsKKyAgICBGSUxFKiBmTWVtb3J5U3RhdHVzID0gZm9w
ZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAgaWYgKGZNZW1vcnlTdGF0dXMpIHsKKyAgICAgICAg
ZnNjYW5mKGZNZW1vcnlTdGF0dXMsICIlemQgJXpkICV6ZCAlemQgJXpkICV6ZCAlemQiLAorICAg
ICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUsCisgICAgICAg
ICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplLAorICAgICAgICAgICAg
ICAgICZhcHBsaWNhdGlvblN0YXRzLnNoYXJlZFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxp
Y2F0aW9uU3RhdHMudGV4dFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMu
bGlicmFyeVNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNr
U2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsK
KyAgICAgICAgZmNsb3NlKGZNZW1vcnlTdGF0dXMpOworICAgIH0KKworICAgIHJldHVybiBhcHBs
aWNhdGlvblN0YXRzOworfQorCitTdHJpbmcgV2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUo
KSBjb25zdAoreworICAgIFN0cmluZyBwcm9jZXNzTmFtZTsKKyAgICBjaGFyIHByb2Nlc3NQYXRo
W21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1Bh
dGgsICIvcHJvYy8lZC9zdGF0dXMiLCBnZXRwaWQoKSk7CisgICAgRklMRSogZlByb2Nlc3NTdGF0
dXMgPSBmb3Blbihwcm9jZXNzUGF0aCwgInIiKTsKKyAgICBpZiAoZlByb2Nlc3NTdGF0dXMpIHsK
KyAgICAgICAgZ2V0VG9rZW4oZlByb2Nlc3NTdGF0dXMpOworICAgICAgICBwcm9jZXNzTmFtZSA9
IGdldFRva2VuKGZQcm9jZXNzU3RhdHVzKTsKKyAgICAgICAgZmNsb3NlKGZQcm9jZXNzU3RhdHVz
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvY2Vzc05hbWU7Cit9CisKK1dlYk1lbW9yeVN0YXRp
c3RpY3MgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KCkgY29uc3QKK3sKKyAgICBzaXpl
X3QgdG90YWxCeXRlc0luVXNlID0gMCwgdG90YWxCeXRlc0NvbW1pdHRlZCA9IDA7CisKKyAgICBB
cHBsaWNhdGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHMgPSBzYW1wbGVBcHBsaWNhdGlv
bk1hbGxvYygpOworCisgICAgV2ViTWVtb3J5U3RhdGlzdGljcyB3ZWJLaXRNZW1vcnlTdGF0czsK
KworICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzID0gV1RGOjpm
YXN0TWFsbG9jU3RhdGlzdGljcygpOworICAgIHNpemVfdCBmYXN0TWFsbG9jQnl0ZXNJblVzZSA9
IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMgLSBmYXN0TWFsbG9jU3RhdGlz
dGljcy5mcmVlTGlzdEJ5dGVzOworICAgIHNpemVfdCBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQg
PSBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzOworICAgIHRvdGFsQnl0ZXNJ
blVzZSArPSBmYXN0TWFsbG9jQnl0ZXNJblVzZTsKKyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9
IGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZDsKKworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNJblVz
ZSA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5zaXplKCk7CisgICAg
c2l6ZV90IGpzY0hlYXBCeXRlc0NvbW1pdHRlZCA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2Jh
bERhdGEoKS0+aGVhcC5jYXBhY2l0eSgpOworICAgIHRvdGFsQnl0ZXNJblVzZSArPSBqc2NIZWFw
Qnl0ZXNJblVzZTsKKyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGpzY0hlYXBCeXRlc0NvbW1p
dHRlZDsKKworICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBn
bG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGdsb2JhbE1l
bW9yeVN0YXRzLnN0YWNrQnl0ZXMgKyBnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlczsKKyAgICB0
b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMgKyBnbG9i
YWxNZW1vcnlTdGF0cy5KSVRCeXRlczsKKworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgp
OworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUaW1lc3RhbXAi
KSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChub3cpOworCisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUb3RhbCBQcm9ncmFtIFNpemUiKSk7
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLnRv
dGFsUHJvZ3JhbVNpemUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmlu
ZygiUlNTIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoYXBwbGljYXRp
b25TdGF0cy5yZXNpZGVudFNldFNpemUpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBw
ZW5kKFN0cmluZygiU2hhcmVkIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBl
bmQoYXBwbGljYXRpb25TdGF0cy5zaGFyZWRTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5r
ZXlzLmFwcGVuZChTdHJpbmcoIlRleHQiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVz
LmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLnRleHRTaXplKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZChTdHJpbmcoIkxpYnJhcnkiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMu
dmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLmxpYnJhcnlTaXplKTsKKyAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRhdGEvU3RhY2siKSk7CisgICAgd2ViS2l0
TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLmRhdGFTdGFja1NpemUp
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiRGlydHkiKSk7Cisg
ICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChhcHBsaWNhdGlvblN0YXRzLmRpcnR5
UGFnZVNpemUpOworCisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJU
b3RhbCBNZW1vcnkgSW4gVXNlIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBl
bmQodG90YWxCeXRlc0luVXNlKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChT
dHJpbmcoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMu
dmFsdWVzLmFwcGVuZChmYXN0TWFsbG9jQnl0ZXNJblVzZSk7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiKSk7CisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChqc2NIZWFwQnl0ZXNJblVzZSk7CisKKyAgICB3
ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRvdGFsIENvbW1pdHRlZCBNZW1v
cnkiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZCh0b3RhbEJ5dGVzQ29t
bWl0dGVkKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkZhc3Qg
TWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVu
ZChmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMu
YXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVzQ29tbWl0dGVkKTsKKworICAgIHdlYktp
dE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBTdGFjayBCeXRlcyIp
KTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGdsb2JhbE1lbW9yeVN0YXRz
LnN0YWNrQnl0ZXMpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygi
SmF2YVNjcmlwdCBKSVQgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFw
cGVuZChnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcyk7CisKKyAgICBzYW1wbGVTeXN0ZW1NZW1v
cnlJbmZvKHdlYktpdE1lbW9yeVN0YXRzKTsKKworICAgIHJldHVybiB3ZWJLaXRNZW1vcnlTdGF0
czsKK30KKwordm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBjZTdmN2I0NTQ5NDYz
YzEwZmJhY2NiNzU3M2EzYmVhYWRlMjUzYjBkLi5lYmQ2YjBjYTM2MDViMGU4MzkwOWVhN2I4YWVi
NmIwZTU1ZTY1ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9ucy5oIgor
I2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRl
ICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCkBAIC03MzUsNiArNzM2LDE3IEBAIEV2
YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgRXdrX0NvbnRleHQqIGNvCiAKICAgICBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShld2tWaWV3
LCBjb250ZXh0LCAwKTsKIAorI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKyAgICBzdGF0aWMg
Ym9vbCBtZW1vcnlTYW1wbGVyID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZW52aXJv
bk1lbW9yeVNhbXBsZXJbXSA9ICJNRU1PUllfU0FNUExFUiI7CisKKyAgICBpZiAoIW1lbW9yeVNh
bXBsZXIgJiYgZ2V0ZW52KGVudmlyb25NZW1vcnlTYW1wbGVyKSkgeworICAgICAgICBXS1JldGFp
blB0cjxXS0RvdWJsZVJlZj4gaW50ZXJ2YWwoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoMC4wKSk7
CisgICAgICAgIFdLQ29udGV4dFN0YXJ0TWVtb3J5U2FtcGxlcihld2tfY29udGV4dF9XS0NvbnRl
eHRfZ2V0KGNvbnRleHQpLCBpbnRlcnZhbC5nZXQoKSk7CisgICAgICAgIG1lbW9yeVNhbXBsZXIg
PSB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKaW5kZXggMjViZjU5N2Q5M2RiZjg1OWUzNThhNTRmNDQ3OWZhNmE5MTQ0ZTU2
OC4uZjU0Yzg4MTRjYjZiNmQ5YTZmNjg2MDExNDI2Y2NlZDg2MDJkNDkzNSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UKQEAgLTc4LDYgKzc4LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEVHQUNZX1dFQktJVF9CTE9CX0JVSUxERVIgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTElOS19QUkVGRVRDSCBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DQVBUVVJFIE9OKQorV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01JQ1JPREFUQSBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lORk8g
T04pCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTczZTYwODcyODYz
M2JmZTY2YzZlMTlkM2FhOTBlMTBkNmUzZDZmMC4uNTI0NWUwYjkzNGY0OGVjYmZiY2E1MjY4OWYw
NThmYjZkZjVhMzgyNCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTA4LTI0ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1wbGVy
IG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSBvbi4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zRWZsLmNtYWtlOgorCiAyMDEyLTA4LTIzICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXgu
IERpc2FibGUgY29tcGlsYXRpb24gb2YgV2ViRE9NIGZpbGUgZm9yIG5vdywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160672</attachid>
            <date>2012-08-27 02:01:39 -0700</date>
            <delta_ts>2012-08-29 02:06:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120827180130.patch</filename>
            <type>text/plain</type>
            <size>13976</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MjZjNDhjYTUxMGEyYTQ2NWNmNGY5ODRkOGRhM2JjNDg2MmNkZTY3Li5iNDcxODE3ZGVmMzY1NzNm
YmQ5MjgxYTNlMTE5NTc2N2Q3ODQ5NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yNyAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBv
cHRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Yk1lbW9yeVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1lbW9yeSB1
c2FnZSBpbiBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisKIDIwMTItMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaW5hbGx5IGlubGluaW5nIHNob3VsZCBjb3JyZWN0bHkgdHJhY2sgdGhlIGNhdGNo
IGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNjNkMjg3ZjMzMDRlMmFjOWVlNDE3OWEzNTkzOTljNDYw
NWY2YmEwLi5lMzc4MmJhYTM3YTU2NmM5NDYxNWExN2M0MmEzN2QwYjZjNWY0MGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDgtMjcgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5s
ZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgV2ViTWVtb3J5U2FtcGxl
ciBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlIHRvIEVGTCBwb3J0LiBXZWJNZW1vcnlTYW1w
bGVyIHJlY29yZHMgbWVtb3J5IHVzYWdlIG9mCisgICAgICAgIFdlYlByb2Nlc3MgYW5kIFVJIFBy
b2Nlc3MgYW5kIGFsc28gaXQgcmVjb3JkcyBhcHBsaWNhdGlvbiBtZW1vcnkgc3RhdHVzIGluIHJl
YWwgdGltZS4KKyAgICAgICAgSW5jbHVkZWQgaXRlbXMgb24gdGhlIHJlc3VsdCBhcmUgSklULCBK
UyBoZWFwLCBmYXN0bWFsbG9jIGJ5dGVzIGFuZAorICAgICAgICBhcHBsaWNhdGlvbiBtZW1vcnkg
aW5mbyBmcm9tIC9wcm9jL3Byb2Nlc3NfaWQvc3RhdG0uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChBcHBsaWNhdGlvbk1lbW9yeVN0YXRz
KToKKyAgICAgICAgKFdlYktpdDo6Z2V0VG9rZW4pOgorICAgICAgICAoV2ViS2l0OjphcHBlbmRN
ZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6OnNhbXBsZVN5c3RlbU1lbW9yeUluZm8pOgor
ICAgICAgICAoV2ViS2l0OjpzYW1wbGVBcHBsaWNhdGlvbk1hbGxvYyk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lbW9yeVNhbXBsZXI6OnByb2Nlc3NOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5
U2FtcGxlcjo6c2VuZE1lbW9yeVByZXNzdXJlRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X2FkZCk6CisKIDIw
MTItMDgtMjUgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+CiAKICAg
ICAgICAgV2luQ2Fpcm8gQnVpbGQgQnJva2VuIGR1ZSB0byBtaXNzaW5nIGV4cG9ydCBkZWZpbml0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ0ODgzNGNm
NzU1Zjc3MGRiMWI3YzQ0NWI5NmIxM2MzYTRlNTY2OGUuLjc4YTNhMWYxN2JlNjk3MjMwYjE0Njhh
ZGExMWJkYjBiMGFhN2FkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTEsNiArMSw4IEBACiBMSVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAKICAgICBqaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKKworICAgIHJ1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAKICkK
IAogTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IGQ0YjA4ZjhiZTAwM2Y4NGVmMjFhMGE0NGM4MTI2NWJhMmQ2YzhlYTYuLmE4
MDg3NjY0MzE5ZGQ3ZmYxMGQxOTZiYzM0MDVjM2EyZmJmMTFmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0yMSw2ICsyMSwxMCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
IAogICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorICAgIFNoYXJl
ZC9XZWJNZW1vcnlTYW1wbGVyLmgKKyAgICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKwor
ICAgIFNoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAKICAgICBTaGFyZWQvZWZsL0xh
eWVyVHJlZUNvbnRleHRFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50RWZsLmNwcAogICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKQEAg
LTE4MSw3ICsxODUsOSBAQCBMSVNUIChBUFBFTkQgV2ViUHJvY2Vzc19MSUJSQVJJRVMKICAgICAk
e1NRTElURV9MSUJSQVJJRVN9CiApCiAKLUFERF9ERUZJTklUSU9OUygtRERFRkFVTFRfVEhFTUVf
UEFUSD1cIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9LyR7REFUQV9JTlNUQUxMX0RJUn0vdGhlbWVz
XCIpCitBRERfREVGSU5JVElPTlMoLURERUZBVUxUX1RIRU1FX1BBVEg9XCIke0NNQUtFX0lOU1RB
TExfUFJFRklYfS8ke0RBVEFfSU5TVEFMTF9ESVJ9L3RoZW1lc1wiCisgICAgLURFTkFCTEVfTUVN
T1JZX1NBTVBMRVI9MQorKQogCiBBRERfQ1VTVE9NX1RBUkdFVChmb3J3YXJkaW5nLWhlYWRlckVm
bAogICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUMl9ESVJ9L1NjcmlwdHMv
Z2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICR7V0VCS0lUMl9ESVJ9ICR7REVSSVZFRF9T
T1VSQ0VTX1dFQktJVDJfRElSfS9pbmNsdWRlIGVmbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9XZWJNZW1vcnlTYW1wbGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJhMzQ0YTFjMTA5
MzdjZjZkYWY0ZTUxM2YzMzgzMDc4MTZkZjFmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAKQEAgLTAsMCArMSwxOTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViTWVtb3J5U2FtcGxlci5oIgorCisjaWYgRU5BQkxFKE1FTU9SWV9TQU1QTEVSKQorCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NZW1v
cnlTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
SlNDOwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVj
dCBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIHsKKyAgICBzaXplX3QgdG90YWxQcm9ncmFtU2l6ZTsK
KyAgICBzaXplX3QgcmVzaWRlbnRTZXRTaXplOworICAgIHNpemVfdCBzaGFyZWRTaXplOworICAg
IHNpemVfdCB0ZXh0U2l6ZTsKKyAgICBzaXplX3QgbGlicmFyeVNpemU7CisgICAgc2l6ZV90IGRh
dGFTdGFja1NpemU7CisgICAgc2l6ZV90IGRpcnR5UGFnZVNpemU7Cit9OworCitjb25zdCBpbnQg
bWF4QnVmZmVyID0gMTI4OworY29uc3QgaW50IG1heFByb2Nlc3NQYXRoID0gMzU7CisKK2lubGlu
ZSBTdHJpbmcgZ2V0VG9rZW4oRklMRSogZmlsZSkKK3sKKyAgICBpZiAoIWZpbGUpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIGNoYXIgYnVmZmVyW21heEJ1ZmZlcl07CisgICAgbWVt
c2V0KGJ1ZmZlciwgMCwgbWF4QnVmZmVyKTsKKyAgICBmc2NhbmYoZmlsZSwgIiVzIiwgYnVmZmVy
KTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyKTsKK30KKworaW5saW5lIHZvaWQgYXBwZW5k
TWVtb3J5U3RhdHMoV2ViTWVtb3J5U3RhdGlzdGljcyYgd2ViS2l0TWVtb3J5U3RhdHMsIFN0cmlu
ZyBrZXksIHNpemVfdCB2YWx1ZSkKK3sKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChrZXkpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQodmFsdWUpOworfQor
Cit2b2lkIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8oV2ViTWVtb3J5U3RhdGlzdGljcyYgc3RhdGlj
cykKK3sKKyNpZiBPUyhMSU5VWCkKKyAgICBib29sIGZvdW5kS2V5TmFtZSA9IGZhbHNlOworICAg
IEZJTEUqIGZTeXN0ZW1NZW1vcnlTdGF0dXMgPSBmb3BlbigiL3Byb2MvbWVtaW5mbyIsICJyIik7
CisgICAgaWYgKGZTeXN0ZW1NZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgd2hpbGUgKCFmZW9mKGZT
eXN0ZW1NZW1vcnlTdGF0dXMpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyVG9rZW4gPSBnZXRU
b2tlbihmU3lzdGVtTWVtb3J5U3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdHJUb2tlbi5maW5k
KCc6JykgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9IHN0
clRva2VuLmxlZnQoc3RyVG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgICAgICBzdGF0
aWNzLmtleXMuYXBwZW5kKGtleU5hbWUpOworICAgICAgICAgICAgICAgIGZvdW5kS2V5TmFtZSA9
IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkgeworICAgICAgICAg
ICAgICAgIHN0YXRpY3MudmFsdWVzLmFwcGVuZChzdHJUb2tlbi50b0ludCgpKTsKKyAgICAgICAg
ICAgICAgICBmb3VuZEtleU5hbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBmY2xvc2UoZlN5c3RlbU1lbW9yeVN0YXR1cyk7CisgICAgfQorI2VuZGlmCit9CisK
K0FwcGxpY2F0aW9uTWVtb3J5U3RhdHMgc2FtcGxlQXBwbGljYXRpb25NYWxsb2MoKQoreworICAg
IEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBwbGljYXRpb25TdGF0czsKKyNpZiBPUyhMSU5VWCkK
KyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9j
ZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy8lZC9zdGF0bSIsIGdldHBpZCgpKTsKKyAg
ICBGSUxFKiBmTWVtb3J5U3RhdHVzID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAgaWYg
KGZNZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgZnNjYW5mKGZNZW1vcnlTdGF0dXMsICIlemQgJXpk
ICV6ZCAlemQgJXpkICV6ZCAlemQiLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRz
LnRvdGFsUHJvZ3JhbVNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMucmVz
aWRlbnRTZXRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLnNoYXJlZFNp
emUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUsCisgICAgICAg
ICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMubGlicmFyeVNpemUsCisgICAgICAgICAgICAgICAg
JmFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGlj
YXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKyAgICAgICAgZmNsb3NlKGZNZW1vcnlTdGF0dXMp
OworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBhcHBsaWNhdGlvblN0YXRzOworfQorCitTdHJp
bmcgV2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworI2lmIE9TKExJTlVY
KQorICAgIGNoYXIgcHJvY2Vzc1BhdGhbbWF4UHJvY2Vzc1BhdGhdOworICAgIHNucHJpbnRmKHBy
b2Nlc3NQYXRoLCBtYXhQcm9jZXNzUGF0aCwgIi9wcm9jLyVkL3N0YXR1cyIsIGdldHBpZCgpKTsK
KyAgICBGSUxFKiBmUHJvY2Vzc1N0YXR1cyA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAg
IGlmIChmUHJvY2Vzc1N0YXR1cykgeworICAgICAgICBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7
CisgICAgICAgIFN0cmluZyBwcm9jZXNzTmFtZSA9IGdldFRva2VuKGZQcm9jZXNzU3RhdHVzKTsK
KyAgICAgICAgZmNsb3NlKGZQcm9jZXNzU3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NO
YW1lOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworV2ViTWVtb3J5
U3RhdGlzdGljcyBXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQoKSBjb25zdAoreworICAg
IHNpemVfdCB0b3RhbEJ5dGVzSW5Vc2UgPSAwOworICAgIHNpemVfdCB0b3RhbEJ5dGVzQ29tbWl0
dGVkID0gMDsKKworICAgIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBwbGljYXRpb25TdGF0cyA9
IHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9jKCk7CisKKyAgICBXZWJNZW1vcnlTdGF0aXN0aWNzIHdl
YktpdE1lbW9yeVN0YXRzOworCisjaWYgVVNFKEpTQykKKyAgICBGYXN0TWFsbG9jU3RhdGlzdGlj
cyBmYXN0TWFsbG9jU3RhdGlzdGljcyA9IFdURjo6ZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKKyAg
ICBzaXplX3QgZmFzdE1hbGxvY0J5dGVzSW5Vc2UgPSBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21t
aXR0ZWRWTUJ5dGVzIC0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlczsKKyAgICBz
aXplX3QgZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29t
bWl0dGVkVk1CeXRlczsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZmFzdE1hbGxvY0J5dGVzSW5V
c2U7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQ7
CisKKyAgICBzaXplX3QganNjSGVhcEJ5dGVzSW5Vc2UgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNH
bG9iYWxEYXRhKCktPmhlYXAuc2l6ZSgpOworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNDb21taXR0
ZWQgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuY2FwYWNpdHkoKTsK
KyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0ganNjSGVhcEJ5dGVzSW5Vc2U7CisgICAgdG90YWxCeXRl
c0NvbW1pdHRlZCArPSBqc2NIZWFwQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBHbG9iYWxNZW1vcnlT
dGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOwor
ICAgIHRvdGFsQnl0ZXNJblVzZSArPSBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xv
YmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBnbG9i
YWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7Cisj
ZW5kaWYKKworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgpOworCisgICAgYXBwZW5kTWVt
b3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiVGltZXN0YW1wIiksIG5vdyk7CisK
KyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUb3RhbCBQ
cm9ncmFtIFNpemUiKSwgYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsKKyAgICBh
cHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJSU1MiKSwgYXBwbGlj
YXRpb25TdGF0cy5yZXNpZGVudFNldFNpemUpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktp
dE1lbW9yeVN0YXRzLCBTdHJpbmcoIlNoYXJlZCIpLCBhcHBsaWNhdGlvblN0YXRzLnNoYXJlZFNp
emUpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRl
eHQiKSwgYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMo
d2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiTGlicmFyeSIpLCBhcHBsaWNhdGlvblN0YXRzLmxp
YnJhcnlTaXplKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3Ry
aW5nKCJEYXRhL1N0YWNrIiksIGFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSk7CisgICAg
YXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiRGlydHkiKSwgYXBw
bGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworI2lmIFVTRShKU0MpCisgICAgYXBwZW5k
TWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiVG90YWwgTWVtb3J5IEluIFVz
ZSIpLCB0b3RhbEJ5dGVzSW5Vc2UpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9y
eVN0YXRzLCBTdHJpbmcoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSwgZmFzdE1hbGxvY0J5dGVz
SW5Vc2UpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmco
IkphdmFTY3JpcHQgSGVhcCBCeXRlcyIpLCBqc2NIZWFwQnl0ZXNJblVzZSk7CisKKyAgICBhcHBl
bmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUb3RhbCBDb21taXR0ZWQg
TWVtb3J5IiksIHRvdGFsQnl0ZXNDb21taXR0ZWQpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdl
YktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSwgZmFzdE1h
bGxvY0J5dGVzQ29tbWl0dGVkKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlT
dGF0cywgU3RyaW5nKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiKSwganNjSGVhcEJ5dGVzQ29tbWl0
dGVkKTsKKyAgICAKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3Ry
aW5nKCJKYXZhU2NyaXB0IFN0YWNrIEJ5dGVzIiksIGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0
ZXMpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkph
dmFTY3JpcHQgSklUIEJ5dGVzIiksIGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKTsKKyNlbmRp
ZgorCisgICAgc2FtcGxlU3lzdGVtTWVtb3J5SW5mbyh3ZWJLaXRNZW1vcnlTdGF0cyk7CisKKyAg
ICByZXR1cm4gd2ViS2l0TWVtb3J5U3RhdHM7Cit9CisKK3ZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6
c2VuZE1lbW9yeVByZXNzdXJlRXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwCmluZGV4IGNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFhZGUyNTNiMGQuLmViZDZi
MGNhMzYwNWIwZTgzOTA5ZWE3YjhhZWI2YjBlNTVlNjU4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNs
dWRlICJXS0ZpbmRPcHRpb25zLmgiCisjaW5jbHVkZSAiV0tOdW1iZXIuaCIKICNpbmNsdWRlICJX
S1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tVUkwuaCIK
QEAgLTczNSw2ICs3MzYsMTcgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X3NtYXJ0X2FkZChFdmFz
KiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBFd2tfQ29udGV4dCogY28KIAogICAgIF9ld2tf
dmlld19pbml0aWFsaXplKGV3a1ZpZXcsIGNvbnRleHQsIDApOwogCisjaWYgRU5BQkxFKE1FTU9S
WV9TQU1QTEVSKQorICAgIHN0YXRpYyBib29sIG1lbW9yeVNhbXBsZXIgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3QgY2hhciBlbnZpcm9uTWVtb3J5U2FtcGxlcltdID0gIk1FTU9SWV9TQU1QTEVS
IjsKKworICAgIGlmICghbWVtb3J5U2FtcGxlciAmJiBnZXRlbnYoZW52aXJvbk1lbW9yeVNhbXBs
ZXIpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBpbnRlcnZhbChBZG9wdFdL
LCBXS0RvdWJsZUNyZWF0ZSgwLjApKTsKKyAgICAgICAgV0tDb250ZXh0U3RhcnRNZW1vcnlTYW1w
bGVyKGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoY29udGV4dCksIGludGVydmFsLmdldCgpKTsK
KyAgICAgICAgbWVtb3J5U2FtcGxlciA9IHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1
cm4gZXdrVmlldzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21h
a2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCAyNWJmNTk3ZDkzZGJmODU5
ZTM1OGE1NGY0NDc5ZmE2YTkxNDRlNTY4Li5mNTRjODgxNGNiNmI2ZDlhNmY2ODYwMTE0MjZjY2Vk
ODYwMmQ0OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzgsNiArNzgsNyBAQCBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0Jf
QlVJTERFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MSU5L
X1BSRUZFVENIIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01F
RElBX0NBUFRVUkUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TUVNT1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfTUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX05FVFdPUktfSU5GTyBPTikKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA5NzNlNjA4NzI4NjMzYmZlNjZjNmUxOWQzYWE5MGUxMGQ2ZTNkNmYwLi44Njhh
YjA2MGYxMDZhNjFiMzg0MmQ5MGE2YTNmYTRiZjNlNjY2NjJlIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMjcgIEp1bmdKaWsg
TGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXVtDTUFL
RV0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlIG9uLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6CisKIDIwMTItMDgtMjMg
IEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4
XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRGlzYWJsZSBjb21waWxhdGlvbiBvZiBXZWJET00gZmls
ZSBmb3Igbm93LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160897</attachid>
            <date>2012-08-27 22:05:54 -0700</date>
            <delta_ts>2012-08-27 23:51:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120828140545.patch</filename>
            <type>text/plain</type>
            <size>15187</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Nzg0YjI0ZWZlM2YzODJhMjk2ZWRlOTViNDM3YWUwNmMzN2I1ZWQzLi4wNjU0Y2UwMTcxOTYxZGU4
MGRhMWM4YWYyMTE5OTg5NTgyOGM2ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yNyAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBv
cHRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Yk1lbW9yeVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1lbW9yeSB1
c2FnZSBpbiBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisKIDIwMTItMDgtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdHJ1Y3R1cmUgY2hlY2sgaG9pc3Rpbmcgc2hvdWxkIGFic3RhaW4gaWYgdGhlIE9T
UiBlbnRyeSdzIG11c3QtaGFuZGxlIHZhbHVlIGZvciB0aGUgcmVzcGVjdGl2ZSB2YXJpYWJsZSBo
YXMgYSBkaWZmZXJlbnQgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWRkNTY4OWVkM2I0NGM2NmUx
MThlMzUyMmVjMTUzYmRiZjY0MjA2Ny4uY2FkMDlkODZhZDIwM2U3YmQyMzRmZDdkOTFjNzg1NjY4
ZGI0MmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA4LTI3ICBKdW5nSmlr
IExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRk
IFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSB0byBFRkwgcG9y
dC4gV2ViTWVtb3J5U2FtcGxlciByZWNvcmRzIG1lbW9yeSB1c2FnZSBvZgorICAgICAgICBXZWJQ
cm9jZXNzIGFuZCBVSSBQcm9jZXNzIGFuZCBhbHNvIGl0IHJlY29yZHMgYXBwbGljYXRpb24gbWVt
b3J5IHN0YXR1cyBpbiByZWFsIHRpbWUuCisgICAgICAgIEluY2x1ZGVkIGl0ZW1zIG9uIHRoZSBy
ZXN1bHQgYXJlIEpJVCwgSlMgaGVhcCwgZmFzdG1hbGxvYyBieXRlcyBhbmQKKyAgICAgICAgYXBw
bGljYXRpb24gbWVtb3J5IGluZm8gZnJvbSAvcHJvYy9wcm9jZXNzX2lkL3N0YXRtLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJNZW1vcnlT
YW1wbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQXBwbGlj
YXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6OmdldFRva2VuKToKKyAgICAgICAg
KFdlYktpdDo6YXBwZW5kTWVtb3J5U3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpzYW1wbGVTeXN0
ZW1NZW1vcnlJbmZvKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlQXBwbGljYXRpb25NYWxsb2Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpwcm9jZXNzTmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdf
aW5pdGlhbGl6ZSk6CisKIDIwMTItMDgtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBGb3JjZSBSZXBhaW50IHdvcmsgd2l0aCB0aWxlZCBi
YWNraW5nIHN0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1NjY4ZS4uNzhhM2ExZjE3YmU2OTcy
MzBiMTQ2OGFkYTExYmRiMGIwYWE3YWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMSw2ICsxLDggQEAKIExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAogICAgIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorCisgICAgcnVudGltZS9NZW1vcnlTdGF0aXN0aWNz
LmNwcAogKQogCiBMSVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEyZDZj
OGVhNi4uOWE0OGM5YTM2MDEyNmQ1ZjFiNDU2NWVlN2Q4YzVlOWY2MGUzOTI0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTIxLDYgKzIxLDkgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKKyAg
ICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKworICAgIFNoYXJlZC9lZmwvV2ViTWVtb3J5
U2FtcGxlckVmbC5jcHAKICAgICBTaGFyZWQvZWZsL0xheWVyVHJlZUNvbnRleHRFZmwuY3BwCiAg
ICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcAogICAgIFNoYXJlZC9l
ZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MjY1YzY1ZDdlYmFj
YTgyODdjNjk2YzcxZmI3Y2UxMTRhYzUyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCkBAIC0wLDAgKzEsMjAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYk1lbW9yeVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5
U3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3Qg
QXBwbGljYXRpb25NZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRvdGFsUHJvZ3JhbVNpemU7Cisg
ICAgc2l6ZV90IHJlc2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qgc2hhcmVkU2l6ZTsKKyAgICBz
aXplX3QgdGV4dFNpemU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXplOworICAgIHNpemVfdCBkYXRh
U3RhY2tTaXplOworICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOworfTsKKworc3RhdGljIGNvbnN0
IGludCBtYXhCdWZmZXIgPSAxMjg7CitzdGF0aWMgY29uc3QgaW50IG1heFByb2Nlc3NQYXRoID0g
MzU7CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGdldFRva2VuKEZJTEUqIGZpbGUpCit7CisgICAg
aWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1ZmZlcltt
YXhCdWZmZXJdOworICAgIG1lbXNldChidWZmZXIsIDAsIG1heEJ1ZmZlcik7CisgICAgZnNjYW5m
KGZpbGUsICIlcyIsIGJ1ZmZlcik7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRNZW1vcnlTdGF0cyhXZWJNZW1vcnlTdGF0aXN0aWNz
JiB3ZWJLaXRNZW1vcnlTdGF0cywgY29uc3QgU3RyaW5nJiBrZXksIHNpemVfdCB2YWx1ZSkKK3sK
KyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChrZXkpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQodmFsdWUpOworfQorCitzdGF0aWMgdm9pZCBzYW1wbGVTeXN0
ZW1NZW1vcnlJbmZvKFdlYk1lbW9yeVN0YXRpc3RpY3MmIHN0YXRpY3MpCit7CisjaWYgT1MoTElO
VVgpCisgICAgYm9vbCBmb3VuZEtleU5hbWUgPSBmYWxzZTsKKyAgICBGSUxFKiBmU3lzdGVtTWVt
b3J5U3RhdHVzID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOworICAgIGlmIChmU3lzdGVt
TWVtb3J5U3RhdHVzKSB7CisgICAgICAgIHdoaWxlICghZmVvZihmU3lzdGVtTWVtb3J5U3RhdHVz
KSkgeworICAgICAgICAgICAgU3RyaW5nIHN0clRva2VuID0gZ2V0VG9rZW4oZlN5c3RlbU1lbW9y
eVN0YXR1cyk7CisgICAgICAgICAgICBpZiAoc3RyVG9rZW4uZmluZCgnOicpICE9IG5vdEZvdW5k
KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGtleU5hbWUgPSBzdHJUb2tlbi5sZWZ0KHN0clRv
a2VuLmxlbmd0aCgpIC0gMSk7CisgICAgICAgICAgICAgICAgc3RhdGljcy5rZXlzLmFwcGVuZChr
ZXlOYW1lKTsKKyAgICAgICAgICAgICAgICBmb3VuZEtleU5hbWUgPSB0cnVlOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChmb3VuZEtleU5hbWUpIHsKKyAgICAgICAgICAgICAgICBzdGF0aWNzLnZh
bHVlcy5hcHBlbmQoc3RyVG9rZW4udG9JbnQoKSk7CisgICAgICAgICAgICAgICAgZm91bmRLZXlO
YW1lID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZmNsb3NlKGZT
eXN0ZW1NZW1vcnlTdGF0dXMpOworICAgIH0KKyNlbmRpZgorfQorCitzdGF0aWMgQXBwbGljYXRp
b25NZW1vcnlTdGF0cyBzYW1wbGVBcHBsaWNhdGlvbk1hbGxvYygpCit7CisgICAgQXBwbGljYXRp
b25NZW1vcnlTdGF0cyBhcHBsaWNhdGlvblN0YXRzOworI2lmIE9TKExJTlVYKQorICAgIGNoYXIg
cHJvY2Vzc1BhdGhbbWF4UHJvY2Vzc1BhdGhdOworICAgIHNucHJpbnRmKHByb2Nlc3NQYXRoLCBt
YXhQcm9jZXNzUGF0aCwgIi9wcm9jLyVkL3N0YXRtIiwgZ2V0cGlkKCkpOworICAgIEZJTEUqIGZN
ZW1vcnlTdGF0dXMgPSBmb3Blbihwcm9jZXNzUGF0aCwgInIiKTsKKworICAgIGlmIChmTWVtb3J5
U3RhdHVzKSB7CisgICAgICAgIGZzY2FuZihmTWVtb3J5U3RhdHVzLCAiJXpkICV6ZCAlemQgJXpk
ICV6ZCAlemQgJXpkIiwKKyAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy50b3RhbFBy
b2dyYW1TaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50U2V0
U2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25TdGF0cy5zaGFyZWRTaXplLAorICAg
ICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLnRleHRTaXplLAorICAgICAgICAgICAgICAg
ICZhcHBsaWNhdGlvblN0YXRzLmxpYnJhcnlTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNh
dGlvblN0YXRzLmRhdGFTdGFja1NpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3Rh
dHMuZGlydHlQYWdlU2l6ZSk7CisgICAgICAgIGZjbG9zZShmTWVtb3J5U3RhdHVzKTsKKyAgICB9
CisjZW5kaWYKKworICAgIHJldHVybiBhcHBsaWNhdGlvblN0YXRzOworfQorCitTdHJpbmcgV2Vi
TWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworI2lmIE9TKExJTlVYKQorICAg
IGNoYXIgcHJvY2Vzc1BhdGhbbWF4UHJvY2Vzc1BhdGhdOworICAgIHNucHJpbnRmKHByb2Nlc3NQ
YXRoLCBtYXhQcm9jZXNzUGF0aCwgIi9wcm9jLyVkL3N0YXR1cyIsIGdldHBpZCgpKTsKKyAgICBG
SUxFKiBmUHJvY2Vzc1N0YXR1cyA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAgIGlmIChm
UHJvY2Vzc1N0YXR1cykgeworICAgICAgICBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7CisgICAg
ICAgIFN0cmluZyBwcm9jZXNzTmFtZSA9IGdldFRva2VuKGZQcm9jZXNzU3RhdHVzKTsKKyAgICAg
ICAgZmNsb3NlKGZQcm9jZXNzU3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NOYW1lOwor
ICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitXZWJNZW1vcnlTdGF0
aXN0aWNzIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCgpIGNvbnN0Cit7CisgICAgc2l6
ZV90IHRvdGFsQnl0ZXNJblVzZSA9IDA7CisgICAgc2l6ZV90IHRvdGFsQnl0ZXNDb21taXR0ZWQg
PSAwOworCisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBsaWNhdGlvblN0YXRzID0gc2Ft
cGxlQXBwbGljYXRpb25NYWxsb2MoKTsKKworICAgIFdlYk1lbW9yeVN0YXRpc3RpY3Mgd2ViS2l0
TWVtb3J5U3RhdHM7CisKKyNpZiBVU0UoSlNDKQorICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZh
c3RNYWxsb2NTdGF0aXN0aWNzID0gV1RGOjpmYXN0TWFsbG9jU3RhdGlzdGljcygpOworICAgIHNp
emVfdCBmYXN0TWFsbG9jQnl0ZXNJblVzZSA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRl
ZFZNQnl0ZXMgLSBmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzOworICAgIHNpemVf
dCBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQgPSBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0
ZWRWTUJ5dGVzOworICAgIHRvdGFsQnl0ZXNJblVzZSArPSBmYXN0TWFsbG9jQnl0ZXNJblVzZTsK
KyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZDsKKwor
ICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNJblVzZSA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2Jh
bERhdGEoKS0+aGVhcC5zaXplKCk7CisgICAgc2l6ZV90IGpzY0hlYXBCeXRlc0NvbW1pdHRlZCA9
IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5jYXBhY2l0eSgpOworICAg
IHRvdGFsQnl0ZXNJblVzZSArPSBqc2NIZWFwQnl0ZXNJblVzZTsKKyAgICB0b3RhbEJ5dGVzQ29t
bWl0dGVkICs9IGpzY0hlYXBCeXRlc0NvbW1pdHRlZDsKKworICAgIEdsb2JhbE1lbW9yeVN0YXRp
c3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CisgICAg
dG90YWxCeXRlc0luVXNlICs9IGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMgKyBnbG9iYWxN
ZW1vcnlTdGF0cy5KSVRCeXRlczsKKyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGdsb2JhbE1l
bW9yeVN0YXRzLnN0YWNrQnl0ZXMgKyBnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlczsKKyNlbmRp
ZgorCisgICAgZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1lKCk7CisKKyAgICBhcHBlbmRNZW1vcnlT
dGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUaW1lc3RhbXAiKSwgbm93KTsKKworICAg
IGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRvdGFsIFByb2dy
YW0gU2l6ZSIpLCBhcHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUpOworICAgIGFwcGVu
ZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlJTUyIpLCBhcHBsaWNhdGlv
blN0YXRzLnJlc2lkZW50U2V0U2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVt
b3J5U3RhdHMsIFN0cmluZygiU2hhcmVkIiksIGFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSk7
CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiVGV4dCIp
LCBhcHBsaWNhdGlvblN0YXRzLnRleHRTaXplKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJL
aXRNZW1vcnlTdGF0cywgU3RyaW5nKCJMaWJyYXJ5IiksIGFwcGxpY2F0aW9uU3RhdHMubGlicmFy
eVNpemUpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmco
IkRhdGEvU3RhY2siKSwgYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tTaXplKTsKKyAgICBhcHBl
bmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJEaXJ0eSIpLCBhcHBsaWNh
dGlvblN0YXRzLmRpcnR5UGFnZVNpemUpOworCisjaWYgVVNFKEpTQykKKyAgICBhcHBlbmRNZW1v
cnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUb3RhbCBNZW1vcnkgSW4gVXNlIiks
IHRvdGFsQnl0ZXNJblVzZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3Rh
dHMsIFN0cmluZygiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpLCBmYXN0TWFsbG9jQnl0ZXNJblVz
ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiSmF2
YVNjcmlwdCBIZWFwIEJ5dGVzIiksIGpzY0hlYXBCeXRlc0luVXNlKTsKKworICAgIGFwcGVuZE1l
bW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRvdGFsIENvbW1pdHRlZCBNZW1v
cnkiKSwgdG90YWxCeXRlc0NvbW1pdHRlZCk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0
TWVtb3J5U3RhdHMsIFN0cmluZygiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpLCBmYXN0TWFsbG9j
Qnl0ZXNDb21taXR0ZWQpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRz
LCBTdHJpbmcoIkphdmFTY3JpcHQgSGVhcCBCeXRlcyIpLCBqc2NIZWFwQnl0ZXNDb21taXR0ZWQp
OworICAgIAorICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmco
IkphdmFTY3JpcHQgU3RhY2sgQnl0ZXMiKSwgZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyk7
CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiSmF2YVNj
cmlwdCBKSVQgQnl0ZXMiKSwgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOworI2VuZGlmCisK
KyAgICBzYW1wbGVTeXN0ZW1NZW1vcnlJbmZvKHdlYktpdE1lbW9yeVN0YXRzKTsKKworICAgIHJl
dHVybiB3ZWJLaXRNZW1vcnlTdGF0czsKK30KKwordm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzZW5k
TWVtb3J5UHJlc3N1cmVFdmVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
aW5kZXggY2U3ZjdiNDU0OTQ2M2MxMGZiYWNjYjc1NzNhM2JlYWFkZTI1M2IwZC4uYjBkZTliMGZi
Mjg0NGQ0OGY1YmRiYzQwNjFkOWQ0ZTQwZTk0NmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUg
IldLRmluZE9wdGlvbnMuaCIKKyNpbmNsdWRlICJXS051bWJlci5oIgogI2luY2x1ZGUgIldLUmV0
YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1VSTC5oIgpAQCAt
NjcxLDYgKzY3MiwxNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX0NvbnRleHQqIGNvbnRleHQsIFdLUAogICAgIHByaXYtPnZpZXdw
b3J0SGFuZGxlciA9IEVmbFZpZXdwb3J0SGFuZGxlcjo6Y3JlYXRlKHByaXYtPnBhZ2VDbGllbnQu
Z2V0KCkpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVNT1JZX1NBTVBMRVIpCisgICAgc3RhdGlj
IGJvb2wgbWVtb3J5U2FtcGxlciA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGVudmly
b25NZW1vcnlTYW1wbGVyW10gPSAiTUVNT1JZX1NBTVBMRVIiOworCisgICAgaWYgKCFtZW1vcnlT
YW1wbGVyICYmIGdldGVudihlbnZpcm9uTWVtb3J5U2FtcGxlcikpIHsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tEb3VibGVSZWY+IGludGVydmFsKEFkb3B0V0ssIFdLRG91YmxlQ3JlYXRlKDAuMCkp
OworICAgICAgICBXS0NvbnRleHRTdGFydE1lbW9yeVNhbXBsZXIoZXdrX2NvbnRleHRfV0tDb250
ZXh0X2dldChjb250ZXh0KSwgaW50ZXJ2YWwuZ2V0KCkpOworICAgICAgICBtZW1vcnlTYW1wbGVy
ID0gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIFdLUGFnZVJlZiB3a1BhZ2UgPSB0b0FQSShw
cml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpOwogICAgIGV3a192aWV3X2ZpbmRfY2xpZW50X2F0dGFj
aCh3a1BhZ2UsIGV3a1ZpZXcpOwogICAgIGV3a192aWV3X2Zvcm1fY2xpZW50X2F0dGFjaCh3a1Bh
Z2UsIGV3a1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA1NzlkNTk5MDcwZTAxYzU1Y2Ew
NTlmMWMyZjg0ZjUxZTZmNGU1ZmE2Li44Njc1YmU4ZWQ2OWY1NmQ4M2RlMmNiYmNiODliNzkwYzM4
YjU0NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzgsNiArNzgsNyBAQCBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJ
TERFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MSU5LX1BS
RUZFVENIIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElB
X0NBUFRVUkUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVN
T1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05B
VklHQVRPUl9DT05URU5UX1VUSUxTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlCmluZGV4IDQzOTZkYTJhMWIwNGEyZmRmZTU3ZTg3NTc0NWVmODNmNGUwNDIyZmEuLmU0MzA5
NmE1MGE3ZTkyODkxMjg0ZGRkMGU1ODUwMTM2ZWU1YzRhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVy
ZXMuY21ha2UKQEAgLTc3LDYgKzc3LDcgQEAgTUFDUk8gKFdFQktJVF9PUFRJT05fQkVHSU4pCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NPVVJDRSAiVG9nZ2xlIE1lZGlh
IFNvdXJjZSBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MgIlRvZ2dsZSBNZWRpYSBTdGF0aXN0aWNzIHN1cHBvcnQiIE9GRikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RSRUFNICJUb2dnbGUgTWVkaWEg
U3RyZWFtIEFQSSBzdXBwb3J0IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X01FTU9SWV9TQU1QTEVSICJUb2dnbGUgTWVtb3J5IFNhbXBsZXIgc3VwcG9ydCIgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRVRFUl9FTEVNRU5UICJUb2dnbGUgTWV0ZXIg
VGFnIHN1cHBvcnQiIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NSFRNTCAi
VG9nZ2xlIE1IVE1MIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfTUlDUk9EQVRBICJUb2dnbGUgTWljcm9kYXRhIHN1cHBvcnQiIE9GRikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UK
aW5kZXggODg1NTVmYjUyY2Q3OGM4YjdmMDI4MGFiZDhhODcwNzNiMDY3ZjcyZi4uMDFjMTk0ZjY1
YzQxYjMxZWJiN2E1Njg0NjQ5Njc4MDI2M2ZmM2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
Y29uZmlnLmguY21ha2UKKysrIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKQEAgLTY3LDYg
KzY3LDcgQEAKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NQVRITUwKICNjbWFrZWRlZmluZTAxIEVO
QUJMRV9NRURJQV9DQVBUVVJFCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVESUFfU1RSRUFNCisj
Y21ha2VkZWZpbmUwMSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIKICNjbWFrZWRlZmluZTAxIEVOQUJM
RV9NRVRFUl9FTEVNRU5UCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUlDUk9EQVRBCiAjY21ha2Vk
ZWZpbmUwMSBFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggZWUyODNmMjMwOGNlYTc4N2MwYzkyNGZlNmRlMzEyMDFlM2I4ZGI2
OS4uZmM4ZDY4ZjYxOWE2ZjA5ZTNiN2UzODA3NDYyZjFhNGIxY2Y3YjQyMCAxMDA2NDQKLS0tIGEv
Q2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTI3ICBK
dW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dL
Ml1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVy
ZSBvbiBpbiBFRkwgcG9ydC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZToKKwogMjAxMi0wOC0yNyAgUm9iIEJ1aXMg
IDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSByZW1vdmUgLWZuby1ydHRp
IG9wdGlvbiBpbiBDTUFLRV9DX0ZMQUdTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160915</attachid>
            <date>2012-08-27 23:51:23 -0700</date>
            <delta_ts>2012-08-28 06:48:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120828155114.patch</filename>
            <type>text/plain</type>
            <size>15150</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Nzg0YjI0ZWZlM2YzODJhMjk2ZWRlOTViNDM3YWUwNmMzN2I1ZWQzLi4wNjU0Y2UwMTcxOTYxZGU4
MGRhMWM4YWYyMTE5OTg5NTgyOGM2ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yNyAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBv
cHRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Yk1lbW9yeVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1lbW9yeSB1
c2FnZSBpbiBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisKIDIwMTItMDgtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdHJ1Y3R1cmUgY2hlY2sgaG9pc3Rpbmcgc2hvdWxkIGFic3RhaW4gaWYgdGhlIE9T
UiBlbnRyeSdzIG11c3QtaGFuZGxlIHZhbHVlIGZvciB0aGUgcmVzcGVjdGl2ZSB2YXJpYWJsZSBo
YXMgYSBkaWZmZXJlbnQgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWRkNTY4OWVkM2I0NGM2NmUx
MThlMzUyMmVjMTUzYmRiZjY0MjA2Ny4uY2FkMDlkODZhZDIwM2U3YmQyMzRmZDdkOTFjNzg1NjY4
ZGI0MmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA4LTI3ICBKdW5nSmlr
IExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRk
IFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSB0byBFRkwgcG9y
dC4gV2ViTWVtb3J5U2FtcGxlciByZWNvcmRzIG1lbW9yeSB1c2FnZSBvZgorICAgICAgICBXZWJQ
cm9jZXNzIGFuZCBVSSBQcm9jZXNzIGFuZCBhbHNvIGl0IHJlY29yZHMgYXBwbGljYXRpb24gbWVt
b3J5IHN0YXR1cyBpbiByZWFsIHRpbWUuCisgICAgICAgIEluY2x1ZGVkIGl0ZW1zIG9uIHRoZSBy
ZXN1bHQgYXJlIEpJVCwgSlMgaGVhcCwgZmFzdG1hbGxvYyBieXRlcyBhbmQKKyAgICAgICAgYXBw
bGljYXRpb24gbWVtb3J5IGluZm8gZnJvbSAvcHJvYy9wcm9jZXNzX2lkL3N0YXRtLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJNZW1vcnlT
YW1wbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQXBwbGlj
YXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6OmdldFRva2VuKToKKyAgICAgICAg
KFdlYktpdDo6YXBwZW5kTWVtb3J5U3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpzYW1wbGVTeXN0
ZW1NZW1vcnlJbmZvKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlQXBwbGljYXRpb25NYWxsb2Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpwcm9jZXNzTmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdf
aW5pdGlhbGl6ZSk6CisKIDIwMTItMDgtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBGb3JjZSBSZXBhaW50IHdvcmsgd2l0aCB0aWxlZCBi
YWNraW5nIHN0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1NjY4ZS4uNzhhM2ExZjE3YmU2OTcy
MzBiMTQ2OGFkYTExYmRiMGIwYWE3YWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMSw2ICsxLDggQEAKIExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAogICAgIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorCisgICAgcnVudGltZS9NZW1vcnlTdGF0aXN0aWNz
LmNwcAogKQogCiBMSVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJlMDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEyZDZj
OGVhNi4uOWE0OGM5YTM2MDEyNmQ1ZjFiNDU2NWVlN2Q4YzVlOWY2MGUzOTI0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTIxLDYgKzIxLDkgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKKyAg
ICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKworICAgIFNoYXJlZC9lZmwvV2ViTWVtb3J5
U2FtcGxlckVmbC5jcHAKICAgICBTaGFyZWQvZWZsL0xheWVyVHJlZUNvbnRleHRFZmwuY3BwCiAg
ICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcAogICAgIFNoYXJlZC9l
ZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvV2ViTWVtb3J5U2FtcGxlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzZDk5ODZlYzZkNTc1
NWYwMjY3MjczNmIxZDJiNjQzNjMyNzUxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL1dlYk1lbW9yeVNhbXBsZXJFZmwuY3BwCkBAIC0wLDAgKzEsMjAzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYk1lbW9yeVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5
U3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3Qg
QXBwbGljYXRpb25NZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRvdGFsUHJvZ3JhbVNpemU7Cisg
ICAgc2l6ZV90IHJlc2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qgc2hhcmVkU2l6ZTsKKyAgICBz
aXplX3QgdGV4dFNpemU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXplOworICAgIHNpemVfdCBkYXRh
U3RhY2tTaXplOworICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOworfTsKKworc3RhdGljIGNvbnN0
IGludCBtYXhCdWZmZXIgPSAxMjg7CitzdGF0aWMgY29uc3QgaW50IG1heFByb2Nlc3NQYXRoID0g
MzU7CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGdldFRva2VuKEZJTEUqIGZpbGUpCit7CisgICAg
aWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1ZmZlcltt
YXhCdWZmZXJdOworICAgIG1lbXNldChidWZmZXIsIDAsIG1heEJ1ZmZlcik7CisgICAgZnNjYW5m
KGZpbGUsICIlcyIsIGJ1ZmZlcik7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRNZW1vcnlTdGF0cyhXZWJNZW1vcnlTdGF0aXN0aWNz
JiB3ZWJLaXRNZW1vcnlTdGF0cywgY29uc3QgU3RyaW5nJiBrZXksIHNpemVfdCB2YWx1ZSkKK3sK
KyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChrZXkpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQodmFsdWUpOworfQorCitzdGF0aWMgdm9pZCBzYW1wbGVTeXN0
ZW1NZW1vcnlJbmZvKFdlYk1lbW9yeVN0YXRpc3RpY3MmIHN0YXRpY3MpCit7CisjaWYgT1MoTElO
VVgpCisgICAgYm9vbCBmb3VuZEtleU5hbWUgPSBmYWxzZTsKKyAgICBGSUxFKiBmU3lzdGVtTWVt
b3J5U3RhdHVzID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOworICAgIGlmICghZlN5c3Rl
bU1lbW9yeVN0YXR1cykKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFmZW9mKGZTeXN0
ZW1NZW1vcnlTdGF0dXMpKSB7CisgICAgICAgIFN0cmluZyBzdHJUb2tlbiA9IGdldFRva2VuKGZT
eXN0ZW1NZW1vcnlTdGF0dXMpOworICAgICAgICBpZiAoc3RyVG9rZW4uZmluZCgnOicpICE9IG5v
dEZvdW5kKSB7CisgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9IHN0clRva2VuLmxlZnQoc3Ry
VG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgIHN0YXRpY3Mua2V5cy5hcHBlbmQoa2V5
TmFtZSk7CisgICAgICAgICAgICBmb3VuZEtleU5hbWUgPSB0cnVlOworICAgICAgICB9IGVsc2Ug
aWYgKGZvdW5kS2V5TmFtZSkgeworICAgICAgICAgICAgc3RhdGljcy52YWx1ZXMuYXBwZW5kKHN0
clRva2VuLnRvSW50KCkpOworICAgICAgICAgICAgZm91bmRLZXlOYW1lID0gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZmNsb3NlKGZTeXN0ZW1NZW1vcnlTdGF0dXMpOworI2VuZGlmCit9
CisKK3N0YXRpYyBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIHNhbXBsZUFwcGxpY2F0aW9uTWFsbG9j
KCkKK3sKKyAgICBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHM7CisjaWYg
T1MoTElOVVgpCisgICAgY2hhciBwcm9jZXNzUGF0aFttYXhQcm9jZXNzUGF0aF07CisgICAgc25w
cmludGYocHJvY2Vzc1BhdGgsIG1heFByb2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3RhdG0iLCBnZXRw
aWQoKSk7CisgICAgRklMRSogZk1lbW9yeVN0YXR1cyA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIp
OworCisgICAgaWYgKGZNZW1vcnlTdGF0dXMpIHsKKyAgICAgICAgZnNjYW5mKGZNZW1vcnlTdGF0
dXMsICIlemQgJXpkICV6ZCAlemQgJXpkICV6ZCAlemQiLAorICAgICAgICAgICAgICAgICZhcHBs
aWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0
aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0
YXRzLnNoYXJlZFNpemUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMudGV4dFNp
emUsCisgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMubGlicmFyeVNpemUsCisgICAg
ICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSwKKyAgICAgICAgICAg
ICAgICAmYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKyAgICAgICAgZmNsb3NlKGZN
ZW1vcnlTdGF0dXMpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGFwcGxpY2F0aW9uU3Rh
dHM7Cit9CisKK1N0cmluZyBXZWJNZW1vcnlTYW1wbGVyOjpwcm9jZXNzTmFtZSgpIGNvbnN0Cit7
CisjaWYgT1MoTElOVVgpCisgICAgY2hhciBwcm9jZXNzUGF0aFttYXhQcm9jZXNzUGF0aF07Cisg
ICAgc25wcmludGYocHJvY2Vzc1BhdGgsIG1heFByb2Nlc3NQYXRoLCAiL3Byb2MvJWQvc3RhdHVz
IiwgZ2V0cGlkKCkpOworICAgIEZJTEUqIGZQcm9jZXNzU3RhdHVzID0gZm9wZW4ocHJvY2Vzc1Bh
dGgsICJyIik7CisgICAgaWYgKGZQcm9jZXNzU3RhdHVzKSB7CisgICAgICAgIGdldFRva2VuKGZQ
cm9jZXNzU3RhdHVzKTsKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NOYW1lID0gZ2V0VG9rZW4oZlBy
b2Nlc3NTdGF0dXMpOworICAgICAgICBmY2xvc2UoZlByb2Nlc3NTdGF0dXMpOworICAgICAgICBy
ZXR1cm4gcHJvY2Vzc05hbWU7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1dlYk1lbW9yeVN0YXRpc3RpY3MgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0
KCkgY29uc3QKK3sKKyAgICBzaXplX3QgdG90YWxCeXRlc0luVXNlID0gMDsKKyAgICBzaXplX3Qg
dG90YWxCeXRlc0NvbW1pdHRlZCA9IDA7CisKKyAgICBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIGFw
cGxpY2F0aW9uU3RhdHMgPSBzYW1wbGVBcHBsaWNhdGlvbk1hbGxvYygpOworCisgICAgV2ViTWVt
b3J5U3RhdGlzdGljcyB3ZWJLaXRNZW1vcnlTdGF0czsKKworI2lmIFVTRShKU0MpCisgICAgRmFz
dE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NT
dGF0aXN0aWNzKCk7CisgICAgc2l6ZV90IGZhc3RNYWxsb2NCeXRlc0luVXNlID0gZmFzdE1hbGxv
Y1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcyAtIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVM
aXN0Qnl0ZXM7CisgICAgc2l6ZV90IGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxs
b2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXM7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGZh
c3RNYWxsb2NCeXRlc0luVXNlOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxv
Y0J5dGVzQ29tbWl0dGVkOworCisgICAgc2l6ZV90IGpzY0hlYXBCeXRlc0luVXNlID0gSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLnNpemUoKTsKKyAgICBzaXplX3QganNj
SGVhcEJ5dGVzQ29tbWl0dGVkID0gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5o
ZWFwLmNhcGFjaXR5KCk7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGpzY0hlYXBCeXRlc0luVXNl
OworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0ganNjSGVhcEJ5dGVzQ29tbWl0dGVkOworCisg
ICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9y
eVN0YXRpc3RpY3MoKTsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZ2xvYmFsTWVtb3J5U3RhdHMu
c3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzOworICAgIHRvdGFsQnl0ZXND
b21taXR0ZWQgKz0gZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0
YXRzLkpJVEJ5dGVzOworI2VuZGlmCisKKyAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsK
KworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRpbWVz
dGFtcCIpLCBub3cpOworCisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMs
IFN0cmluZygiVG90YWwgUHJvZ3JhbSBTaXplIiksIGFwcGxpY2F0aW9uU3RhdHMudG90YWxQcm9n
cmFtU2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmlu
ZygiUlNTIiksIGFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICBhcHBlbmRN
ZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJTaGFyZWQiKSwgYXBwbGljYXRp
b25TdGF0cy5zaGFyZWRTaXplKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlT
dGF0cywgU3RyaW5nKCJUZXh0IiksIGFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUpOworICAgIGFw
cGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkxpYnJhcnkiKSwgYXBw
bGljYXRpb25TdGF0cy5saWJyYXJ5U2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0
TWVtb3J5U3RhdHMsIFN0cmluZygiRGF0YS9TdGFjayIpLCBhcHBsaWNhdGlvblN0YXRzLmRhdGFT
dGFja1NpemUpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJp
bmcoIkRpcnR5IiksIGFwcGxpY2F0aW9uU3RhdHMuZGlydHlQYWdlU2l6ZSk7CisKKyNpZiBVU0Uo
SlNDKQorICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRv
dGFsIE1lbW9yeSBJbiBVc2UiKSwgdG90YWxCeXRlc0luVXNlKTsKKyAgICBhcHBlbmRNZW1vcnlT
dGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIiks
IGZhc3RNYWxsb2NCeXRlc0luVXNlKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1v
cnlTdGF0cywgU3RyaW5nKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiKSwganNjSGVhcEJ5dGVzSW5V
c2UpOworCisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygi
VG90YWwgQ29tbWl0dGVkIE1lbW9yeSIpLCB0b3RhbEJ5dGVzQ29tbWl0dGVkKTsKKyAgICBhcHBl
bmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJGYXN0IE1hbGxvYyBab25l
IEJ5dGVzIiksIGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZCk7CisgICAgYXBwZW5kTWVtb3J5U3Rh
dHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIiksIGpz
Y0hlYXBCeXRlc0NvbW1pdHRlZCk7CisgICAgCisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0
TWVtb3J5U3RhdHMsIFN0cmluZygiSmF2YVNjcmlwdCBTdGFjayBCeXRlcyIpLCBnbG9iYWxNZW1v
cnlTdGF0cy5zdGFja0J5dGVzKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlT
dGF0cywgU3RyaW5nKCJKYXZhU2NyaXB0IEpJVCBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5K
SVRCeXRlcyk7CisjZW5kaWYKKworICAgIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8od2ViS2l0TWVt
b3J5U3RhdHMpOworCisgICAgcmV0dXJuIHdlYktpdE1lbW9yeVN0YXRzOworfQorCit2b2lkIFdl
Yk1lbW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBjZTdmN2I0NTQ5NDYzYzEwZmJhY2NiNzU3M2EzYmVh
YWRlMjUzYjBkLi5iMGRlOWIwZmIyODQ0ZDQ4ZjViZGJjNDA2MWQ5ZDRlNDBlOTQ2ZjdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVk
U3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9ucy5oIgorI2luY2x1ZGUgIldLTnVtYmVy
LmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2lu
Y2x1ZGUgIldLVVJMLmgiCkBAIC02NzEsNiArNjcyLDE3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19pbml0aWFsaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfQ29udGV4dCogY29udGV4dCwg
V0tQCiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyID0gRWZsVmlld3BvcnRIYW5kbGVyOjpjcmVh
dGUocHJpdi0+cGFnZUNsaWVudC5nZXQoKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRU1PUllf
U0FNUExFUikKKyAgICBzdGF0aWMgYm9vbCBtZW1vcnlTYW1wbGVyID0gZmFsc2U7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIgZW52aXJvbk1lbW9yeVNhbXBsZXJbXSA9ICJNRU1PUllfU0FNUExFUiI7
CisKKyAgICBpZiAoIW1lbW9yeVNhbXBsZXIgJiYgZ2V0ZW52KGVudmlyb25NZW1vcnlTYW1wbGVy
KSkgeworICAgICAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4gaW50ZXJ2YWwoQWRvcHRXSywg
V0tEb3VibGVDcmVhdGUoMC4wKSk7CisgICAgICAgIFdLQ29udGV4dFN0YXJ0TWVtb3J5U2FtcGxl
cihld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnRleHQpLCBpbnRlcnZhbC5nZXQoKSk7Cisg
ICAgICAgIG1lbW9yeVNhbXBsZXIgPSB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgV0tQYWdl
UmVmIHdrUGFnZSA9IHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSk7CiAgICAgZXdrX3Zp
ZXdfZmluZF9jbGllbnRfYXR0YWNoKHdrUGFnZSwgZXdrVmlldyk7CiAgICAgZXdrX3ZpZXdfZm9y
bV9jbGllbnRfYXR0YWNoKHdrUGFnZSwgZXdrVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4
IDU3OWQ1OTkwNzBlMDFjNTVjYTA1OWYxYzJmODRmNTFlNmY0ZTVmYTYuLjg2NzViZThlZDY5ZjU2
ZDgzZGUyY2JiY2I4OWI3OTBjMzhiNTQ3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC03OCw2
ICs3OCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xF
R0FDWV9XRUJLSVRfQkxPQl9CVUlMREVSIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0xJTktfUFJFRkVUQ0ggT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9NSUNST0RBVEEgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21h
a2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggNDM5NmRhMmExYjA0YTJmZGZlNTdlODc1NzQ1
ZWY4M2Y0ZTA0MjJmYS4uZTQzMDk2YTUwYTdlOTI4OTEyODRkZGQwZTU4NTAxMzZlZTVjNGFkMyAx
MDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBNQUNSTyAoV0VC
S0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFf
U09VUkNFICJUb2dnbGUgTWVkaWEgU291cmNlIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RBVElTVElDUyAiVG9nZ2xlIE1lZGlhIFN0YXRpc3Rp
Y3Mgc3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9T
VFJFQU0gIlRvZ2dsZSBNZWRpYSBTdHJlYW0gQVBJIHN1cHBvcnQiIE9GRikKKyAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgIlRvZ2dsZSBNZW1vcnkgU2FtcGxl
ciBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FVEVSX0VM
RU1FTlQgIlRvZ2dsZSBNZXRlciBUYWcgc3VwcG9ydCIgT04pCiAgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX01IVE1MICJUb2dnbGUgTUhUTUwgc3VwcG9ydCIgT0ZGKQogICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9NSUNST0RBVEEgIlRvZ2dsZSBNaWNyb2RhdGEgc3VwcG9y
dCIgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UgYi9Tb3VyY2Uv
Y21ha2Vjb25maWcuaC5jbWFrZQppbmRleCA4ODU1NWZiNTJjZDc4YzhiN2YwMjgwYWJkOGE4NzA3
M2IwNjdmNzJmLi4wMWMxOTRmNjVjNDFiMzFlYmI3YTU2ODQ2NDk2NzgwMjYzZmYzZDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Vjb25m
aWcuaC5jbWFrZQpAQCAtNjcsNiArNjcsNyBAQAogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX01BVEhN
TAogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX01FRElBX0NBUFRVUkUKICNjbWFrZWRlZmluZTAxIEVO
QUJMRV9NRURJQV9TVFJFQU0KKyNjbWFrZWRlZmluZTAxIEVOQUJMRV9NRU1PUllfU0FNUExFUgog
I2NtYWtlZGVmaW5lMDEgRU5BQkxFX01FVEVSX0VMRU1FTlQKICNjbWFrZWRlZmluZTAxIEVOQUJM
RV9NSUNST0RBVEEKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMKZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZTI4M2YyMzA4Y2VhNzg3YzBj
OTI0ZmU2ZGUzMTIwMWUzYjhkYjY5Li5mYzhkNjhmNjE5YTZmMDllM2I3ZTM4MDc0NjJmMWE0YjFj
ZjdiNDIwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTItMDgtMjcgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXVtDTUFLRV0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgb3B0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgV2Vi
TWVtb3J5U2FtcGxlciBmZWF0dXJlIG9uIGluIEVGTCBwb3J0LgorCisgICAgICAgICogU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZl
YXR1cmVzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlOgorCiAy
MDEyLTA4LTI3ICBSb2IgQnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIHJlbW92ZSAtZm5vLXJ0dGkgb3B0aW9uIGluIENNQUtFX0NfRkxBR1MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160928</attachid>
            <date>2012-08-28 01:22:14 -0700</date>
            <delta_ts>2012-08-29 07:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120828172205.patch</filename>
            <type>text/plain</type>
            <size>15197</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzc1ODZjM2NkNTdkZjM2MjU3NDdjOTEwNzlmOWQ3NzVmYjY0YTUwLi44MjU3NmU5YjcwNWI0ZGQx
NTQwYzY3NjFmNTI3YTVjNTdlZmY3ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yOCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBm
ZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJNZW1vcnlTYW1wbGVyIGNvbGxlY3RzIEphdmFzY3JpcHQgc3RhY2sgYW5kIEpJVCBtZW1vcnkg
dXNhZ2UgaW4gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorCiAyMDEyLTA4LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2ODM2LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDQzYmU0MDVkMDI5ZmZjYzkwMjkxMjAzOTUxNDkxYzIyYmNhZWZjN2MuLjcxOWMw
MzAzZTcwOTU2YTgwOGVjYjJmZDg1YjcyODk1NTkwMjZkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAxMi0wOC0yOCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNv
bT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJNZW1v
cnlTYW1wbGVyIGZlYXR1cmUgdG8gRUZMIHBvcnQuIFdlYk1lbW9yeVNhbXBsZXIgcmVjb3JkcyBt
ZW1vcnkgdXNhZ2Ugb2YKKyAgICAgICAgV2ViUHJvY2VzcyBhbmQgVUkgUHJvY2VzcyBhbmQgYWxz
byBpdCByZWNvcmRzIGFwcGxpY2F0aW9uIG1lbW9yeSBzdGF0dXMgaW4gcmVhbCB0aW1lLgorICAg
ICAgICBJbmNsdWRlZCBpdGVtcyBvbiB0aGUgcmVzdWx0IGFyZSBKSVQsIEpTIGhlYXAsIGZhc3Rt
YWxsb2MgYnl0ZXMgYW5kCisgICAgICAgIGFwcGxpY2F0aW9uIG1lbW9yeSBpbmZvIGZyb20gL3By
b2MvcHJvY2Vzc19pZC9zdGF0bS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAg
ICAgICAqIFNoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1wbGVyTGludXguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChBcHBsaWNhdGlvbk1lbW9yeVN0YXRzKToKKyAgICAg
ICAgKFdlYktpdDo6Z2V0VG9rZW4pOgorICAgICAgICAoV2ViS2l0OjphcHBlbmRNZW1vcnlTdGF0
cyk6CisgICAgICAgIChXZWJLaXQ6OnNhbXBsZVN5c3RlbU1lbW9yeUluZm8pOgorICAgICAgICAo
V2ViS2l0OjpzYW1wbGVBcHBsaWNhdGlvbk1hbGxvYyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
bW9yeVNhbXBsZXI6OnByb2Nlc3NOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2Ft
cGxlcjo6c2FtcGxlV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6
c2VuZE1lbW9yeVByZXNzdXJlRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19pbml0aWFsaXplKToKKwogMjAxMi0wOC0y
NyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1b
V0syXSBGaXggUGFnZUNsaWVudEltcGwgbGF5ZXIgdmlvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEz
YzNhNGU1NjY4ZS4uNzhhM2ExZjE3YmU2OTcyMzBiMTQ2OGFkYTExYmRiMGIwYWE3YWQ3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw2ICsxLDggQEAKIExJ
U1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9j
YXRvckZpeGVkVk1Qb29sLmNwcAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorCisg
ICAgcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogKQogCiBMSVNUKEFQUEVORCBKYXZhU2Ny
aXB0Q29yZV9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhmOGJl
MDAzZjg0ZWYyMWEwYTQ0YzgxMjY1YmEyZDZjOGVhNi4uODMwNGQwMjFhYzM0ODVmZTY2MDA5YTVk
ZjkyZDhhNWIxOWVjYTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE1LDYgKzE1
LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2ht
ZW50VW5peC5jcHAKIAorICAgIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAorCiAgICAgU2hh
cmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAogICAgIFNoYXJlZC9BUEkvYy9ndGsv
V0tHcmFwaGljc0NvbnRleHRHdGsuY3BwCkBAIC0yOCw2ICszMCw4IEBAIExJU1QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNw
cAogICAgIFNoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAogCisgICAgU2hhcmVkL2xpbnV4
L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAKKwogICAgIFNoYXJlZC9zb3VwL1BsYXRmb3JtQ2Vy
dGlmaWNhdGVJbmZvLmNwcAogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1Nv
dXAuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJNZW1v
cnlTYW1wbGVyTGludXguY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1dlYk1lbW9y
eVNhbXBsZXJMaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY5M2U0MTg1MmJkZWJiZTlmYmE1MDI0Yjhi
NGEwY2FkYzNiZTY1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9s
aW51eC9XZWJNZW1vcnlTYW1wbGVyTGludXguY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1lbW9y
eVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5U3RhdGlzdGlj
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5n
IG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgQXBwbGljYXRp
b25NZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRvdGFsUHJvZ3JhbVNpemU7CisgICAgc2l6ZV90
IHJlc2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qgc2hhcmVkU2l6ZTsKKyAgICBzaXplX3QgdGV4
dFNpemU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXplOworICAgIHNpemVfdCBkYXRhU3RhY2tTaXpl
OworICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOworfTsKKworc3RhdGljIGNvbnN0IGludCBtYXhC
dWZmZXIgPSAxMjg7CitzdGF0aWMgY29uc3QgaW50IG1heFByb2Nlc3NQYXRoID0gMzU7CisKK3N0
YXRpYyBpbmxpbmUgU3RyaW5nIGdldFRva2VuKEZJTEUqIGZpbGUpCit7CisgICAgaWYgKCFmaWxl
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1ZmZlclttYXhCdWZmZXJd
OworICAgIG1lbXNldChidWZmZXIsIDAsIG1heEJ1ZmZlcik7CisgICAgZnNjYW5mKGZpbGUsICIl
cyIsIGJ1ZmZlcik7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgdm9pZCBhcHBlbmRNZW1vcnlTdGF0cyhXZWJNZW1vcnlTdGF0aXN0aWNzJiB3ZWJLaXRN
ZW1vcnlTdGF0cywgY29uc3QgU3RyaW5nJiBrZXksIHNpemVfdCB2YWx1ZSkKK3sKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChrZXkpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLnZh
bHVlcy5hcHBlbmQodmFsdWUpOworfQorCitzdGF0aWMgdm9pZCBzYW1wbGVTeXN0ZW1NZW1vcnlJ
bmZvKFdlYk1lbW9yeVN0YXRpc3RpY3MmIHN0YXRpY3MpCit7CisgICAgYm9vbCBmb3VuZEtleU5h
bWUgPSBmYWxzZTsKKyAgICBGSUxFKiBmU3lzdGVtTWVtb3J5U3RhdHVzID0gZm9wZW4oIi9wcm9j
L21lbWluZm8iLCAiciIpOworICAgIGlmICghZlN5c3RlbU1lbW9yeVN0YXR1cykKKyAgICAgICAg
cmV0dXJuOworCisgICAgd2hpbGUgKCFmZW9mKGZTeXN0ZW1NZW1vcnlTdGF0dXMpKSB7CisgICAg
ICAgIFN0cmluZyBzdHJUb2tlbiA9IGdldFRva2VuKGZTeXN0ZW1NZW1vcnlTdGF0dXMpOworICAg
ICAgICBpZiAoc3RyVG9rZW4uZmluZCgnOicpICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBT
dHJpbmcga2V5TmFtZSA9IHN0clRva2VuLmxlZnQoc3RyVG9rZW4ubGVuZ3RoKCkgLSAxKTsKKyAg
ICAgICAgICAgIHN0YXRpY3Mua2V5cy5hcHBlbmQoa2V5TmFtZSk7CisgICAgICAgICAgICBmb3Vu
ZEtleU5hbWUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGZvdW5kS2V5TmFtZSkgeworICAg
ICAgICAgICAgc3RhdGljcy52YWx1ZXMuYXBwZW5kKHN0clRva2VuLnRvSW50KCkpOworICAgICAg
ICAgICAgZm91bmRLZXlOYW1lID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZmNsb3Nl
KGZTeXN0ZW1NZW1vcnlTdGF0dXMpOworfQorCitzdGF0aWMgQXBwbGljYXRpb25NZW1vcnlTdGF0
cyBzYW1wbGVBcHBsaWNhdGlvbk1hbGxvYygpCit7CisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0
cyBhcHBsaWNhdGlvblN0YXRzOworICAgIGNoYXIgcHJvY2Vzc1BhdGhbbWF4UHJvY2Vzc1BhdGhd
OworICAgIHNucHJpbnRmKHByb2Nlc3NQYXRoLCBtYXhQcm9jZXNzUGF0aCwgIi9wcm9jLyVkL3N0
YXRtIiwgZ2V0cGlkKCkpOworICAgIEZJTEUqIGZNZW1vcnlTdGF0dXMgPSBmb3Blbihwcm9jZXNz
UGF0aCwgInIiKTsKKworICAgIGlmIChmTWVtb3J5U3RhdHVzKSB7CisgICAgICAgIGZzY2FuZihm
TWVtb3J5U3RhdHVzLCAiJXpkICV6ZCAlemQgJXpkICV6ZCAlemQgJXpkIiwKKyAgICAgICAgICAg
ICAgICAmYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplLAorICAgICAgICAgICAgICAg
ICZhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6ZSwKKyAgICAgICAgICAgICAgICAmYXBw
bGljYXRpb25TdGF0cy5zaGFyZWRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0
YXRzLnRleHRTaXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLmxpYnJhcnlT
aXplLAorICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvblN0YXRzLmRhdGFTdGFja1NpemUsCisg
ICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uU3RhdHMuZGlydHlQYWdlU2l6ZSk7CisgICAgICAg
IGZjbG9zZShmTWVtb3J5U3RhdHVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gYXBwbGljYXRpb25T
dGF0czsKK30KKworU3RyaW5nIFdlYk1lbW9yeVNhbXBsZXI6OnByb2Nlc3NOYW1lKCkgY29uc3QK
K3sKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihw
cm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy8lZC9zdGF0dXMiLCBnZXRwaWQoKSk7
CisgICAgRklMRSogZlByb2Nlc3NTdGF0dXMgPSBmb3Blbihwcm9jZXNzUGF0aCwgInIiKTsKKyAg
ICBpZiAoZlByb2Nlc3NTdGF0dXMpIHsKKyAgICAgICAgZ2V0VG9rZW4oZlByb2Nlc3NTdGF0dXMp
OworICAgICAgICBTdHJpbmcgcHJvY2Vzc05hbWUgPSBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7
CisgICAgICAgIGZjbG9zZShmUHJvY2Vzc1N0YXR1cyk7CisgICAgICAgIHJldHVybiBwcm9jZXNz
TmFtZTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1dlYk1lbW9yeVN0YXRp
c3RpY3MgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KCkgY29uc3QKK3sKKyAgICBzaXpl
X3QgdG90YWxCeXRlc0luVXNlID0gMDsKKyAgICBzaXplX3QgdG90YWxCeXRlc0NvbW1pdHRlZCA9
IDA7CisKKyAgICBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3RhdHMgPSBzYW1w
bGVBcHBsaWNhdGlvbk1hbGxvYygpOworCisgICAgV2ViTWVtb3J5U3RhdGlzdGljcyB3ZWJLaXRN
ZW1vcnlTdGF0czsKKworI2lmIFVTRShKU0MpCisgICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFz
dE1hbGxvY1N0YXRpc3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CisgICAgc2l6
ZV90IGZhc3RNYWxsb2NCeXRlc0luVXNlID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVk
Vk1CeXRlcyAtIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXM7CisgICAgc2l6ZV90
IGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRl
ZFZNQnl0ZXM7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGZhc3RNYWxsb2NCeXRlc0luVXNlOwor
ICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkOworCisg
ICAgc2l6ZV90IGpzY0hlYXBCeXRlc0luVXNlID0gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFs
RGF0YSgpLT5oZWFwLnNpemUoKTsKKyAgICBzaXplX3QganNjSGVhcEJ5dGVzQ29tbWl0dGVkID0g
SlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmNhcGFjaXR5KCk7CisgICAg
dG90YWxCeXRlc0luVXNlICs9IGpzY0hlYXBCeXRlc0luVXNlOworICAgIHRvdGFsQnl0ZXNDb21t
aXR0ZWQgKz0ganNjSGVhcEJ5dGVzQ29tbWl0dGVkOworCisgICAgR2xvYmFsTWVtb3J5U3RhdGlz
dGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKKyAgICB0
b3RhbEJ5dGVzSW5Vc2UgKz0gZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyArIGdsb2JhbE1l
bW9yeVN0YXRzLkpJVEJ5dGVzOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZ2xvYmFsTWVt
b3J5U3RhdHMuc3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzOworI2VuZGlm
CisKKyAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKKworICAgIGFwcGVuZE1lbW9yeVN0
YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRpbWVzdGFtcCIpLCBub3cpOworCisgICAg
YXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiVG90YWwgUHJvZ3Jh
bSBTaXplIiksIGFwcGxpY2F0aW9uU3RhdHMudG90YWxQcm9ncmFtU2l6ZSk7CisgICAgYXBwZW5k
TWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiUlNTIiksIGFwcGxpY2F0aW9u
U3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1v
cnlTdGF0cywgU3RyaW5nKCJTaGFyZWQiKSwgYXBwbGljYXRpb25TdGF0cy5zaGFyZWRTaXplKTsK
KyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUZXh0Iiks
IGFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUpOworICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktp
dE1lbW9yeVN0YXRzLCBTdHJpbmcoIkxpYnJhcnkiKSwgYXBwbGljYXRpb25TdGF0cy5saWJyYXJ5
U2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygi
RGF0YS9TdGFjayIpLCBhcHBsaWNhdGlvblN0YXRzLmRhdGFTdGFja1NpemUpOworICAgIGFwcGVu
ZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkRpcnR5IiksIGFwcGxpY2F0
aW9uU3RhdHMuZGlydHlQYWdlU2l6ZSk7CisKKyNpZiBVU0UoSlNDKQorICAgIGFwcGVuZE1lbW9y
eVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRvdGFsIE1lbW9yeSBJbiBVc2UiKSwg
dG90YWxCeXRlc0luVXNlKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0
cywgU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIiksIGZhc3RNYWxsb2NCeXRlc0luVXNl
KTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJKYXZh
U2NyaXB0IEhlYXAgQnl0ZXMiKSwganNjSGVhcEJ5dGVzSW5Vc2UpOworCisgICAgYXBwZW5kTWVt
b3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiVG90YWwgQ29tbWl0dGVkIE1lbW9y
eSIpLCB0b3RhbEJ5dGVzQ29tbWl0dGVkKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRN
ZW1vcnlTdGF0cywgU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIiksIGZhc3RNYWxsb2NC
eXRlc0NvbW1pdHRlZCk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMs
IFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIiksIGpzY0hlYXBCeXRlc0NvbW1pdHRlZCk7
CisgICAgCisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygi
SmF2YVNjcmlwdCBTdGFjayBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKTsK
KyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJKYXZhU2Ny
aXB0IEpJVCBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcyk7CisjZW5kaWYKKwor
ICAgIHNhbXBsZVN5c3RlbU1lbW9yeUluZm8od2ViS2l0TWVtb3J5U3RhdHMpOworCisgICAgcmV0
dXJuIHdlYktpdE1lbW9yeVN0YXRzOworfQorCit2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNlbmRN
ZW1vcnlQcmVzc3VyZUV2ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApp
bmRleCBiOGZiZjNhYjQ0ZDg3YTBkN2JhYjA4YjBmZWU3YjNmYTk2OTM2MTBkLi5mMGIyYWZlMTg1
YWM2Zjk5Nzg4MzU0MTBhYzRlMzVhZWFkZDAzOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V0tGaW5kT3B0aW9ucy5oIgorI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRh
aW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCkBAIC02
OTEsNiArNjkyLDE3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0aWFsaXplKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfQ29udGV4dCogY29udGV4dCwgV0tQCiAgICAgZXdrX3ZpZXdfdWlf
Y2xpZW50X2F0dGFjaCh3a1BhZ2UsIGV3a1ZpZXcpOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0
KGV3a1ZpZXcsIERFRkFVTFRfVEhFTUVfUEFUSCIvZGVmYXVsdC5lZGoiKTsKKworI2lmIEVOQUJM
RShNRU1PUllfU0FNUExFUikKKyAgICBzdGF0aWMgYm9vbCBtZW1vcnlTYW1wbGVyID0gZmFsc2U7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZW52aXJvbk1lbW9yeVNhbXBsZXJbXSA9ICJNRU1PUllf
U0FNUExFUiI7CisKKyAgICBpZiAoIW1lbW9yeVNhbXBsZXIgJiYgZ2V0ZW52KGVudmlyb25NZW1v
cnlTYW1wbGVyKSkgeworICAgICAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4gaW50ZXJ2YWwo
QWRvcHRXSywgV0tEb3VibGVDcmVhdGUoMC4wKSk7CisgICAgICAgIFdLQ29udGV4dFN0YXJ0TWVt
b3J5U2FtcGxlcihld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnRleHQpLCBpbnRlcnZhbC5n
ZXQoKSk7CisgICAgICAgIG1lbW9yeVNhbXBsZXIgPSB0cnVlOworICAgIH0KKyNlbmRpZgogfQog
CiBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChFdmFzKiBjYW52
YXMsIEV2YXNfU21hcnQqIHNtYXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA1NzlkNTk5MDcw
ZTAxYzU1Y2EwNTlmMWMyZjg0ZjUxZTZmNGU1ZmE2Li44Njc1YmU4ZWQ2OWY1NmQ4M2RlMmNiYmNi
ODliNzkwYzM4YjU0NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzgsNiArNzgsNyBAQCBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfV0VCS0lU
X0JMT0JfQlVJTERFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9MSU5LX1BSRUZFVENIIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX01FRElBX0NBUFRVUkUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZl
YXR1cmVzLmNtYWtlCmluZGV4IDQzOTZkYTJhMWIwNGEyZmRmZTU3ZTg3NTc0NWVmODNmNGUwNDIy
ZmEuLmU0MzA5NmE1MGE3ZTkyODkxMjg0ZGRkMGU1ODUwMTM2ZWU1YzRhZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2Vi
S2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDYgKzc3LDcgQEAgTUFDUk8gKFdFQktJVF9PUFRJT05f
QkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NPVVJDRSAiVG9n
Z2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgIlRvZ2dsZSBNZWRpYSBTdGF0aXN0aWNzIHN1cHBvcnQi
IE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RSRUFNICJUb2dn
bGUgTWVkaWEgU3RyZWFtIEFQSSBzdXBwb3J0IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX01FTU9SWV9TQU1QTEVSICJUb2dnbGUgTWVtb3J5IFNhbXBsZXIgc3VwcG9ydCIg
T0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRVRFUl9FTEVNRU5UICJUb2dn
bGUgTWV0ZXIgVGFnIHN1cHBvcnQiIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJM
RV9NSFRNTCAiVG9nZ2xlIE1IVE1MIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfTUlDUk9EQVRBICJUb2dnbGUgTWljcm9kYXRhIHN1cHBvcnQiIE9GRikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlIGIvU291cmNlL2NtYWtlY29uZmln
LmguY21ha2UKaW5kZXggODg1NTVmYjUyY2Q3OGM4YjdmMDI4MGFiZDhhODcwNzNiMDY3ZjcyZi4u
MDFjMTk0ZjY1YzQxYjMxZWJiN2E1Njg0NjQ5Njc4MDI2M2ZmM2Q2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlY29uZmlnLmguY21ha2UKKysrIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UK
QEAgLTY3LDYgKzY3LDcgQEAKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NQVRITUwKICNjbWFrZWRl
ZmluZTAxIEVOQUJMRV9NRURJQV9DQVBUVVJFCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVESUFf
U1RSRUFNCisjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIKICNjbWFrZWRlZmlu
ZTAxIEVOQUJMRV9NRVRFUl9FTEVNRU5UCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUlDUk9EQVRB
CiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZWUyODNmMjMwOGNlYTc4N2MwYzkyNGZlNmRlMzEy
MDFlM2I4ZGI2OS4uZWIwNGZkNzk5M2MxMzUxZWE0ZjdhM2MxZjdmNzlhNTdiMTQ1ZjhmOSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTA4LTI4ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl1bQ01BS0VdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBXZWJNZW1vcnlTYW1w
bGVyIGZlYXR1cmUgb24gaW4gRUZMIHBvcnQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21h
a2U6CisgICAgICAgICogU291cmNlL2NtYWtlY29uZmlnLmguY21ha2U6CisKIDIwMTItMDgtMjcg
IFJvYiBCdWlzICA8cmJ1aXNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gcmVtb3Zl
IC1mbm8tcnR0aSBvcHRpb24gaW4gQ01BS0VfQ19GTEFHUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161218</attachid>
            <date>2012-08-29 07:08:13 -0700</date>
            <delta_ts>2012-08-29 09:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120829230802.patch</filename>
            <type>text/plain</type>
            <size>15516</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTI1YzMxZGM0ZjYxOThlMzFmOTEwNjg2Y2ZhMTE2OTdhYzE2ZTRmLi41NmQ1ZmY3MTdhMDBmMjky
YmVkYzgzMjZmNzA3NWFlZTMxYjc1MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yOSAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBm
ZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJNZW1vcnlTYW1wbGVyIGNvbGxlY3RzIEphdmFzY3JpcHQgc3RhY2sgYW5kIEpJVCBtZW1vcnkg
dXNhZ2UgaW4gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorCiAyMDEyLTA4LTI5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeCBmb3IgIUVOQUJMRShKSVQpIGFm
dGVyIHIxMjY5NjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzZkMDNlOTRlMjkzOTFlYjBjMTg4M2JjZWI4N2Y1
N2U5MjRhYWI0OS4uMDI0MjJmNThlOWU3ZTNmNWI1NzBjZTc2NTAzODk1ODVmN2Q3OTgyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA4LTI5ICBKdW5nSmlrIExlZSAgPGp1bmdq
aWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFdlYk1lbW9yeVNh
bXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSB0byBFRkwgcG9ydC4gV2ViTWVtb3J5
U2FtcGxlciByZWNvcmRzIG1lbW9yeSB1c2FnZSBvZgorICAgICAgICBXZWJQcm9jZXNzIGFuZCBV
SSBQcm9jZXNzIGFuZCBhbHNvIGl0IHJlY29yZHMgYXBwbGljYXRpb24gbWVtb3J5IHN0YXR1cyBp
biByZWFsIHRpbWUuCisgICAgICAgIEluY2x1ZGVkIGl0ZW1zIG9uIHRoZSByZXN1bHQgYXJlIEpJ
VCwgSlMgaGVhcCwgZmFzdG1hbGxvYyBieXRlcyBhbmQKKyAgICAgICAgYXBwbGljYXRpb24gbWVt
b3J5IGluZm8gZnJvbSAvcHJvYy9wcm9jZXNzX2lkL3N0YXRtLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51
eC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEFwcGxpY2F0aW9uTWVt
b3J5U3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpnZXRUb2tlbik6CisgICAgICAgIChXZWJLaXQ6
OmFwcGVuZE1lbW9yeVN0YXRzKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlQXBwbGljYXRpb25N
YWxsb2MpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpwcm9jZXNzTmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChf
RXdrX0NvbnRleHQ6Ol9Fd2tfQ29udGV4dCk6CisKIDIwMTItMDgtMjggIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEVuYWJsZSB0aGUgZWRn
ZSBkaXN0YW5jZSBhbnRpLWFsaWFzaW5nIGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBsYXll
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0NDg4MzRjZjc1
NWY3NzBkYjFiN2M0NDViOTZiMTNjM2E0ZTU2NjhlLi43OGEzYTFmMTdiZTY5NzIzMGIxNDY4YWRh
MTFiZGIwYjBhYTdhZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC0xLDYgKzEsOCBAQAogTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCiAgICAgaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCisKKyAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuY3BwCiApCiAK
IExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCAzYTA1MDVjNmExMTMxOGQyODkwNDMzOWUyOWQyNDg3ZmI4NGZhN2ZkLi41NmNh
MGMxOTcyNGE5YzM4ZmNiZGM3OTc1YzlkMjY2ZmIzMzc2ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtMTUsNiArMTUsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogCisgICAgU2hhcmVkL1dlYk1lbW9yeVNh
bXBsZXIuY3BwCisKICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCiAg
ICAgU2hhcmVkL0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHAKQEAgLTI4LDYgKzMw
LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL2VmbC9Qcm9jZXNz
RXhlY3V0YWJsZVBhdGhFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3Bw
CiAKKyAgICBTaGFyZWQvbGludXgvV2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcAorCiAgICAgU2hh
cmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uY3BwCiAgICAgU2hhcmVkL3NvdXAvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbGludXgvV2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDNmNDk3
MjRlYmQ4ODA5ODA1OWEzNzY5ZmVmMDJjYzk3NTM2NGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAKQEAgLTAs
MCArMSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViTWVtb3J5U2FtcGxlci5oIgorCisjaWYgRU5BQkxFKE1FTU9SWV9TQU1Q
TEVSKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9NZW1vcnlTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8c3lzL3N5c2luZm8uaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0cnVjdCBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIHsKKyAgICBzaXplX3QgdG90
YWxQcm9ncmFtU2l6ZTsKKyAgICBzaXplX3QgcmVzaWRlbnRTZXRTaXplOworICAgIHNpemVfdCBz
aGFyZWRTaXplOworICAgIHNpemVfdCB0ZXh0U2l6ZTsKKyAgICBzaXplX3QgbGlicmFyeVNpemU7
CisgICAgc2l6ZV90IGRhdGFTdGFja1NpemU7CisgICAgc2l6ZV90IGRpcnR5UGFnZVNpemU7Cit9
OworCitzdGF0aWMgY29uc3QgaW50IG1heEJ1ZmZlciA9IDEyODsKK3N0YXRpYyBjb25zdCBpbnQg
bWF4UHJvY2Vzc1BhdGggPSAzNTsKKworc3RhdGljIGlubGluZSBTdHJpbmcgZ2V0VG9rZW4oRklM
RSogZmlsZSkKK3sKKyAgICBBU1NFUlQoZmlsZSk7CisgICAgaWYgKCFmaWxlKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1ZmZlclttYXhCdWZmZXJdID0gezAsIH07Cisg
ICAgYm9vbCBmb3VuZFByaW50YWJsZSA9IGZhbHNlOworICAgIGludCBpbmRleCA9IDA7CisgICAg
d2hpbGUgKGluZGV4IDwgbWF4QnVmZmVyKSB7CisgICAgICAgIGNoYXIgY2ggPSBmZ2V0YyhmaWxl
KTsKKyAgICAgICAgaWYgKGNoID09IEVPRiB8fCAoaXNBU0NJSVNwYWNlKGNoKSAmJiBmb3VuZFBy
aW50YWJsZSkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFpc0FTQ0lJU3BhY2Uo
Y2gpKSB7CisgICAgICAgICAgICBidWZmZXJbaW5kZXhdID0gY2g7CisgICAgICAgICAgICBmb3Vu
ZFByaW50YWJsZSA9IHRydWU7CisgICAgICAgICAgICBpbmRleCsrOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg
YXBwZW5kTWVtb3J5U3RhdHMoV2ViTWVtb3J5U3RhdGlzdGljcyYgd2ViS2l0TWVtb3J5U3RhdHMs
IGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3QgdmFsdWUpCit7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMua2V5cy5hcHBlbmQoa2V5KTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5k
KHZhbHVlKTsKK30KKworc3RhdGljIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgc2FtcGxlQXBwbGlj
YXRpb25NYWxsb2MoKQoreworICAgIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBwbGljYXRpb25T
dGF0czsKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50
Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy9zZWxmL3N0YXRtIik7CisgICAg
RklMRSogZk1lbW9yeVN0YXR1cyA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAgIGlmICgh
Zk1lbW9yeVN0YXR1cykKKyAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBh
cHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUgPSBnZXRUb2tlbihmTWVtb3J5U3RhdHVz
KS50b0ludCgpOworICAgIGFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplID0gZ2V0VG9r
ZW4oZk1lbW9yeVN0YXR1cykudG9JbnQoKTsKKyAgICBhcHBsaWNhdGlvblN0YXRzLnNoYXJlZFNp
emUgPSBnZXRUb2tlbihmTWVtb3J5U3RhdHVzKS50b0ludCgpOworICAgIGFwcGxpY2F0aW9uU3Rh
dHMudGV4dFNpemUgPSBnZXRUb2tlbihmTWVtb3J5U3RhdHVzKS50b0ludCgpOworICAgIGFwcGxp
Y2F0aW9uU3RhdHMubGlicmFyeVNpemUgPSBnZXRUb2tlbihmTWVtb3J5U3RhdHVzKS50b0ludCgp
OworICAgIGFwcGxpY2F0aW9uU3RhdHMuZGF0YVN0YWNrU2l6ZSA9IGdldFRva2VuKGZNZW1vcnlT
dGF0dXMpLnRvSW50KCk7CisgICAgYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplID0gZ2V0
VG9rZW4oZk1lbW9yeVN0YXR1cykudG9JbnQoKTsKKyAgICBmY2xvc2UoZk1lbW9yeVN0YXR1cyk7
CisKKyAgICByZXR1cm4gYXBwbGljYXRpb25TdGF0czsKK30KKworU3RyaW5nIFdlYk1lbW9yeVNh
bXBsZXI6OnByb2Nlc3NOYW1lKCkgY29uc3QKK3sKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFBy
b2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIv
cHJvYy9zZWxmL3N0YXR1cyIpOworICAgIEZJTEUqIGZQcm9jZXNzU3RhdHVzID0gZm9wZW4ocHJv
Y2Vzc1BhdGgsICJyIik7CisgICAgaWYgKCFmUHJvY2Vzc1N0YXR1cykKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworICAgICAgICAKKyAgICBnZXRUb2tlbihmUHJvY2Vzc1N0YXR1cyk7CisgICAg
U3RyaW5nIHByb2Nlc3NOYW1lID0gZ2V0VG9rZW4oZlByb2Nlc3NTdGF0dXMpOworICAgIGZjbG9z
ZShmUHJvY2Vzc1N0YXR1cyk7CisKKyAgICByZXR1cm4gcHJvY2Vzc05hbWU7Cit9CisKK1dlYk1l
bW9yeVN0YXRpc3RpY3MgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KCkgY29uc3QKK3sK
KyAgICBzaXplX3QgdG90YWxCeXRlc0luVXNlID0gMDsKKyAgICBzaXplX3QgdG90YWxCeXRlc0Nv
bW1pdHRlZCA9IDA7CisKKyAgICBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIGFwcGxpY2F0aW9uU3Rh
dHMgPSBzYW1wbGVBcHBsaWNhdGlvbk1hbGxvYygpOworCisgICAgV2ViTWVtb3J5U3RhdGlzdGlj
cyB3ZWJLaXRNZW1vcnlTdGF0czsKKworI2lmIFVTRShKU0MpCisgICAgRmFzdE1hbGxvY1N0YXRp
c3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7
CisgICAgc2l6ZV90IGZhc3RNYWxsb2NCeXRlc0luVXNlID0gZmFzdE1hbGxvY1N0YXRpc3RpY3Mu
Y29tbWl0dGVkVk1CeXRlcyAtIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXM7Cisg
ICAgc2l6ZV90IGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxsb2NTdGF0aXN0aWNz
LmNvbW1pdHRlZFZNQnl0ZXM7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGZhc3RNYWxsb2NCeXRl
c0luVXNlOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxvY0J5dGVzQ29tbWl0
dGVkOworCisgICAgc2l6ZV90IGpzY0hlYXBCeXRlc0luVXNlID0gSlNET01XaW5kb3c6OmNvbW1v
bkpTR2xvYmFsRGF0YSgpLT5oZWFwLnNpemUoKTsKKyAgICBzaXplX3QganNjSGVhcEJ5dGVzQ29t
bWl0dGVkID0gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmNhcGFjaXR5
KCk7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGpzY0hlYXBCeXRlc0luVXNlOworICAgIHRvdGFs
Qnl0ZXNDb21taXR0ZWQgKz0ganNjSGVhcEJ5dGVzQ29tbWl0dGVkOworCisgICAgR2xvYmFsTWVt
b3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3Mo
KTsKKyAgICB0b3RhbEJ5dGVzSW5Vc2UgKz0gZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyAr
IGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0g
Z2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVz
OworI2VuZGlmCisKKyAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKKworICAgIGFwcGVu
ZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRpbWVzdGFtcCIpLCBub3cp
OworCisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiVG90
YWwgUHJvZ3JhbSBTaXplIiksIGFwcGxpY2F0aW9uU3RhdHMudG90YWxQcm9ncmFtU2l6ZSk7Cisg
ICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiUlNTIiksIGFw
cGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3
ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJTaGFyZWQiKSwgYXBwbGljYXRpb25TdGF0cy5zaGFy
ZWRTaXplKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5n
KCJUZXh0IiksIGFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUpOworICAgIGFwcGVuZE1lbW9yeVN0
YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkxpYnJhcnkiKSwgYXBwbGljYXRpb25TdGF0
cy5saWJyYXJ5U2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMs
IFN0cmluZygiRGF0YS9TdGFjayIpLCBhcHBsaWNhdGlvblN0YXRzLmRhdGFTdGFja1NpemUpOwor
ICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkRpcnR5Iiks
IGFwcGxpY2F0aW9uU3RhdHMuZGlydHlQYWdlU2l6ZSk7CisKKyNpZiBVU0UoSlNDKQorICAgIGFw
cGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRvdGFsIE1lbW9yeSBJ
biBVc2UiKSwgdG90YWxCeXRlc0luVXNlKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRN
ZW1vcnlTdGF0cywgU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIiksIGZhc3RNYWxsb2NC
eXRlc0luVXNlKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3Ry
aW5nKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiKSwganNjSGVhcEJ5dGVzSW5Vc2UpOworCisgICAg
YXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiVG90YWwgQ29tbWl0
dGVkIE1lbW9yeSIpLCB0b3RhbEJ5dGVzQ29tbWl0dGVkKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0
cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIiksIGZh
c3RNYWxsb2NCeXRlc0NvbW1pdHRlZCk7CisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVt
b3J5U3RhdHMsIFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIiksIGpzY0hlYXBCeXRlc0Nv
bW1pdHRlZCk7CisgICAgCisgICAgYXBwZW5kTWVtb3J5U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMs
IFN0cmluZygiSmF2YVNjcmlwdCBTdGFjayBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5zdGFj
a0J5dGVzKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5n
KCJKYXZhU2NyaXB0IEpJVCBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcyk7Cisj
ZW5kaWYKKworICAgIHN0cnVjdCBzeXNpbmZvIHN5c3RlbUluZm87CisgICAgaWYgKCFzeXNpbmZv
KCZzeXN0ZW1JbmZvKSkgeworICAgICAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlT
dGF0cywgU3RyaW5nKCJTeXN0ZW0gVG90YWwgQnl0ZXMiKSwgc3lzdGVtSW5mby50b3RhbHJhbSk7
CisgICAgICAgIGFwcGVuZE1lbW9yeVN0YXRzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkF2
YWlsYWJsZSBCeXRlcyIpLCBzeXN0ZW1JbmZvLmZyZWVyYW0pOworICAgICAgICBhcHBlbmRNZW1v
cnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJTaGFyZWQgQnl0ZXMiKSwgc3lzdGVt
SW5mby5zaGFyZWRyYW0pOworICAgICAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlT
dGF0cywgU3RyaW5nKCJCdWZmZXIgQnl0ZXMiKSwgc3lzdGVtSW5mby5idWZmZXJyYW0pOworICAg
ICAgICBhcHBlbmRNZW1vcnlTdGF0cyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUb3RhbCBT
d2FwIEJ5dGVzIiksIHN5c3RlbUluZm8udG90YWxzd2FwKTsKKyAgICAgICAgYXBwZW5kTWVtb3J5
U3RhdHMod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiQXZhaWxhYmxlIFN3YXAgQnl0ZXMiKSwg
c3lzdGVtSW5mby5mcmVlc3dhcCk7CisgICAgfSAgIAorCisgICAgcmV0dXJuIHdlYktpdE1lbW9y
eVN0YXRzOworfQorCit2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2
ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCA3MTUw
NGY2NDFkMjA2NWRmMmJmNjg4ZGE0NWU5NWQ1YTUxZGI1OGI0Li4zMDIyMTMzYWJkY2RmYWU2MGQz
M2I0MzNkYjUyMTZmZjViY2VhOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiVmli
cmF0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Nv
bnRleHRTb3VwLmgiCisjaW5jbHVkZSAiV0tOdW1iZXIuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfZG93bmxv
YWRfY2xpZW50X3ByaXZhdGUuaCIKQEAgLTg1LDYgKzg2LDE2IEBAIHN0cnVjdCBfRXdrX0NvbnRl
eHQgewogICAgICAgICB2aWJyYXRpb25Qcm92aWRlciA9IFZpYnJhdGlvblByb3ZpZGVyOjpjcmVh
dGUod2tWaWJyYXRpb25SZWYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVNT1JZX1NBTVBMRVIp
CisgICAgICAgIHN0YXRpYyBib29sIG1lbW9yeVNhbXBsZXIgPSBmYWxzZTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIgZW52aXJvbk1lbW9yeVNhbXBsZXJbXSA9ICJNRU1PUllfU0FNUExFUiI7
CisKKyAgICAgICAgaWYgKCFtZW1vcnlTYW1wbGVyICYmIGdldGVudihlbnZpcm9uTWVtb3J5U2Ft
cGxlcikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBpbnRlcnZhbChB
ZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZSgwLjApKTsKKyAgICAgICAgICAgIFdLQ29udGV4dFN0YXJ0
TWVtb3J5U2FtcGxlcihjb250ZXh0LmdldCgpLCBpbnRlcnZhbC5nZXQoKSk7CisgICAgICAgICAg
ICBtZW1vcnlTYW1wbGVyID0gdHJ1ZTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGV3a19j
b250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfYXR0YWNoKHRoaXMpOwogICAgICAgICBld2tf
Y29udGV4dF9kb3dubG9hZF9jbGllbnRfYXR0YWNoKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwu
Y21ha2UKaW5kZXggNTc5ZDU5OTA3MGUwMWM1NWNhMDU5ZjFjMmY4NGY1MWU2ZjRlNWZhNi4uODY3
NWJlOGVkNjlmNTZkODNkZTJjYmJjYjg5Yjc5MGMzOGI1NDc0NyAxMDA2NDQKLS0tIGEvU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21h
a2UKQEAgLTc4LDYgKzc4LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1IgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTEVHQUNZX1dFQktJVF9CTE9CX0JVSUxERVIgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTElOS19QUkVGRVRDSCBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DQVBUVVJFIE9OKQorV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01JQ1JPREFUQSBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5f
QVBJIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBi
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCA0Mzk2ZGEyYTFiMDRhMmZk
ZmU1N2U4NzU3NDVlZjgzZjRlMDQyMmZhLi5lNDMwOTZhNTBhN2U5Mjg5MTI4NGRkZDBlNTg1MDEz
NmVlNWM0YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC03Nyw2ICs3Nyw3IEBA
IE1BQ1JPIChXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9NRURJQV9TT1VSQ0UgIlRvZ2dsZSBNZWRpYSBTb3VyY2Ugc3VwcG9ydCIgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTICJUb2dnbGUgTWVk
aWEgU3RhdGlzdGljcyBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX01FRElBX1NUUkVBTSAiVG9nZ2xlIE1lZGlhIFN0cmVhbSBBUEkgc3VwcG9ydCIgT0ZGKQor
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRU1PUllfU0FNUExFUiAiVG9nZ2xlIE1l
bW9yeSBTYW1wbGVyIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfTUVURVJfRUxFTUVOVCAiVG9nZ2xlIE1ldGVyIFRhZyBzdXBwb3J0IiBPTikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUhUTUwgIlRvZ2dsZSBNSFRNTCBzdXBwb3J0IiBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01JQ1JPREFUQSAiVG9nZ2xlIE1pY3Jv
ZGF0YSBzdXBwb3J0IiBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Vjb25maWcuaC5jbWFr
ZSBiL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlCmluZGV4IDg4NTU1ZmI1MmNkNzhjOGI3ZjAy
ODBhYmQ4YTg3MDczYjA2N2Y3MmYuLjAxYzE5NGY2NWM0MWIzMWViYjdhNTY4NDY0OTY3ODAyNjNm
ZjNkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZWNvbmZpZy5oLmNtYWtlCkBAIC02Nyw2ICs2Nyw3IEBACiAjY21ha2VkZWZpbmUwMSBF
TkFCTEVfTUFUSE1MCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVESUFfQ0FQVFVSRQogI2NtYWtl
ZGVmaW5lMDEgRU5BQkxFX01FRElBX1NUUkVBTQorI2NtYWtlZGVmaW5lMDEgRU5BQkxFX01FTU9S
WV9TQU1QTEVSCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVURVJfRUxFTUVOVAogI2NtYWtlZGVm
aW5lMDEgRU5BQkxFX01JQ1JPREFUQQogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX01VVEFUSU9OX09C
U0VSVkVSUwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDE2MTY5NmRl
YjkxMTk3NzFlZWQxMDJlYjkyMzk3OGFkN2M5NDg4NDMuLjcwMzkwMTE0YTFmMTNlNzE3YTMxYjI5
MmZjZDBiMDI0ZmJhYTk1ZGMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0yOSAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBz
YW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2Ft
cGxlciBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTZXQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlIG9uIGluIEVGTCBwb3J0LgorCisgICAg
ICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6CisgICAgICAgICogU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZWNvbmZpZy5o
LmNtYWtlOgorCiAyMDEyLTA4LTI4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBBZGQgZGlyZWN0b3J5IGdlbmVyYXRlZCBieSBFY2xpcHNlIHRv
IC5naXRpZ25vcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161254</attachid>
            <date>2012-08-29 09:55:32 -0700</date>
            <delta_ts>2012-08-30 08:40:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120830015521.patch</filename>
            <type>text/plain</type>
            <size>15787</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTI1YzMxZGM0ZjYxOThlMzFmOTEwNjg2Y2ZhMTE2OTdhYzE2ZTRmLi41NmQ1ZmY3MTdhMDBmMjky
YmVkYzgzMjZmNzA3NWFlZTMxYjc1MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0yOSAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0NNQUtFXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBm
ZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJNZW1vcnlTYW1wbGVyIGNvbGxlY3RzIEphdmFzY3JpcHQgc3RhY2sgYW5kIEpJVCBtZW1vcnkg
dXNhZ2UgaW4gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorCiAyMDEyLTA4LTI5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeCBmb3IgIUVOQUJMRShKSVQpIGFm
dGVyIHIxMjY5NjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzZkMDNlOTRlMjkzOTFlYjBjMTg4M2JjZWI4N2Y1
N2U5MjRhYWI0OS4uMDI0MjJmNThlOWU3ZTNmNWI1NzBjZTc2NTAzODk1ODVmN2Q3OTgyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA4LTI5ICBKdW5nSmlrIExlZSAgPGp1bmdq
aWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFdlYk1lbW9yeVNh
bXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSB0byBFRkwgcG9ydC4gV2ViTWVtb3J5
U2FtcGxlciByZWNvcmRzIG1lbW9yeSB1c2FnZSBvZgorICAgICAgICBXZWJQcm9jZXNzIGFuZCBV
SSBQcm9jZXNzIGFuZCBhbHNvIGl0IHJlY29yZHMgYXBwbGljYXRpb24gbWVtb3J5IHN0YXR1cyBp
biByZWFsIHRpbWUuCisgICAgICAgIEluY2x1ZGVkIGl0ZW1zIG9uIHRoZSByZXN1bHQgYXJlIEpJ
VCwgSlMgaGVhcCwgZmFzdG1hbGxvYyBieXRlcyBhbmQKKyAgICAgICAgYXBwbGljYXRpb24gbWVt
b3J5IGluZm8gZnJvbSAvcHJvYy9wcm9jZXNzX2lkL3N0YXRtLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51
eC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEFwcGxpY2F0aW9uTWVt
b3J5U3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpnZXRUb2tlbik6CisgICAgICAgIChXZWJLaXQ6
OmFwcGVuZE1lbW9yeVN0YXRzKToKKyAgICAgICAgKFdlYktpdDo6c2FtcGxlQXBwbGljYXRpb25N
YWxsb2MpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpwcm9jZXNzTmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChf
RXdrX0NvbnRleHQ6Ol9Fd2tfQ29udGV4dCk6CisKIDIwMTItMDgtMjggIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEVuYWJsZSB0aGUgZWRn
ZSBkaXN0YW5jZSBhbnRpLWFsaWFzaW5nIGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBsYXll
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0NDg4MzRjZjc1
NWY3NzBkYjFiN2M0NDViOTZiMTNjM2E0ZTU2NjhlLi43OGEzYTFmMTdiZTY5NzIzMGIxNDY4YWRh
MTFiZGIwYjBhYTdhZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC0xLDYgKzEsOCBAQAogTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCiAgICAgaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCisKKyAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuY3BwCiApCiAK
IExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCAzYTA1MDVjNmExMTMxOGQyODkwNDMzOWUyOWQyNDg3ZmI4NGZhN2ZkLi41NmNh
MGMxOTcyNGE5YzM4ZmNiZGM3OTc1YzlkMjY2ZmIzMzc2ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtMTUsNiArMTUsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogCisgICAgU2hhcmVkL1dlYk1lbW9yeVNh
bXBsZXIuY3BwCisKICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCiAg
ICAgU2hhcmVkL0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHAKQEAgLTI4LDYgKzMw
LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL2VmbC9Qcm9jZXNz
RXhlY3V0YWJsZVBhdGhFZmwuY3BwCiAgICAgU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3Bw
CiAKKyAgICBTaGFyZWQvbGludXgvV2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcAorCiAgICAgU2hh
cmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uY3BwCiAgICAgU2hhcmVkL3NvdXAvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbGludXgvV2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjU3N2Y0
ZmVkMWVmMDJlYjVhMGRmZGJkMTZlMWJlZmMwMTk3YTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAKQEAgLTAs
MCArMSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViTWVtb3J5U2FtcGxlci5oIgorCisjaWYgRU5BQkxFKE1FTU9SWV9TQU1Q
TEVSKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9NZW1vcnlTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8c3lzL3N5c2luZm8uaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0cnVjdCBBcHBsaWNhdGlvbk1lbW9yeVN0YXRzIHsKKyAgICBzaXplX3QgdG90
YWxQcm9ncmFtU2l6ZTsKKyAgICBzaXplX3QgcmVzaWRlbnRTZXRTaXplOworICAgIHNpemVfdCBz
aGFyZWRTaXplOworICAgIHNpemVfdCB0ZXh0U2l6ZTsKKyAgICBzaXplX3QgbGlicmFyeVNpemU7
CisgICAgc2l6ZV90IGRhdGFTdGFja1NpemU7CisgICAgc2l6ZV90IGRpcnR5UGFnZVNpemU7Cit9
OworCitzdGF0aWMgY29uc3QgaW50IG1heEJ1ZmZlciA9IDEyODsKK3N0YXRpYyBjb25zdCBpbnQg
bWF4UHJvY2Vzc1BhdGggPSAzNTsKKworc3RhdGljIGlubGluZSBTdHJpbmcgbmV4dFRva2VuKEZJ
TEUqIGZpbGUpCit7CisgICAgQVNTRVJUKGZpbGUpOworICAgIGlmICghZmlsZSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgY2hhciBidWZmZXJbbWF4QnVmZmVyXSA9IHswLCB9Owor
ICAgIGJvb2wgZm91bmRQcmludGFibGUgPSBmYWxzZTsKKyAgICBpbnQgaW5kZXggPSAwOworICAg
IHdoaWxlIChpbmRleCA8IG1heEJ1ZmZlcikgeworICAgICAgICBjaGFyIGNoID0gZmdldGMoZmls
ZSk7CisgICAgICAgIGlmIChjaCA9PSBFT0YgfHwgKGlzQVNDSUlTcGFjZShjaCkgJiYgZm91bmRQ
cmludGFibGUpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghaXNBU0NJSVNwYWNl
KGNoKSkgeworICAgICAgICAgICAgYnVmZmVyW2luZGV4XSA9IGNoOworICAgICAgICAgICAgZm91
bmRQcmludGFibGUgPSB0cnVlOworICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyKTsKK30KKworc3RhdGljIGlubGluZSB2b2lk
IGFwcGVuZE1lbW9yeVN0YXRpc3RpY3MoV2ViTWVtb3J5U3RhdGlzdGljcyYgd2ViS2l0TWVtb3J5
U3RhdHMsIGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3QgdmFsdWUpCit7CisgICAgd2ViS2l0TWVt
b3J5U3RhdHMua2V5cy5hcHBlbmQoa2V5KTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMu
YXBwZW5kKHZhbHVlKTsKK30KKworc3RhdGljIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgc2FtcGxl
TWVtb3J5QWxsb2NhdGVkRm9yQXBwbGljYXRpb24oKQoreworICAgIEFwcGxpY2F0aW9uTWVtb3J5
U3RhdHMgYXBwbGljYXRpb25TdGF0czsKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQ
YXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy9z
ZWxmL3N0YXRtIik7CisgICAgRklMRSogc3RhdG1GaWxlRGVzY3JpcHRvciA9IGZvcGVuKHByb2Nl
c3NQYXRoLCAiciIpOworICAgIGlmICghc3RhdG1GaWxlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0
dXJuIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBhcHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3Jh
bVNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxlRGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBs
aWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6ZSA9IG5leHRUb2tlbihzdGF0bUZpbGVEZXNjcmlw
dG9yKS50b0ludCgpOworICAgIGFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSA9IG5leHRUb2tl
bihzdGF0bUZpbGVEZXNjcmlwdG9yKS50b0ludCgpOworICAgIGFwcGxpY2F0aW9uU3RhdHMudGV4
dFNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxlRGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBs
aWNhdGlvblN0YXRzLmxpYnJhcnlTaXplID0gbmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3Ip
LnRvSW50KCk7CisgICAgYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tTaXplID0gbmV4dFRva2Vu
KHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisgICAgYXBwbGljYXRpb25TdGF0cy5kaXJ0
eVBhZ2VTaXplID0gbmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisKKyAg
ICBmY2xvc2Uoc3RhdG1GaWxlRGVzY3JpcHRvcik7CisKKyAgICByZXR1cm4gYXBwbGljYXRpb25T
dGF0czsKK30KKworU3RyaW5nIFdlYk1lbW9yeVNhbXBsZXI6OnByb2Nlc3NOYW1lKCkgY29uc3QK
K3sKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihw
cm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy9zZWxmL3N0YXR1cyIpOworICAgIEZJ
TEUqIHN0YXR1c0ZpbGVEZXNjcmlwdG9yID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAg
aWYgKCFzdGF0dXNGaWxlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
ICAgICAKKyAgICBuZXh0VG9rZW4oc3RhdHVzRmlsZURlc2NyaXB0b3IpOworICAgIFN0cmluZyBw
cm9jZXNzTmFtZSA9IG5leHRUb2tlbihzdGF0dXNGaWxlRGVzY3JpcHRvcik7CisKKyAgICBmY2xv
c2Uoc3RhdHVzRmlsZURlc2NyaXB0b3IpOworCisgICAgcmV0dXJuIHByb2Nlc3NOYW1lOworfQor
CitXZWJNZW1vcnlTdGF0aXN0aWNzIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCgpIGNv
bnN0Cit7CisgICAgc2l6ZV90IHRvdGFsQnl0ZXNJblVzZSA9IDA7CisgICAgc2l6ZV90IHRvdGFs
Qnl0ZXNDb21taXR0ZWQgPSAwOworCisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBsaWNh
dGlvblN0YXRzID0gc2FtcGxlTWVtb3J5QWxsb2NhdGVkRm9yQXBwbGljYXRpb24oKTsKKworICAg
IFdlYk1lbW9yeVN0YXRpc3RpY3Mgd2ViS2l0TWVtb3J5U3RhdHM7CisKKyNpZiBVU0UoSlNDKQor
ICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzID0gV1RGOjpmYXN0
TWFsbG9jU3RhdGlzdGljcygpOworICAgIHNpemVfdCBmYXN0TWFsbG9jQnl0ZXNJblVzZSA9IGZh
c3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMgLSBmYXN0TWFsbG9jU3RhdGlzdGlj
cy5mcmVlTGlzdEJ5dGVzOworICAgIHNpemVfdCBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQgPSBm
YXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzOworICAgIHRvdGFsQnl0ZXNJblVz
ZSArPSBmYXN0TWFsbG9jQnl0ZXNJblVzZTsKKyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGZh
c3RNYWxsb2NCeXRlc0NvbW1pdHRlZDsKKworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNJblVzZSA9
IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5zaXplKCk7CisgICAgc2l6
ZV90IGpzY0hlYXBCeXRlc0NvbW1pdHRlZCA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKS0+aGVhcC5jYXBhY2l0eSgpOworICAgIHRvdGFsQnl0ZXNJblVzZSArPSBqc2NIZWFwQnl0
ZXNJblVzZTsKKyAgICB0b3RhbEJ5dGVzQ29tbWl0dGVkICs9IGpzY0hlYXBCeXRlc0NvbW1pdHRl
ZDsKKworICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9i
YWxNZW1vcnlTdGF0aXN0aWNzKCk7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGdsb2JhbE1lbW9y
eVN0YXRzLnN0YWNrQnl0ZXMgKyBnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlczsKKyAgICB0b3Rh
bEJ5dGVzQ29tbWl0dGVkICs9IGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMgKyBnbG9iYWxN
ZW1vcnlTdGF0cy5KSVRCeXRlczsKKyNlbmRpZgorCisgICAgZG91YmxlIG5vdyA9IGN1cnJlbnRU
aW1lKCk7CisKKyAgICBhcHBlbmRNZW1vcnlTdGF0aXN0aWNzKHdlYktpdE1lbW9yeVN0YXRzLCBT
dHJpbmcoIlRpbWVzdGFtcCIpLCBub3cpOworCisgICAgYXBwZW5kTWVtb3J5U3RhdGlzdGljcyh3
ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUb3RhbCBQcm9ncmFtIFNpemUiKSwgYXBwbGljYXRp
b25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0aXN0aWNzKHdl
YktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlJTUyIpLCBhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50
U2V0U2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdGlzdGljcyh3ZWJLaXRNZW1vcnlTdGF0cywg
U3RyaW5nKCJTaGFyZWQiKSwgYXBwbGljYXRpb25TdGF0cy5zaGFyZWRTaXplKTsKKyAgICBhcHBl
bmRNZW1vcnlTdGF0aXN0aWNzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIlRleHQiKSwgYXBw
bGljYXRpb25TdGF0cy50ZXh0U2l6ZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdGlzdGljcyh3ZWJL
aXRNZW1vcnlTdGF0cywgU3RyaW5nKCJMaWJyYXJ5IiksIGFwcGxpY2F0aW9uU3RhdHMubGlicmFy
eVNpemUpOworICAgIGFwcGVuZE1lbW9yeVN0YXRpc3RpY3Mod2ViS2l0TWVtb3J5U3RhdHMsIFN0
cmluZygiRGF0YS9TdGFjayIpLCBhcHBsaWNhdGlvblN0YXRzLmRhdGFTdGFja1NpemUpOworICAg
IGFwcGVuZE1lbW9yeVN0YXRpc3RpY3Mod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiRGlydHki
KSwgYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworI2lmIFVTRShKU0MpCisgICAg
YXBwZW5kTWVtb3J5U3RhdGlzdGljcyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJUb3RhbCBN
ZW1vcnkgSW4gVXNlIiksIHRvdGFsQnl0ZXNJblVzZSk7CisgICAgYXBwZW5kTWVtb3J5U3RhdGlz
dGljcyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIiks
IGZhc3RNYWxsb2NCeXRlc0luVXNlKTsKKyAgICBhcHBlbmRNZW1vcnlTdGF0aXN0aWNzKHdlYktp
dE1lbW9yeVN0YXRzLCBTdHJpbmcoIkphdmFTY3JpcHQgSGVhcCBCeXRlcyIpLCBqc2NIZWFwQnl0
ZXNJblVzZSk7CisKKyAgICBhcHBlbmRNZW1vcnlTdGF0aXN0aWNzKHdlYktpdE1lbW9yeVN0YXRz
LCBTdHJpbmcoIlRvdGFsIENvbW1pdHRlZCBNZW1vcnkiKSwgdG90YWxCeXRlc0NvbW1pdHRlZCk7
CisgICAgYXBwZW5kTWVtb3J5U3RhdGlzdGljcyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJG
YXN0IE1hbGxvYyBab25lIEJ5dGVzIiksIGZhc3RNYWxsb2NCeXRlc0NvbW1pdHRlZCk7CisgICAg
YXBwZW5kTWVtb3J5U3RhdGlzdGljcyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJKYXZhU2Ny
aXB0IEhlYXAgQnl0ZXMiKSwganNjSGVhcEJ5dGVzQ29tbWl0dGVkKTsKKyAgICAKKyAgICBhcHBl
bmRNZW1vcnlTdGF0aXN0aWNzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJpbmcoIkphdmFTY3JpcHQg
U3RhY2sgQnl0ZXMiKSwgZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyk7CisgICAgYXBwZW5k
TWVtb3J5U3RhdGlzdGljcyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJKYXZhU2NyaXB0IEpJ
VCBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcyk7CisjZW5kaWYKKworICAgIHN0
cnVjdCBzeXNpbmZvIHN5c3RlbUluZm87CisgICAgaWYgKCFzeXNpbmZvKCZzeXN0ZW1JbmZvKSkg
eworICAgICAgICBhcHBlbmRNZW1vcnlTdGF0aXN0aWNzKHdlYktpdE1lbW9yeVN0YXRzLCBTdHJp
bmcoIlN5c3RlbSBUb3RhbCBCeXRlcyIpLCBzeXN0ZW1JbmZvLnRvdGFscmFtKTsKKyAgICAgICAg
YXBwZW5kTWVtb3J5U3RhdGlzdGljcyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJBdmFpbGFi
bGUgQnl0ZXMiKSwgc3lzdGVtSW5mby5mcmVlcmFtKTsKKyAgICAgICAgYXBwZW5kTWVtb3J5U3Rh
dGlzdGljcyh3ZWJLaXRNZW1vcnlTdGF0cywgU3RyaW5nKCJTaGFyZWQgQnl0ZXMiKSwgc3lzdGVt
SW5mby5zaGFyZWRyYW0pOworICAgICAgICBhcHBlbmRNZW1vcnlTdGF0aXN0aWNzKHdlYktpdE1l
bW9yeVN0YXRzLCBTdHJpbmcoIkJ1ZmZlciBCeXRlcyIpLCBzeXN0ZW1JbmZvLmJ1ZmZlcnJhbSk7
CisgICAgICAgIGFwcGVuZE1lbW9yeVN0YXRpc3RpY3Mod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmlu
ZygiVG90YWwgU3dhcCBCeXRlcyIpLCBzeXN0ZW1JbmZvLnRvdGFsc3dhcCk7CisgICAgICAgIGFw
cGVuZE1lbW9yeVN0YXRpc3RpY3Mod2ViS2l0TWVtb3J5U3RhdHMsIFN0cmluZygiQXZhaWxhYmxl
IFN3YXAgQnl0ZXMiKSwgc3lzdGVtSW5mby5mcmVlc3dhcCk7CisgICAgfSAgIAorCisgICAgcmV0
dXJuIHdlYktpdE1lbW9yeVN0YXRzOworfQorCit2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNlbmRN
ZW1vcnlQcmVzc3VyZUV2ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcAppbmRleCA3MTUwNGY2NDFkMjA2NWRmMmJmNjg4ZGE0NWU5NWQ1YTUxZGI1OGI0Li44ZjY5
NzJhZDc1NTc2NTRkMDIwMGQyYmU2OWVkZjkzZDYwOWQ1ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaW5jbHVkZSAiVmlicmF0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
ICNpbmNsdWRlICJXS0NvbnRleHRTb3VwLmgiCisjaW5jbHVkZSAiV0tOdW1iZXIuaCIKICNpbmNs
dWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdr
X2NvbnRleHRfZG93bmxvYWRfY2xpZW50X3ByaXZhdGUuaCIKQEAgLTg1LDYgKzg2LDE2IEBAIHN0
cnVjdCBfRXdrX0NvbnRleHQgewogICAgICAgICB2aWJyYXRpb25Qcm92aWRlciA9IFZpYnJhdGlv
blByb3ZpZGVyOjpjcmVhdGUod2tWaWJyYXRpb25SZWYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TUVNT1JZX1NBTVBMRVIpCisgICAgICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVNZW1vcnlTYW1w
bGVyID0gZmFsc2U7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGVudmlyb25tZW50VmFyaWFi
bGVbXSA9ICJNRU1PUllfU0FNUExFUiI7CisKKyAgICAgICAgaWYgKCFpbml0aWFsaXplTWVtb3J5
U2FtcGxlciAmJiBnZXRlbnYoZW52aXJvbm1lbnRWYXJpYWJsZSkpIHsKKyAgICAgICAgICAgIFdL
UmV0YWluUHRyPFdLRG91YmxlUmVmPiBpbnRlcnZhbChBZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZSgw
LjApKTsKKyAgICAgICAgICAgIFdLQ29udGV4dFN0YXJ0TWVtb3J5U2FtcGxlcihjb250ZXh0Lmdl
dCgpLCBpbnRlcnZhbC5nZXQoKSk7CisgICAgICAgICAgICBpbml0aWFsaXplTWVtb3J5U2FtcGxl
ciA9IHRydWU7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBld2tfY29udGV4dF9yZXF1ZXN0
X21hbmFnZXJfY2xpZW50X2F0dGFjaCh0aGlzKTsKICAgICAgICAgZXdrX2NvbnRleHRfZG93bmxv
YWRfY2xpZW50X2F0dGFjaCh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDU3
OWQ1OTkwNzBlMDFjNTVjYTA1OWYxYzJmODRmNTFlNmY0ZTVmYTYuLjg2NzViZThlZDY5ZjU2ZDgz
ZGUyY2JiY2I4OWI3OTBjMzhiNTQ3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC03OCw2ICs3
OCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FD
WV9XRUJLSVRfQkxPQl9CVUlMREVSIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0xJTktfUFJFRkVUQ0ggT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9NSUNST0RBVEEgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggNDM5NmRhMmExYjA0YTJmZGZlNTdlODc1NzQ1ZWY4
M2Y0ZTA0MjJmYS4uZTQzMDk2YTUwYTdlOTI4OTEyODRkZGQwZTU4NTAxMzZlZTVjNGFkMyAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBNQUNSTyAoV0VCS0lU
X09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU09V
UkNFICJUb2dnbGUgTWVkaWEgU291cmNlIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfTUVESUFfU1RBVElTVElDUyAiVG9nZ2xlIE1lZGlhIFN0YXRpc3RpY3Mg
c3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9TVFJF
QU0gIlRvZ2dsZSBNZWRpYSBTdHJlYW0gQVBJIHN1cHBvcnQiIE9GRikKKyAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgIlRvZ2dsZSBNZW1vcnkgU2FtcGxlciBz
dXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FVEVSX0VMRU1F
TlQgIlRvZ2dsZSBNZXRlciBUYWcgc3VwcG9ydCIgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX01IVE1MICJUb2dnbGUgTUhUTUwgc3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9NSUNST0RBVEEgIlRvZ2dsZSBNaWNyb2RhdGEgc3VwcG9ydCIg
T0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UgYi9Tb3VyY2UvY21h
a2Vjb25maWcuaC5jbWFrZQppbmRleCA4ODU1NWZiNTJjZDc4YzhiN2YwMjgwYWJkOGE4NzA3M2Iw
NjdmNzJmLi4wMWMxOTRmNjVjNDFiMzFlYmI3YTU2ODQ2NDk2NzgwMjYzZmYzZDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Vjb25maWcu
aC5jbWFrZQpAQCAtNjcsNiArNjcsNyBAQAogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX01BVEhNTAog
I2NtYWtlZGVmaW5lMDEgRU5BQkxFX01FRElBX0NBUFRVUkUKICNjbWFrZWRlZmluZTAxIEVOQUJM
RV9NRURJQV9TVFJFQU0KKyNjbWFrZWRlZmluZTAxIEVOQUJMRV9NRU1PUllfU0FNUExFUgogI2Nt
YWtlZGVmaW5lMDEgRU5BQkxFX01FVEVSX0VMRU1FTlQKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9N
SUNST0RBVEEKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMKZGlmZiAt
LWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNjE2OTZkZWI5MTE5NzcxZWVkMTAy
ZWI5MjM5NzhhZDdjOTQ4ODQzLi43MDM5MDExNGExZjEzZTcxN2EzMWIyOTJmY2QwYjAyNGZiYWE5
NWRjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTItMDgtMjkgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXVtDTUFLRV0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IFdlYk1l
bW9yeVNhbXBsZXIgZmVhdHVyZSBvbiBpbiBFRkwgcG9ydC4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZToKKwogMjAx
Mi0wOC0yOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgQWRkIGRpcmVjdG9yeSBnZW5lcmF0ZWQgYnkgRWNsaXBzZSB0byAuZ2l0aWdub3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161479</attachid>
            <date>2012-08-30 08:40:27 -0700</date>
            <delta_ts>2012-08-30 10:24:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120831004015.patch</filename>
            <type>text/plain</type>
            <size>15702</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODZhMmFjNGRhZTU3NzVjMGQxYjdiMmZkZGJkODEwNWM0ZWI3MDQwLi5jOWNmZGVjNzgxNmIzNDNi
MzhjYjgwOTBkOWZiZjkyZWJlM2U2MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0zMCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYk1lbW9y
eVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1lbW9yeSB1c2FnZSBp
biBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
CisKIDIwMTItMDgtMzAgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29t
LmNuPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBFbGltaW5hdGUgYnVpbGQgd2FybmluZ3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBiOWM1M2Q3Zjg0MWQ2OWFjMjU1MWY5NWU0MjVmZDA5NzI4Yzc4Mzc4Li40Yzlk
MWJjMTc2NzBjYjBkODYwNTM4MTMzYzQ2YjAwNTE4M2FjMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTItMDgtMzAgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViTWVt
b3J5U2FtcGxlciBmZWF0dXJlIHRvIEVGTCBwb3J0LiBXZWJNZW1vcnlTYW1wbGVyIHJlY29yZHMg
bWVtb3J5IHVzYWdlIG9mCisgICAgICAgIFdlYlByb2Nlc3MgYW5kIFVJIFByb2Nlc3MgYW5kIGFs
c28gaXQgcmVjb3JkcyBhcHBsaWNhdGlvbiBtZW1vcnkgc3RhdHVzIGluIHJlYWwgdGltZS4KKyAg
ICAgICAgSW5jbHVkZWQgaXRlbXMgb24gdGhlIHJlc3VsdCBhcmUgSklULCBKUyBoZWFwLCBmYXN0
bWFsbG9jIGJ5dGVzIGFuZAorICAgICAgICBhcHBsaWNhdGlvbiBtZW1vcnkgaW5mbyBmcm9tIC9w
cm9jL3Byb2Nlc3NfaWQvc3RhdG0uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBTaGFyZWQvbGludXgvV2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQXBwbGljYXRpb25NZW1vcnlTdGF0cyk6CisgICAg
ICAgIChXZWJLaXQ6Om5leHRUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OmFwcGVuZEtleVZhbHVl
UGFpcik6CisgICAgICAgIChXZWJLaXQ6OnNhbXBsZU1lbW9yeUFsbG9jYXRlZEZvckFwcGxpY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3
a19Db250ZXh0OjpfRXdrX0NvbnRleHQpOgorCiAyMDEyLTA4LTMwICBNaWtlIFNpZXJyYSAgPG1p
a2Uuc2llcnJhQG5va2lhLmNvbT4KIAogICAgICAgICBbUVRdW1dLMl0gd2VidmlldyBBUEkgZG9j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDQ4ODM0Y2Y3NTVm
NzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1NjY4ZS4uNzhhM2ExZjE3YmU2OTcyMzBiMTQ2OGFkYTEx
YmRiMGIwYWE3YWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMSw2ICsxLDggQEAKIExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAogICAgIGppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmNwcAorCisgICAgcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogKQogCiBM
SVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKaW5kZXggM2EwNTA1YzZhMTEzMThkMjg5MDQzMzllMjlkMjQ4N2ZiODRmYTdmZC4uNTZjYTBj
MTk3MjRhOWMzOGZjYmRjNzk3NWM5ZDI2NmZiMzM3NmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKQEAgLTE1LDYgKzE1LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAogICAgIFBsYXRmb3JtL0Nv
cmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKIAorICAgIFNoYXJlZC9XZWJNZW1vcnlTYW1w
bGVyLmNwcAorCiAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAogICAg
IFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRHdGsuY3BwCkBAIC0yOCw2ICszMCw4
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9lZmwvUHJvY2Vzc0V4
ZWN1dGFibGVQYXRoRWZsLmNwcAogICAgIFNoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAog
CisgICAgU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAKKwogICAgIFNoYXJl
ZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcAogICAgIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9saW51eC9XZWJNZW1vcnlTYW1wbGVyTGludXguY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU5YjUzMDRj
MzYxMDFiYWNjMmEzNmFlNjc5NjMwYmJmMGFiNzczNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1wbGVyTGludXguY3BwCkBAIC0wLDAg
KzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIuaCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExF
UikKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvTWVtb3J5U3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPHN5cy9zeXNpbmZvLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdHJ1Y3QgQXBwbGljYXRpb25NZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRvdGFs
UHJvZ3JhbVNpemU7CisgICAgc2l6ZV90IHJlc2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qgc2hh
cmVkU2l6ZTsKKyAgICBzaXplX3QgdGV4dFNpemU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXplOwor
ICAgIHNpemVfdCBkYXRhU3RhY2tTaXplOworICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOworfTsK
Kworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtYXhCdWZmZXIgPSAxMjg7CitzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW50IG1heFByb2Nlc3NQYXRoID0gMzU7CisKK3N0YXRpYyBpbmxpbmUgU3Ry
aW5nIG5leHRUb2tlbihGSUxFKiBmaWxlKQoreworICAgIEFTU0VSVChmaWxlKTsKKyAgICBpZiAo
IWZpbGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGNoYXIgYnVmZmVyW21heEJ1
ZmZlcl0gPSB7MCwgfTsKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSAwOworICAgIHdoaWxlIChp
bmRleCA8IG1heEJ1ZmZlcikgeworICAgICAgICBjaGFyIGNoID0gZmdldGMoZmlsZSk7CisgICAg
ICAgIGlmIChjaCA9PSBFT0YgfHwgKGlzQVNDSUlTcGFjZShjaCkgJiYgaW5kZXgpKSAvLyBCcmVh
ayBvbiBub24taW5pdGlhbCBBU0NJSSBzcGFjZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAoIWlzQVNDSUlTcGFjZShjaCkpIHsKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleF0gPSBj
aDsKKyAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
U3RyaW5nKGJ1ZmZlcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRLZXlWYWx1ZVBh
aXIoV2ViTWVtb3J5U3RhdGlzdGljcyYgc3RhdHMsIGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3Qg
dmFsdWUpCit7CisgICAgc3RhdHMua2V5cy5hcHBlbmQoa2V5KTsKKyAgICBzdGF0cy52YWx1ZXMu
YXBwZW5kKHZhbHVlKTsKK30KKworc3RhdGljIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgc2FtcGxl
TWVtb3J5QWxsb2NhdGVkRm9yQXBwbGljYXRpb24oKQoreworICAgIEFwcGxpY2F0aW9uTWVtb3J5
U3RhdHMgYXBwbGljYXRpb25TdGF0czsKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQ
YXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy9z
ZWxmL3N0YXRtIik7CisgICAgRklMRSogc3RhdG1GaWxlRGVzY3JpcHRvciA9IGZvcGVuKHByb2Nl
c3NQYXRoLCAiciIpOworICAgIGlmICghc3RhdG1GaWxlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0
dXJuIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAgICBhcHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3Jh
bVNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxlRGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBs
aWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6ZSA9IG5leHRUb2tlbihzdGF0bUZpbGVEZXNjcmlw
dG9yKS50b0ludCgpOworICAgIGFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSA9IG5leHRUb2tl
bihzdGF0bUZpbGVEZXNjcmlwdG9yKS50b0ludCgpOworICAgIGFwcGxpY2F0aW9uU3RhdHMudGV4
dFNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxlRGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBs
aWNhdGlvblN0YXRzLmxpYnJhcnlTaXplID0gbmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3Ip
LnRvSW50KCk7CisgICAgYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tTaXplID0gbmV4dFRva2Vu
KHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisgICAgYXBwbGljYXRpb25TdGF0cy5kaXJ0
eVBhZ2VTaXplID0gbmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisKKyAg
ICBmY2xvc2Uoc3RhdG1GaWxlRGVzY3JpcHRvcik7CisKKyAgICByZXR1cm4gYXBwbGljYXRpb25T
dGF0czsKK30KKworU3RyaW5nIFdlYk1lbW9yeVNhbXBsZXI6OnByb2Nlc3NOYW1lKCkgY29uc3QK
K3sKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihw
cm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy9zZWxmL3N0YXR1cyIpOworICAgIEZJ
TEUqIHN0YXR1c0ZpbGVEZXNjcmlwdG9yID0gZm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAg
aWYgKCFzdGF0dXNGaWxlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
ICAgICAKKyAgICBuZXh0VG9rZW4oc3RhdHVzRmlsZURlc2NyaXB0b3IpOworICAgIFN0cmluZyBw
cm9jZXNzTmFtZSA9IG5leHRUb2tlbihzdGF0dXNGaWxlRGVzY3JpcHRvcik7CisKKyAgICBmY2xv
c2Uoc3RhdHVzRmlsZURlc2NyaXB0b3IpOworCisgICAgcmV0dXJuIHByb2Nlc3NOYW1lOworfQor
CitXZWJNZW1vcnlTdGF0aXN0aWNzIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCgpIGNv
bnN0Cit7CisgICAgV2ViTWVtb3J5U3RhdGlzdGljcyB3ZWJLaXRNZW1vcnlTdGF0czsKKworICAg
IGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgpOworCisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdl
YktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIlRpbWVzdGFtcCIpLCBub3cpOworCisgICAg
QXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBsaWNhdGlvblN0YXRzID0gc2FtcGxlTWVtb3J5QWxs
b2NhdGVkRm9yQXBwbGljYXRpb24oKTsKKworICAgIGFwcGVuZEtleVZhbHVlUGFpcih3ZWJLaXRN
ZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJUb3RhbCBQcm9ncmFtIFNpemUiKSwgYXBwbGljYXRp
b25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsKKyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0
TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiUlNTIiksIGFwcGxpY2F0aW9uU3RhdHMucmVzaWRl
bnRTZXRTaXplKTsKKyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFT
Q0lJTGl0ZXJhbCgiU2hhcmVkIiksIGFwcGxpY2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSk7CisgICAg
YXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIlRleHQi
KSwgYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6ZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdl
YktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkxpYnJhcnkiKSwgYXBwbGljYXRpb25TdGF0
cy5saWJyYXJ5U2l6ZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRz
LCBBU0NJSUxpdGVyYWwoIkRhdGEvU3RhY2siKSwgYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tT
aXplKTsKKyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0
ZXJhbCgiRGlydHkiKSwgYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworI2lmIFVT
RShKU0MpCisgICAgc2l6ZV90IHRvdGFsQnl0ZXNJblVzZSA9IDA7CisgICAgc2l6ZV90IHRvdGFs
Qnl0ZXNDb21taXR0ZWQgPSAwOworCisgICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxv
Y1N0YXRpc3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CisgICAgc2l6ZV90IGZh
c3RNYWxsb2NCeXRlc0luVXNlID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRl
cyAtIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXM7CisgICAgc2l6ZV90IGZhc3RN
YWxsb2NCeXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0
ZXM7CisgICAgdG90YWxCeXRlc0luVXNlICs9IGZhc3RNYWxsb2NCeXRlc0luVXNlOworICAgIHRv
dGFsQnl0ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkOworCisgICAgc2l6
ZV90IGpzY0hlYXBCeXRlc0luVXNlID0gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
LT5oZWFwLnNpemUoKTsKKyAgICBzaXplX3QganNjSGVhcEJ5dGVzQ29tbWl0dGVkID0gSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmNhcGFjaXR5KCk7CisgICAgdG90YWxC
eXRlc0luVXNlICs9IGpzY0hlYXBCeXRlc0luVXNlOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQg
Kz0ganNjSGVhcEJ5dGVzQ29tbWl0dGVkOworCisgICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBn
bG9iYWxNZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKKyAgICB0b3RhbEJ5
dGVzSW5Vc2UgKz0gZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0
YXRzLkpJVEJ5dGVzOworICAgIHRvdGFsQnl0ZXNDb21taXR0ZWQgKz0gZ2xvYmFsTWVtb3J5U3Rh
dHMuc3RhY2tCeXRlcyArIGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzOworCisgICAgYXBwZW5k
S2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIlRvdGFsIE1lbW9y
eSBJbiBVc2UiKSwgdG90YWxCeXRlc0luVXNlKTsKKyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2Vi
S2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpLCBm
YXN0TWFsbG9jQnl0ZXNJblVzZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9y
eVN0YXRzLCBBU0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgSGVhcCBCeXRlcyIpLCBqc2NIZWFwQnl0
ZXNJblVzZSk7CisKKyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFT
Q0lJTGl0ZXJhbCgiVG90YWwgQ29tbWl0dGVkIE1lbW9yeSIpLCB0b3RhbEJ5dGVzQ29tbWl0dGVk
KTsKKyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJh
bCgiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpLCBmYXN0TWFsbG9jQnl0ZXNDb21taXR0ZWQpOwor
ICAgIGFwcGVuZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJK
YXZhU2NyaXB0IEhlYXAgQnl0ZXMiKSwganNjSGVhcEJ5dGVzQ29tbWl0dGVkKTsKKyAgICAKKyAg
ICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2
YVNjcmlwdCBTdGFjayBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKTsKKyAg
ICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2
YVNjcmlwdCBKSVQgQnl0ZXMiKSwgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOworI2VuZGlm
CisKKyAgICBzdHJ1Y3Qgc3lzaW5mbyBzeXN0ZW1JbmZvOworICAgIGlmICghc3lzaW5mbygmc3lz
dGVtSW5mbykpIHsKKyAgICAgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRz
LCBBU0NJSUxpdGVyYWwoIlN5c3RlbSBUb3RhbCBCeXRlcyIpLCBzeXN0ZW1JbmZvLnRvdGFscmFt
KTsKKyAgICAgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxp
dGVyYWwoIkF2YWlsYWJsZSBCeXRlcyIpLCBzeXN0ZW1JbmZvLmZyZWVyYW0pOworICAgICAgICBh
cHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiU2hhcmVk
IEJ5dGVzIiksIHN5c3RlbUluZm8uc2hhcmVkcmFtKTsKKyAgICAgICAgYXBwZW5kS2V5VmFsdWVQ
YWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkJ1ZmZlciBCeXRlcyIpLCBzeXN0
ZW1JbmZvLmJ1ZmZlcnJhbSk7CisgICAgICAgIGFwcGVuZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1v
cnlTdGF0cywgQVNDSUlMaXRlcmFsKCJUb3RhbCBTd2FwIEJ5dGVzIiksIHN5c3RlbUluZm8udG90
YWxzd2FwKTsKKyAgICAgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBB
U0NJSUxpdGVyYWwoIkF2YWlsYWJsZSBTd2FwIEJ5dGVzIiksIHN5c3RlbUluZm8uZnJlZXN3YXAp
OworICAgIH0gICAKKworICAgIHJldHVybiB3ZWJLaXRNZW1vcnlTdGF0czsKK30KKwordm9pZCBX
ZWJNZW1vcnlTYW1wbGVyOjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggNzE1MDRmNjQxZDIwNjVkZjJiZjY4OGRh
NDVlOTVkNWE1MWRiNThiNC4uOGY2OTcyYWQ3NTU3NjU0ZDAyMDBkMmJlNjllZGY5M2Q2MDlkNWQ3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgorI2luY2x1
ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0
cmluZy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudF9wcml2YXRlLmgi
CkBAIC04NSw2ICs4NiwxNiBAQCBzdHJ1Y3QgX0V3a19Db250ZXh0IHsKICAgICAgICAgdmlicmF0
aW9uUHJvdmlkZXIgPSBWaWJyYXRpb25Qcm92aWRlcjo6Y3JlYXRlKHdrVmlicmF0aW9uUmVmKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1FTU9SWV9TQU1QTEVSKQorICAgICAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplTWVtb3J5U2FtcGxlciA9IGZhbHNlOworICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciBlbnZpcm9ubWVudFZhcmlhYmxlW10gPSAiTUVNT1JZX1NBTVBMRVIiOworCisgICAgICAg
IGlmICghaW5pdGlhbGl6ZU1lbW9yeVNhbXBsZXIgJiYgZ2V0ZW52KGVudmlyb25tZW50VmFyaWFi
bGUpKSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4gaW50ZXJ2YWwoQWRv
cHRXSywgV0tEb3VibGVDcmVhdGUoMC4wKSk7CisgICAgICAgICAgICBXS0NvbnRleHRTdGFydE1l
bW9yeVNhbXBsZXIoY29udGV4dC5nZXQoKSwgaW50ZXJ2YWwuZ2V0KCkpOworICAgICAgICAgICAg
aW5pdGlhbGl6ZU1lbW9yeVNhbXBsZXIgPSB0cnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9hdHRhY2godGhpcyk7CiAgICAg
ICAgIGV3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudF9hdHRhY2godGhpcyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZQppbmRleCA1NzlkNTk5MDcwZTAxYzU1Y2EwNTlmMWMyZjg0ZjUxZTZmNGU1
ZmE2Li44Njc1YmU4ZWQ2OWY1NmQ4M2RlMmNiYmNiODliNzkwYzM4YjU0NzQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZQpAQCAtNzgsNiArNzgsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJTERFUiBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MSU5LX1BSRUZFVENIIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX0NBUFRVUkUgT04pCitXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUlDUk9EQVRBIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VU
SUxTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9BUEkgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDQzOTZkYTJh
MWIwNGEyZmRmZTU3ZTg3NTc0NWVmODNmNGUwNDIyZmEuLmU0MzA5NmE1MGE3ZTkyODkxMjg0ZGRk
MGU1ODUwMTM2ZWU1YzRhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJl
cy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDYg
Kzc3LDcgQEAgTUFDUk8gKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX01FRElBX1NPVVJDRSAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgIlRv
Z2dsZSBNZWRpYSBTdGF0aXN0aWNzIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfTUVESUFfU1RSRUFNICJUb2dnbGUgTWVkaWEgU3RyZWFtIEFQSSBzdXBwb3J0
IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FTU9SWV9TQU1QTEVSICJU
b2dnbGUgTWVtb3J5IFNhbXBsZXIgc3VwcG9ydCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9NRVRFUl9FTEVNRU5UICJUb2dnbGUgTWV0ZXIgVGFnIHN1cHBvcnQiIE9OKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NSFRNTCAiVG9nZ2xlIE1IVE1MIHN1cHBv
cnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUlDUk9EQVRBICJUb2dn
bGUgTWljcm9kYXRhIHN1cHBvcnQiIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZWNvbmZp
Zy5oLmNtYWtlIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKaW5kZXggODg1NTVmYjUyY2Q3
OGM4YjdmMDI4MGFiZDhhODcwNzNiMDY3ZjcyZi4uMDFjMTk0ZjY1YzQxYjMxZWJiN2E1Njg0NjQ5
Njc4MDI2M2ZmM2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKKysr
IGIvU291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKQEAgLTY3LDYgKzY3LDcgQEAKICNjbWFrZWRl
ZmluZTAxIEVOQUJMRV9NQVRITUwKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NRURJQV9DQVBUVVJF
CiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVESUFfU1RSRUFNCisjY21ha2VkZWZpbmUwMSBFTkFC
TEVfTUVNT1JZX1NBTVBMRVIKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NRVRFUl9FTEVNRU5UCiAj
Y21ha2VkZWZpbmUwMSBFTkFCTEVfTUlDUk9EQVRBCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTVVU
QVRJT05fT0JTRVJWRVJTCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
NDAxOTlkNWVjOTkzMWRmMDg2YmQ2ODdkZjA2OTYxNTZkNDdiNjQxNS4uOGY1OGUwNTIxMGY2MmNi
ODhhNTRiNjFjYmEzY2Q3MWYxMzY1NTM3NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTMwICBKdW5nSmlrIExlZSAgPGp1bmdq
aWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFdlYk1lbW9yeVNh
bXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2V0IFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZSBvbiBpbiBFRkwgcG9ydC4KKworICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2Vjb25maWcu
aC5jbWFrZToKKwogMjAxMi0wOC0yOSAgVGhpYWdvIE1hY2llaXJhICA8dGhpYWdvLm1hY2llaXJh
QGludGVsLmNvbT4KIAogICAgICAgICBUZWxsIGdpdC1hcmNoaXZlIHRvIG5vdCBleHBvcnQgLmdp
dGF0dHJpYnV0ZXMgYW5kIC5naXRpZ25vcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161509</attachid>
            <date>2012-08-30 10:24:08 -0700</date>
            <delta_ts>2012-08-30 10:31:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120831022356.patch</filename>
            <type>text/plain</type>
            <size>15801</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTNlNmI1NDAwMTRmZWIwZDBlZTRhZjY4Nzg2NTI2ZDIzMDc3OGQ1Li4xYzEyNzg2YjY1OWRiYzhj
MjYyMzAzNGRmMDAwZTdiZTU3OGMyZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0zMCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFdlYk1lbW9yeVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1l
bW9yeSB1c2FnZSBpbiBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisKIDIwMTItMDgtMzAgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIFNldCB0aW1lciBjbGllbnQgb24gcGxhdGZvcm0gdGltZXIgdXNl
ZCBpbiBIZWFwVGltZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiOWM1M2Q3Zjg0MWQ2OWFjMjU1MWY5NWU0MjVm
ZDA5NzI4Yzc4Mzc4Li4yM2QzNTNjYzczN2YyOWEyNTA5Nzc1ODJkODkwNDYzYTdhZjlmOTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDgtMzAgIEp1bmdKaWsgTGVlICA8anVu
Z2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgV2ViTWVtb3J5
U2FtcGxlciBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KKworICAgICAgICBBZGQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlIHRvIEVGTCBw
b3J0LiBXZWJNZW1vcnlTYW1wbGVyIHJlY29yZHMgbWVtb3J5IHVzYWdlIG9mCisgICAgICAgIFdl
YlByb2Nlc3MgYW5kIFVJIFByb2Nlc3MgYW5kIGFsc28gaXQgcmVjb3JkcyBhcHBsaWNhdGlvbiBt
ZW1vcnkgc3RhdHVzIGluIHJlYWwgdGltZS4KKyAgICAgICAgSW5jbHVkZWQgaXRlbXMgb24gdGhl
IHJlc3VsdCBhcmUgSklULCBKUyBoZWFwLCBmYXN0bWFsbG9jIGJ5dGVzIGFuZAorICAgICAgICBh
cHBsaWNhdGlvbiBtZW1vcnkgaW5mbyBmcm9tIC9wcm9jL3Byb2Nlc3NfaWQvc3RhdG0uCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvbGludXgvV2ViTWVt
b3J5U2FtcGxlckxpbnV4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
QXBwbGljYXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6Om5leHRUb2tlbik6Cisg
ICAgICAgIChXZWJLaXQ6OmFwcGVuZEtleVZhbHVlUGFpcik6CisgICAgICAgIChXZWJLaXQ6OnNh
bXBsZU1lbW9yeUFsbG9jYXRlZEZvckFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlT
YW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVy
OjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3a19Db250ZXh0OjpfRXdrX0NvbnRleHQpOgor
CiAyMDEyLTA4LTMwICBNaWtlIFNpZXJyYSAgPG1pa2Uuc2llcnJhQG5va2lhLmNvbT4KIAogICAg
ICAgICBbUVRdW1dLMl0gd2VidmlldyBBUEkgZG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZv
cm1FZmwuY21ha2UKaW5kZXggNDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1NjY4
ZS4uNzhhM2ExZjE3YmU2OTcyMzBiMTQ2OGFkYTExYmRiMGIwYWE3YWQ3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw2ICsxLDggQEAKIExJU1QoQVBQRU5E
IEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVk
Vk1Qb29sLmNwcAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorCisgICAgcnVudGlt
ZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogKQogCiBMSVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9M
SUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggM2EwNTA1YzZhMTEzMThkMjg5
MDQzMzllMjlkMjQ4N2ZiODRmYTdmZC4uNTZjYTBjMTk3MjRhOWMzOGZjYmRjNzk3NWM5ZDI2NmZi
MzM3NmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE1LDYgKzE1LDggQEAgTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5j
cHAKIAorICAgIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAorCiAgICAgU2hhcmVkL0FQSS9j
L2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAogICAgIFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGlj
c0NvbnRleHRHdGsuY3BwCkBAIC0yOCw2ICszMCw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFNoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAogICAgIFNo
YXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAogCisgICAgU2hhcmVkL2xpbnV4L1dlYk1lbW9y
eVNhbXBsZXJMaW51eC5jcHAKKwogICAgIFNoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvLmNwcAogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1wbGVy
TGludXguY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJM
aW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk5ZTRjZWFkMDE1NDYyYWVlZTQ5NjNiZDcyNWJhNTA5MjIz
MmRhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJN
ZW1vcnlTYW1wbGVyTGludXguY3BwCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIu
aCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9zeXNpbmZvLmg+CisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5h
bWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgQXBwbGljYXRpb25N
ZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRvdGFsUHJvZ3JhbVNpemU7CisgICAgc2l6ZV90IHJl
c2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qgc2hhcmVkU2l6ZTsKKyAgICBzaXplX3QgdGV4dFNp
emU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXplOworICAgIHNpemVfdCBkYXRhU3RhY2tTaXplOwor
ICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOworfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
dCBtYXhCdWZmZXIgPSAxMjg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1heFByb2Nlc3NQ
YXRoID0gMzU7CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIG5leHRUb2tlbihGSUxFKiBmaWxlKQor
eworICAgIEFTU0VSVChmaWxlKTsKKyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGNoYXIgYnVmZmVyW21heEJ1ZmZlcl0gPSB7MCwgfTsKKyAgICB1bnNpZ25l
ZCBpbnQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IG1heEJ1ZmZlcikgeworICAgICAg
ICBjaGFyIGNoID0gZmdldGMoZmlsZSk7CisgICAgICAgIGlmIChjaCA9PSBFT0YgfHwgKGlzQVND
SUlTcGFjZShjaCkgJiYgaW5kZXgpKSAvLyBCcmVhayBvbiBub24taW5pdGlhbCBBU0NJSSBzcGFj
ZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIWlzQVNDSUlTcGFjZShjaCkpIHsK
KyAgICAgICAgICAgIGJ1ZmZlcltpbmRleF0gPSBjaDsKKyAgICAgICAgICAgIGluZGV4Kys7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBhcHBlbmRLZXlWYWx1ZVBhaXIoV2ViTWVtb3J5U3RhdGlzdGljcyYgc3Rh
dHMsIGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3QgdmFsdWUpCit7CisgICAgc3RhdHMua2V5cy5h
cHBlbmQoa2V5KTsKKyAgICBzdGF0cy52YWx1ZXMuYXBwZW5kKHZhbHVlKTsKK30KKworc3RhdGlj
IEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgc2FtcGxlTWVtb3J5QWxsb2NhdGVkRm9yQXBwbGljYXRp
b24oKQoreworICAgIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBwbGljYXRpb25TdGF0czsKKyAg
ICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNz
UGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy9zZWxmL3N0YXRtIik7CisgICAgRklMRSogc3Rh
dG1GaWxlRGVzY3JpcHRvciA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAgIGlmICghc3Rh
dG1GaWxlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAg
ICBhcHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxl
RGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6
ZSA9IG5leHRUb2tlbihzdGF0bUZpbGVEZXNjcmlwdG9yKS50b0ludCgpOworICAgIGFwcGxpY2F0
aW9uU3RhdHMuc2hhcmVkU2l6ZSA9IG5leHRUb2tlbihzdGF0bUZpbGVEZXNjcmlwdG9yKS50b0lu
dCgpOworICAgIGFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxl
RGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBsaWNhdGlvblN0YXRzLmxpYnJhcnlTaXplID0g
bmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisgICAgYXBwbGljYXRpb25T
dGF0cy5kYXRhU3RhY2tTaXplID0gbmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50
KCk7CisgICAgYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplID0gbmV4dFRva2VuKHN0YXRt
RmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisKKyAgICBmY2xvc2Uoc3RhdG1GaWxlRGVzY3JpcHRv
cik7CisKKyAgICByZXR1cm4gYXBwbGljYXRpb25TdGF0czsKK30KKworU3RyaW5nIFdlYk1lbW9y
eVNhbXBsZXI6OnByb2Nlc3NOYW1lKCkgY29uc3QKK3sKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21h
eFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgs
ICIvcHJvYy9zZWxmL3N0YXR1cyIpOworICAgIEZJTEUqIHN0YXR1c0ZpbGVEZXNjcmlwdG9yID0g
Zm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAgaWYgKCFzdGF0dXNGaWxlRGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICAKKyAgICBuZXh0VG9rZW4oc3RhdHVz
RmlsZURlc2NyaXB0b3IpOworICAgIFN0cmluZyBwcm9jZXNzTmFtZSA9IG5leHRUb2tlbihzdGF0
dXNGaWxlRGVzY3JpcHRvcik7CisKKyAgICBmY2xvc2Uoc3RhdHVzRmlsZURlc2NyaXB0b3IpOwor
CisgICAgcmV0dXJuIHByb2Nlc3NOYW1lOworfQorCitXZWJNZW1vcnlTdGF0aXN0aWNzIFdlYk1l
bW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCgpIGNvbnN0Cit7CisgICAgV2ViTWVtb3J5U3RhdGlz
dGljcyB3ZWJLaXRNZW1vcnlTdGF0czsKKworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgp
OworCisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVy
YWwoIlRpbWVzdGFtcCIpLCBub3cpOworCisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBs
aWNhdGlvblN0YXRzID0gc2FtcGxlTWVtb3J5QWxsb2NhdGVkRm9yQXBwbGljYXRpb24oKTsKKwor
ICAgIGFwcGVuZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJU
b3RhbCBQcm9ncmFtIFNpemUiKSwgYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsK
KyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgi
UlNTIiksIGFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICBhcHBlbmRLZXlW
YWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiU2hhcmVkIiksIGFwcGxp
Y2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1l
bW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIlRleHQiKSwgYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6
ZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVy
YWwoIkxpYnJhcnkiKSwgYXBwbGljYXRpb25TdGF0cy5saWJyYXJ5U2l6ZSk7CisgICAgYXBwZW5k
S2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkRhdGEvU3RhY2si
KSwgYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tTaXplKTsKKyAgICBhcHBlbmRLZXlWYWx1ZVBh
aXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiRGlydHkiKSwgYXBwbGljYXRpb25T
dGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworICAgIHNpemVfdCB0b3RhbEJ5dGVzSW5Vc2UgPSAwOwor
ICAgIHNpemVfdCB0b3RhbEJ5dGVzQ29tbWl0dGVkID0gMDsKKworI2lmIEVOQUJMRShHTE9CQUxf
RkFTVE1BTExPQ19ORVcpCisgICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRp
c3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CisgICAgc2l6ZV90IGZhc3RNYWxs
b2NCeXRlc0luVXNlID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcyAtIGZh
c3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXM7CisgICAgc2l6ZV90IGZhc3RNYWxsb2NC
eXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXM7Cisg
ICAgdG90YWxCeXRlc0luVXNlICs9IGZhc3RNYWxsb2NCeXRlc0luVXNlOworICAgIHRvdGFsQnl0
ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkOworCisgICAgYXBwZW5kS2V5
VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkZhc3QgTWFsbG9jIElu
IFVzZSIpLCBmYXN0TWFsbG9jQnl0ZXNJblVzZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdl
YktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkZhc3QgTWFsbG9jIENvbW1pdHRlZCBNZW1v
cnkiKSwgZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKKyNlbmRpZgorCisjaWYgVVNFKEpTQykK
KyAgICBzaXplX3QganNjSGVhcEJ5dGVzSW5Vc2UgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmhlYXAuc2l6ZSgpOworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNDb21taXR0ZWQg
PSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuY2FwYWNpdHkoKTsKKyAg
ICB0b3RhbEJ5dGVzSW5Vc2UgKz0ganNjSGVhcEJ5dGVzSW5Vc2U7CisgICAgdG90YWxCeXRlc0Nv
bW1pdHRlZCArPSBqc2NIZWFwQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBHbG9iYWxNZW1vcnlTdGF0
aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOworICAg
IHRvdGFsQnl0ZXNJblVzZSArPSBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFs
TWVtb3J5U3RhdHMuSklUQnl0ZXM7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBnbG9iYWxN
ZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7CisKKyAg
ICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2
YVNjcmlwdCBIZWFwIEluIFVzZSIpLCBqc2NIZWFwQnl0ZXNJblVzZSk7CisgICAgYXBwZW5kS2V5
VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgSGVh
cCBDb21taXRlZCBNZW1vcnkiKSwganNjSGVhcEJ5dGVzQ29tbWl0dGVkKTsKKyAgICAKKyAgICBh
cHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2YVNj
cmlwdCBTdGFjayBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKTsKKyAgICBh
cHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2YVNj
cmlwdCBKSVQgQnl0ZXMiKSwgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOworI2VuZGlmCisK
KyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgi
VG90YWwgTWVtb3J5IEluIFVzZSIpLCB0b3RhbEJ5dGVzSW5Vc2UpOworICAgIGFwcGVuZEtleVZh
bHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJUb3RhbCBDb21taXR0ZWQg
TWVtb3J5IiksIHRvdGFsQnl0ZXNDb21taXR0ZWQpOworCisgICAgc3RydWN0IHN5c2luZm8gc3lz
dGVtSW5mbzsKKyAgICBpZiAoIXN5c2luZm8oJnN5c3RlbUluZm8pKSB7CisgICAgICAgIGFwcGVu
ZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJTeXN0ZW0gVG90
YWwgQnl0ZXMiKSwgc3lzdGVtSW5mby50b3RhbHJhbSk7CisgICAgICAgIGFwcGVuZEtleVZhbHVl
UGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJBdmFpbGFibGUgQnl0ZXMiKSwg
c3lzdGVtSW5mby5mcmVlcmFtKTsKKyAgICAgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1l
bW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIlNoYXJlZCBCeXRlcyIpLCBzeXN0ZW1JbmZvLnNoYXJl
ZHJhbSk7CisgICAgICAgIGFwcGVuZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVND
SUlMaXRlcmFsKCJCdWZmZXIgQnl0ZXMiKSwgc3lzdGVtSW5mby5idWZmZXJyYW0pOworICAgICAg
ICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiVG90
YWwgU3dhcCBCeXRlcyIpLCBzeXN0ZW1JbmZvLnRvdGFsc3dhcCk7CisgICAgICAgIGFwcGVuZEtl
eVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJBdmFpbGFibGUgU3dh
cCBCeXRlcyIpLCBzeXN0ZW1JbmZvLmZyZWVzd2FwKTsKKyAgICB9ICAgCisKKyAgICByZXR1cm4g
d2ViS2l0TWVtb3J5U3RhdHM7Cit9CisKK3ZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c2VuZE1lbW9y
eVByZXNzdXJlRXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
CmluZGV4IDcxNTA0ZjY0MWQyMDY1ZGYyYmY2ODhkYTQ1ZTk1ZDVhNTFkYjU4YjQuLjYwYzc5ZTE2
ZWUwYmY5NDdjMDAyYWZjYWM5NjdjZDIyNzI1MTE2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJWaWJyYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLQ29udGV4dFNvdXAuaCIKKyNpbmNsdWRlICJXS051bWJlci5oIgogI2luY2x1ZGUg
IldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJld2tfY29u
dGV4dF9kb3dubG9hZF9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODUsNiArODYsMTYgQEAgc3RydWN0
IF9Fd2tfQ29udGV4dCB7CiAgICAgICAgIHZpYnJhdGlvblByb3ZpZGVyID0gVmlicmF0aW9uUHJv
dmlkZXI6OmNyZWF0ZSh3a1ZpYnJhdGlvblJlZik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRU1P
UllfU0FNUExFUikKKyAgICAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZU1lbW9yeVNhbXBsZXIg
PSBmYWxzZTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZW52aXJvbm1lbnRWYXJpYWJsZVtd
ID0gIlNBTVBMRV9NRU1PUlkiOworCisgICAgICAgIGlmICghaW5pdGlhbGl6ZU1lbW9yeVNhbXBs
ZXIgJiYgZ2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUpKSB7CisgICAgICAgICAgICBXS1JldGFp
blB0cjxXS0RvdWJsZVJlZj4gaW50ZXJ2YWwoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoMC4wKSk7
CisgICAgICAgICAgICBXS0NvbnRleHRTdGFydE1lbW9yeVNhbXBsZXIoY29udGV4dC5nZXQoKSwg
aW50ZXJ2YWwuZ2V0KCkpOworICAgICAgICAgICAgaW5pdGlhbGl6ZU1lbW9yeVNhbXBsZXIgPSB0
cnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2NsaWVudF9hdHRhY2godGhpcyk7CiAgICAgICAgIGV3a19jb250ZXh0X2Rvd25sb2FkX2Ns
aWVudF9hdHRhY2godGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA1NzlkNTk5
MDcwZTAxYzU1Y2EwNTlmMWMyZjg0ZjUxZTZmNGU1ZmE2Li44Njc1YmU4ZWQ2OWY1NmQ4M2RlMmNi
YmNiODliNzkwYzM4YjU0NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzgsNiArNzgsNyBA
QCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfV0VC
S0lUX0JMT0JfQlVJTERFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9MSU5LX1BSRUZFVENIIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01FRElBX0NBUFRVUkUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlCmluZGV4IDQzOTZkYTJhMWIwNGEyZmRmZTU3ZTg3NTc0NWVmODNmNGUw
NDIyZmEuLmU0MzA5NmE1MGE3ZTkyODkxMjg0ZGRkMGU1ODUwMTM2ZWU1YzRhZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDYgKzc3LDcgQEAgTUFDUk8gKFdFQktJVF9PUFRJ
T05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NPVVJDRSAi
VG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgIlRvZ2dsZSBNZWRpYSBTdGF0aXN0aWNzIHN1cHBv
cnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RSRUFNICJU
b2dnbGUgTWVkaWEgU3RyZWFtIEFQSSBzdXBwb3J0IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX01FTU9SWV9TQU1QTEVSICJUb2dnbGUgTWVtb3J5IFNhbXBsZXIgc3VwcG9y
dCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRVRFUl9FTEVNRU5UICJU
b2dnbGUgTWV0ZXIgVGFnIHN1cHBvcnQiIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9NSFRNTCAiVG9nZ2xlIE1IVE1MIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfTUlDUk9EQVRBICJUb2dnbGUgTWljcm9kYXRhIHN1cHBvcnQiIE9GRikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlIGIvU291cmNlL2NtYWtlY29u
ZmlnLmguY21ha2UKaW5kZXggODg1NTVmYjUyY2Q3OGM4YjdmMDI4MGFiZDhhODcwNzNiMDY3Zjcy
Zi4uMDFjMTk0ZjY1YzQxYjMxZWJiN2E1Njg0NjQ5Njc4MDI2M2ZmM2Q2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKKysrIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21h
a2UKQEAgLTY3LDYgKzY3LDcgQEAKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NQVRITUwKICNjbWFr
ZWRlZmluZTAxIEVOQUJMRV9NRURJQV9DQVBUVVJFCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVE
SUFfU1RSRUFNCisjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIKICNjbWFrZWRl
ZmluZTAxIEVOQUJMRV9NRVRFUl9FTEVNRU5UCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUlDUk9E
QVRBCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNDAxOTlkNWVjOTkzMWRmMDg2YmQ2ODdkZjA2
OTYxNTZkNDdiNjQxNS4uNjg3OTc4ZjdiOWRhZTAzZmQ0ZjI0NjJlYzk2NzQ4M2EzZDJlNDc4NyAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDEyLTA4LTMwICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtFRkxdW1dLMl0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgU2V0IFdlYk1l
bW9yeVNhbXBsZXIgZmVhdHVyZSBvbiBpbiBFRkwgcG9ydC4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZToKKwogMjAx
Mi0wOC0yOSAgVGhpYWdvIE1hY2llaXJhICA8dGhpYWdvLm1hY2llaXJhQGludGVsLmNvbT4KIAog
ICAgICAgICBUZWxsIGdpdC1hcmNoaXZlIHRvIG5vdCBleHBvcnQgLmdpdGF0dHJpYnV0ZXMgYW5k
IC5naXRpZ25vcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161510</attachid>
            <date>2012-08-30 10:31:40 -0700</date>
            <delta_ts>2012-08-30 14:56:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91214-20120831023128.patch</filename>
            <type>text/plain</type>
            <size>15801</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTNlNmI1NDAwMTRmZWIwZDBlZTRhZjY4Nzg2NTI2ZDIzMDc3OGQ1Li4xYzEyNzg2YjY1OWRiYzhj
MjYyMzAzNGRmMDAwZTdiZTU3OGMyZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOC0zMCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBXZWJNZW1vcnlTYW1wbGVyIGZlYXR1cmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTIxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFdlYk1lbW9yeVNhbXBsZXIgY29sbGVjdHMgSmF2YXNjcmlwdCBzdGFjayBhbmQgSklUIG1l
bW9yeSB1c2FnZSBpbiBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisKIDIwMTItMDgtMzAgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIFNldCB0aW1lciBjbGllbnQgb24gcGxhdGZvcm0gdGltZXIgdXNl
ZCBpbiBIZWFwVGltZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiOWM1M2Q3Zjg0MWQ2OWFjMjU1MWY5NWU0MjVm
ZDA5NzI4Yzc4Mzc4Li4yM2QzNTNjYzczN2YyOWEyNTA5Nzc1ODJkODkwNDYzYTdhZjlmOTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDgtMzAgIEp1bmdKaWsgTGVlICA8anVu
Z2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgV2ViTWVtb3J5
U2FtcGxlciBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTEyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KKworICAgICAgICBBZGQgV2ViTWVtb3J5U2FtcGxlciBmZWF0dXJlIHRvIEVGTCBw
b3J0LiBXZWJNZW1vcnlTYW1wbGVyIHJlY29yZHMgbWVtb3J5IHVzYWdlIG9mCisgICAgICAgIFdl
YlByb2Nlc3MgYW5kIFVJIFByb2Nlc3MgYW5kIGFsc28gaXQgcmVjb3JkcyBhcHBsaWNhdGlvbiBt
ZW1vcnkgc3RhdHVzIGluIHJlYWwgdGltZS4KKyAgICAgICAgSW5jbHVkZWQgaXRlbXMgb24gdGhl
IHJlc3VsdCBhcmUgSklULCBKUyBoZWFwLCBmYXN0bWFsbG9jIGJ5dGVzIGFuZAorICAgICAgICBh
cHBsaWNhdGlvbiBtZW1vcnkgaW5mbyBmcm9tIC9wcm9jL3Byb2Nlc3NfaWQvc3RhdG0uCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvbGludXgvV2ViTWVt
b3J5U2FtcGxlckxpbnV4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
QXBwbGljYXRpb25NZW1vcnlTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6Om5leHRUb2tlbik6Cisg
ICAgICAgIChXZWJLaXQ6OmFwcGVuZEtleVZhbHVlUGFpcik6CisgICAgICAgIChXZWJLaXQ6OnNh
bXBsZU1lbW9yeUFsbG9jYXRlZEZvckFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVtb3J5U2FtcGxlcjo6cHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlT
YW1wbGVyOjpzYW1wbGVXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVy
OjpzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoX0V3a19Db250ZXh0OjpfRXdrX0NvbnRleHQpOgor
CiAyMDEyLTA4LTMwICBNaWtlIFNpZXJyYSAgPG1pa2Uuc2llcnJhQG5va2lhLmNvbT4KIAogICAg
ICAgICBbUVRdW1dLMl0gd2VidmlldyBBUEkgZG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZv
cm1FZmwuY21ha2UKaW5kZXggNDQ4ODM0Y2Y3NTVmNzcwZGIxYjdjNDQ1Yjk2YjEzYzNhNGU1NjY4
ZS4uNzhhM2ExZjE3YmU2OTcyMzBiMTQ2OGFkYTExYmRiMGIwYWE3YWQ3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMSw2ICsxLDggQEAKIExJU1QoQVBQRU5E
IEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVk
Vk1Qb29sLmNwcAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorCisgICAgcnVudGlt
ZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAogKQogCiBMSVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9M
SUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggM2EwNTA1YzZhMTEzMThkMjg5
MDQzMzllMjlkMjQ4N2ZiODRmYTdmZC4uNTZjYTBjMTk3MjRhOWMzOGZjYmRjNzk3NWM5ZDI2NmZi
MzM3NmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE1LDYgKzE1LDggQEAgTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5j
cHAKIAorICAgIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAorCiAgICAgU2hhcmVkL0FQSS9j
L2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAogICAgIFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGlj
c0NvbnRleHRHdGsuY3BwCkBAIC0yOCw2ICszMCw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFNoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAogICAgIFNo
YXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAogCisgICAgU2hhcmVkL2xpbnV4L1dlYk1lbW9y
eVNhbXBsZXJMaW51eC5jcHAKKwogICAgIFNoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvLmNwcAogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1wbGVy
TGludXguY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJM
aW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk5ZTRjZWFkMDE1NDYyYWVlZTQ5NjNiZDcyNWJhNTA5MjIz
MmRhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJN
ZW1vcnlTYW1wbGVyTGludXguY3BwCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIu
aCIKKworI2lmIEVOQUJMRShNRU1PUllfU0FNUExFUikKKworI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9zeXNpbmZvLmg+CisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5h
bWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgQXBwbGljYXRpb25N
ZW1vcnlTdGF0cyB7CisgICAgc2l6ZV90IHRvdGFsUHJvZ3JhbVNpemU7CisgICAgc2l6ZV90IHJl
c2lkZW50U2V0U2l6ZTsKKyAgICBzaXplX3Qgc2hhcmVkU2l6ZTsKKyAgICBzaXplX3QgdGV4dFNp
emU7CisgICAgc2l6ZV90IGxpYnJhcnlTaXplOworICAgIHNpemVfdCBkYXRhU3RhY2tTaXplOwor
ICAgIHNpemVfdCBkaXJ0eVBhZ2VTaXplOworfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
dCBtYXhCdWZmZXIgPSAxMjg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1heFByb2Nlc3NQ
YXRoID0gMzU7CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIG5leHRUb2tlbihGSUxFKiBmaWxlKQor
eworICAgIEFTU0VSVChmaWxlKTsKKyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGNoYXIgYnVmZmVyW21heEJ1ZmZlcl0gPSB7MCwgfTsKKyAgICB1bnNpZ25l
ZCBpbnQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IG1heEJ1ZmZlcikgeworICAgICAg
ICBjaGFyIGNoID0gZmdldGMoZmlsZSk7CisgICAgICAgIGlmIChjaCA9PSBFT0YgfHwgKGlzQVND
SUlTcGFjZShjaCkgJiYgaW5kZXgpKSAvLyBCcmVhayBvbiBub24taW5pdGlhbCBBU0NJSSBzcGFj
ZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIWlzQVNDSUlTcGFjZShjaCkpIHsK
KyAgICAgICAgICAgIGJ1ZmZlcltpbmRleF0gPSBjaDsKKyAgICAgICAgICAgIGluZGV4Kys7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBhcHBlbmRLZXlWYWx1ZVBhaXIoV2ViTWVtb3J5U3RhdGlzdGljcyYgc3Rh
dHMsIGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3QgdmFsdWUpCit7CisgICAgc3RhdHMua2V5cy5h
cHBlbmQoa2V5KTsKKyAgICBzdGF0cy52YWx1ZXMuYXBwZW5kKHZhbHVlKTsKK30KKworc3RhdGlj
IEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgc2FtcGxlTWVtb3J5QWxsb2NhdGVkRm9yQXBwbGljYXRp
b24oKQoreworICAgIEFwcGxpY2F0aW9uTWVtb3J5U3RhdHMgYXBwbGljYXRpb25TdGF0czsKKyAg
ICBjaGFyIHByb2Nlc3NQYXRoW21heFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNz
UGF0aCwgbWF4UHJvY2Vzc1BhdGgsICIvcHJvYy9zZWxmL3N0YXRtIik7CisgICAgRklMRSogc3Rh
dG1GaWxlRGVzY3JpcHRvciA9IGZvcGVuKHByb2Nlc3NQYXRoLCAiciIpOworICAgIGlmICghc3Rh
dG1GaWxlRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uU3RhdHM7CisKKyAg
ICBhcHBsaWNhdGlvblN0YXRzLnRvdGFsUHJvZ3JhbVNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxl
RGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBsaWNhdGlvblN0YXRzLnJlc2lkZW50U2V0U2l6
ZSA9IG5leHRUb2tlbihzdGF0bUZpbGVEZXNjcmlwdG9yKS50b0ludCgpOworICAgIGFwcGxpY2F0
aW9uU3RhdHMuc2hhcmVkU2l6ZSA9IG5leHRUb2tlbihzdGF0bUZpbGVEZXNjcmlwdG9yKS50b0lu
dCgpOworICAgIGFwcGxpY2F0aW9uU3RhdHMudGV4dFNpemUgPSBuZXh0VG9rZW4oc3RhdG1GaWxl
RGVzY3JpcHRvcikudG9JbnQoKTsKKyAgICBhcHBsaWNhdGlvblN0YXRzLmxpYnJhcnlTaXplID0g
bmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisgICAgYXBwbGljYXRpb25T
dGF0cy5kYXRhU3RhY2tTaXplID0gbmV4dFRva2VuKHN0YXRtRmlsZURlc2NyaXB0b3IpLnRvSW50
KCk7CisgICAgYXBwbGljYXRpb25TdGF0cy5kaXJ0eVBhZ2VTaXplID0gbmV4dFRva2VuKHN0YXRt
RmlsZURlc2NyaXB0b3IpLnRvSW50KCk7CisKKyAgICBmY2xvc2Uoc3RhdG1GaWxlRGVzY3JpcHRv
cik7CisKKyAgICByZXR1cm4gYXBwbGljYXRpb25TdGF0czsKK30KKworU3RyaW5nIFdlYk1lbW9y
eVNhbXBsZXI6OnByb2Nlc3NOYW1lKCkgY29uc3QKK3sKKyAgICBjaGFyIHByb2Nlc3NQYXRoW21h
eFByb2Nlc3NQYXRoXTsKKyAgICBzbnByaW50Zihwcm9jZXNzUGF0aCwgbWF4UHJvY2Vzc1BhdGgs
ICIvcHJvYy9zZWxmL3N0YXR1cyIpOworICAgIEZJTEUqIHN0YXR1c0ZpbGVEZXNjcmlwdG9yID0g
Zm9wZW4ocHJvY2Vzc1BhdGgsICJyIik7CisgICAgaWYgKCFzdGF0dXNGaWxlRGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICAKKyAgICBuZXh0VG9rZW4oc3RhdHVz
RmlsZURlc2NyaXB0b3IpOworICAgIFN0cmluZyBwcm9jZXNzTmFtZSA9IG5leHRUb2tlbihzdGF0
dXNGaWxlRGVzY3JpcHRvcik7CisKKyAgICBmY2xvc2Uoc3RhdHVzRmlsZURlc2NyaXB0b3IpOwor
CisgICAgcmV0dXJuIHByb2Nlc3NOYW1lOworfQorCitXZWJNZW1vcnlTdGF0aXN0aWNzIFdlYk1l
bW9yeVNhbXBsZXI6OnNhbXBsZVdlYktpdCgpIGNvbnN0Cit7CisgICAgV2ViTWVtb3J5U3RhdGlz
dGljcyB3ZWJLaXRNZW1vcnlTdGF0czsKKworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgp
OworCisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVy
YWwoIlRpbWVzdGFtcCIpLCBub3cpOworCisgICAgQXBwbGljYXRpb25NZW1vcnlTdGF0cyBhcHBs
aWNhdGlvblN0YXRzID0gc2FtcGxlTWVtb3J5QWxsb2NhdGVkRm9yQXBwbGljYXRpb24oKTsKKwor
ICAgIGFwcGVuZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJU
b3RhbCBQcm9ncmFtIFNpemUiKSwgYXBwbGljYXRpb25TdGF0cy50b3RhbFByb2dyYW1TaXplKTsK
KyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgi
UlNTIiksIGFwcGxpY2F0aW9uU3RhdHMucmVzaWRlbnRTZXRTaXplKTsKKyAgICBhcHBlbmRLZXlW
YWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiU2hhcmVkIiksIGFwcGxp
Y2F0aW9uU3RhdHMuc2hhcmVkU2l6ZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1l
bW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIlRleHQiKSwgYXBwbGljYXRpb25TdGF0cy50ZXh0U2l6
ZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVy
YWwoIkxpYnJhcnkiKSwgYXBwbGljYXRpb25TdGF0cy5saWJyYXJ5U2l6ZSk7CisgICAgYXBwZW5k
S2V5VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkRhdGEvU3RhY2si
KSwgYXBwbGljYXRpb25TdGF0cy5kYXRhU3RhY2tTaXplKTsKKyAgICBhcHBlbmRLZXlWYWx1ZVBh
aXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiRGlydHkiKSwgYXBwbGljYXRpb25T
dGF0cy5kaXJ0eVBhZ2VTaXplKTsKKworICAgIHNpemVfdCB0b3RhbEJ5dGVzSW5Vc2UgPSAwOwor
ICAgIHNpemVfdCB0b3RhbEJ5dGVzQ29tbWl0dGVkID0gMDsKKworI2lmIEVOQUJMRShHTE9CQUxf
RkFTVE1BTExPQ19ORVcpCisgICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRp
c3RpY3MgPSBXVEY6OmZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CisgICAgc2l6ZV90IGZhc3RNYWxs
b2NCeXRlc0luVXNlID0gZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcyAtIGZh
c3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXM7CisgICAgc2l6ZV90IGZhc3RNYWxsb2NC
eXRlc0NvbW1pdHRlZCA9IGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXM7Cisg
ICAgdG90YWxCeXRlc0luVXNlICs9IGZhc3RNYWxsb2NCeXRlc0luVXNlOworICAgIHRvdGFsQnl0
ZXNDb21taXR0ZWQgKz0gZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkOworCisgICAgYXBwZW5kS2V5
VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkZhc3QgTWFsbG9jIElu
IFVzZSIpLCBmYXN0TWFsbG9jQnl0ZXNJblVzZSk7CisgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdl
YktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkZhc3QgTWFsbG9jIENvbW1pdHRlZCBNZW1v
cnkiKSwgZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKKyNlbmRpZgorCisjaWYgVVNFKEpTQykK
KyAgICBzaXplX3QganNjSGVhcEJ5dGVzSW5Vc2UgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmhlYXAuc2l6ZSgpOworICAgIHNpemVfdCBqc2NIZWFwQnl0ZXNDb21taXR0ZWQg
PSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuY2FwYWNpdHkoKTsKKyAg
ICB0b3RhbEJ5dGVzSW5Vc2UgKz0ganNjSGVhcEJ5dGVzSW5Vc2U7CisgICAgdG90YWxCeXRlc0Nv
bW1pdHRlZCArPSBqc2NIZWFwQnl0ZXNDb21taXR0ZWQ7CisKKyAgICBHbG9iYWxNZW1vcnlTdGF0
aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOworICAg
IHRvdGFsQnl0ZXNJblVzZSArPSBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFs
TWVtb3J5U3RhdHMuSklUQnl0ZXM7CisgICAgdG90YWxCeXRlc0NvbW1pdHRlZCArPSBnbG9iYWxN
ZW1vcnlTdGF0cy5zdGFja0J5dGVzICsgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXM7CisKKyAg
ICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2
YVNjcmlwdCBIZWFwIEluIFVzZSIpLCBqc2NIZWFwQnl0ZXNJblVzZSk7CisgICAgYXBwZW5kS2V5
VmFsdWVQYWlyKHdlYktpdE1lbW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgSGVh
cCBDb21taXRlZCBNZW1vcnkiKSwganNjSGVhcEJ5dGVzQ29tbWl0dGVkKTsKKyAgICAKKyAgICBh
cHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2YVNj
cmlwdCBTdGFjayBCeXRlcyIpLCBnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKTsKKyAgICBh
cHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiSmF2YVNj
cmlwdCBKSVQgQnl0ZXMiKSwgZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOworI2VuZGlmCisK
KyAgICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgi
VG90YWwgTWVtb3J5IEluIFVzZSIpLCB0b3RhbEJ5dGVzSW5Vc2UpOworICAgIGFwcGVuZEtleVZh
bHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJUb3RhbCBDb21taXR0ZWQg
TWVtb3J5IiksIHRvdGFsQnl0ZXNDb21taXR0ZWQpOworCisgICAgc3RydWN0IHN5c2luZm8gc3lz
dGVtSW5mbzsKKyAgICBpZiAoIXN5c2luZm8oJnN5c3RlbUluZm8pKSB7CisgICAgICAgIGFwcGVu
ZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJTeXN0ZW0gVG90
YWwgQnl0ZXMiKSwgc3lzdGVtSW5mby50b3RhbHJhbSk7CisgICAgICAgIGFwcGVuZEtleVZhbHVl
UGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJBdmFpbGFibGUgQnl0ZXMiKSwg
c3lzdGVtSW5mby5mcmVlcmFtKTsKKyAgICAgICAgYXBwZW5kS2V5VmFsdWVQYWlyKHdlYktpdE1l
bW9yeVN0YXRzLCBBU0NJSUxpdGVyYWwoIlNoYXJlZCBCeXRlcyIpLCBzeXN0ZW1JbmZvLnNoYXJl
ZHJhbSk7CisgICAgICAgIGFwcGVuZEtleVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVND
SUlMaXRlcmFsKCJCdWZmZXIgQnl0ZXMiKSwgc3lzdGVtSW5mby5idWZmZXJyYW0pOworICAgICAg
ICBhcHBlbmRLZXlWYWx1ZVBhaXIod2ViS2l0TWVtb3J5U3RhdHMsIEFTQ0lJTGl0ZXJhbCgiVG90
YWwgU3dhcCBCeXRlcyIpLCBzeXN0ZW1JbmZvLnRvdGFsc3dhcCk7CisgICAgICAgIGFwcGVuZEtl
eVZhbHVlUGFpcih3ZWJLaXRNZW1vcnlTdGF0cywgQVNDSUlMaXRlcmFsKCJBdmFpbGFibGUgU3dh
cCBCeXRlcyIpLCBzeXN0ZW1JbmZvLmZyZWVzd2FwKTsKKyAgICB9ICAgCisKKyAgICByZXR1cm4g
d2ViS2l0TWVtb3J5U3RhdHM7Cit9CisKK3ZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c2VuZE1lbW9y
eVByZXNzdXJlRXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
CmluZGV4IDcxNTA0ZjY0MWQyMDY1ZGYyYmY2ODhkYTQ1ZTk1ZDVhNTFkYjU4YjQuLjYwYzc5ZTE2
ZWUwYmY5NDdjMDAyYWZjYWM5NjdjZDIyNzI1MTE2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJWaWJyYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLQ29udGV4dFNvdXAuaCIKKyNpbmNsdWRlICJXS051bWJlci5oIgogI2luY2x1ZGUg
IldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJld2tfY29u
dGV4dF9kb3dubG9hZF9jbGllbnRfcHJpdmF0ZS5oIgpAQCAtODUsNiArODYsMTYgQEAgc3RydWN0
IF9Fd2tfQ29udGV4dCB7CiAgICAgICAgIHZpYnJhdGlvblByb3ZpZGVyID0gVmlicmF0aW9uUHJv
dmlkZXI6OmNyZWF0ZSh3a1ZpYnJhdGlvblJlZik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRU1P
UllfU0FNUExFUikKKyAgICAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZU1lbW9yeVNhbXBsZXIg
PSBmYWxzZTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZW52aXJvbm1lbnRWYXJpYWJsZVtd
ID0gIlNBTVBMRV9NRU1PUlkiOworCisgICAgICAgIGlmICghaW5pdGlhbGl6ZU1lbW9yeVNhbXBs
ZXIgJiYgZ2V0ZW52KGVudmlyb25tZW50VmFyaWFibGUpKSB7CisgICAgICAgICAgICBXS1JldGFp
blB0cjxXS0RvdWJsZVJlZj4gaW50ZXJ2YWwoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoMC4wKSk7
CisgICAgICAgICAgICBXS0NvbnRleHRTdGFydE1lbW9yeVNhbXBsZXIoY29udGV4dC5nZXQoKSwg
aW50ZXJ2YWwuZ2V0KCkpOworICAgICAgICAgICAgaW5pdGlhbGl6ZU1lbW9yeVNhbXBsZXIgPSB0
cnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5h
Z2VyX2NsaWVudF9hdHRhY2godGhpcyk7CiAgICAgICAgIGV3a19jb250ZXh0X2Rvd25sb2FkX2Ns
aWVudF9hdHRhY2godGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA1NzlkNTk5
MDcwZTAxYzU1Y2EwNTlmMWMyZjg0ZjUxZTZmNGU1ZmE2Li44Njc1YmU4ZWQ2OWY1NmQ4M2RlMmNi
YmNiODliNzkwYzM4YjU0NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzgsNiArNzgsNyBA
QCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfV0VC
S0lUX0JMT0JfQlVJTERFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9MSU5LX1BSRUZFVENIIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01FRElBX0NBUFRVUkUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlCmluZGV4IDQzOTZkYTJhMWIwNGEyZmRmZTU3ZTg3NTc0NWVmODNmNGUw
NDIyZmEuLmU0MzA5NmE1MGE3ZTkyODkxMjg0ZGRkMGU1ODUwMTM2ZWU1YzRhZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDYgKzc3LDcgQEAgTUFDUk8gKFdFQktJVF9PUFRJ
T05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NPVVJDRSAi
VG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgIlRvZ2dsZSBNZWRpYSBTdGF0aXN0aWNzIHN1cHBv
cnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RSRUFNICJU
b2dnbGUgTWVkaWEgU3RyZWFtIEFQSSBzdXBwb3J0IiBPRkYpCisgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX01FTU9SWV9TQU1QTEVSICJUb2dnbGUgTWVtb3J5IFNhbXBsZXIgc3VwcG9y
dCIgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRVRFUl9FTEVNRU5UICJU
b2dnbGUgTWV0ZXIgVGFnIHN1cHBvcnQiIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9NSFRNTCAiVG9nZ2xlIE1IVE1MIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfTUlDUk9EQVRBICJUb2dnbGUgTWljcm9kYXRhIHN1cHBvcnQiIE9GRikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlIGIvU291cmNlL2NtYWtlY29u
ZmlnLmguY21ha2UKaW5kZXggODg1NTVmYjUyY2Q3OGM4YjdmMDI4MGFiZDhhODcwNzNiMDY3Zjcy
Zi4uMDFjMTk0ZjY1YzQxYjMxZWJiN2E1Njg0NjQ5Njc4MDI2M2ZmM2Q2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKKysrIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21h
a2UKQEAgLTY3LDYgKzY3LDcgQEAKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9NQVRITUwKICNjbWFr
ZWRlZmluZTAxIEVOQUJMRV9NRURJQV9DQVBUVVJFCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVE
SUFfU1RSRUFNCisjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIKICNjbWFrZWRl
ZmluZTAxIEVOQUJMRV9NRVRFUl9FTEVNRU5UCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTUlDUk9E
QVRBCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNDAxOTlkNWVjOTkzMWRmMDg2YmQ2ODdkZjA2
OTYxNTZkNDdiNjQxNS4uNjg3OTc4ZjdiOWRhZTAzZmQ0ZjI0NjJlYzk2NzQ4M2EzZDJlNDc4NyAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDEyLTA4LTMwICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtFRkxdW1dLMl0gQWRkIFdlYk1lbW9yeVNhbXBsZXIgZmVhdHVyZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgU2V0IFdlYk1l
bW9yeVNhbXBsZXIgZmVhdHVyZSBvbiBpbiBFRkwgcG9ydC4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZToKKwogMjAx
Mi0wOC0yOSAgVGhpYWdvIE1hY2llaXJhICA8dGhpYWdvLm1hY2llaXJhQGludGVsLmNvbT4KIAog
ICAgICAgICBUZWxsIGdpdC1hcmNoaXZlIHRvIG5vdCBleHBvcnQgLmdpdGF0dHJpYnV0ZXMgYW5k
IC5naXRpZ25vcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>