Lý thuyết

6.1: Diversification and Portfolio Risk

  • Concept: Diversification reduces risk by combining assets with returns that are not perfectly correlated.
  • Types of Risk:
    • Systematic Risk (Market Risk): Risk that affects the entire market or economy as a whole (VD: suy thoái, lạm phát, thiên tai,…). It’s also known as undiversifiable risk because it can’t be eliminated by diversifying your investments. Cannot be diversified away.
    • unique risk/firm-specific risk/nonsystematic risk/diversifiable risk: Risk specific to a particular company or industry. It’s also known as diversifiable risk because it can be reduce or eliminated through diversification. (VD: cty truyền thông ngu, thay đổi quy định vs hàng hoá, ….) -> Portfolio Risk: Determined by the weights of the assets, their variances, and their correlations to maximize return and reduce risk.

6.2: Asset Allocation with Two Risky Assets

  • Risk and Return Trade-Off: Combining two risky assets produces a portfolio with risk and return characteristics dependent on their covariance.
  • Covariance and Correlation:
    • Covariance measures how two assets move together.
    • Correlation (\(\rho\)) is a standardized version of covariance, ranging between -1 and 1.
  • Efficient Frontier for Two Assets:
    • Portfolios with low or negative correlations offer significant diversification benefits.

Using Historical Data to Estimate Means, Standard Deviations, Covariance, and Correlation

  1. Portfolio Expected Return: \[ E(r_P) = w_1E(r_1) + w_2E(r_2) \] Where \(w_1, w_2\) are weights of assets in the portfolio, and \(E(r_1), E(r_2)\) are their expected returns.

  2. Portfolio Variance (Two Assets): \[ \sigma_P^2 = w_1^2\sigma_1^2 + w_2^2\sigma_2^2 + 2w_1w_2\rho_{1,2}\sigma_1\sigma_2 \] Where \(\sigma_1, \sigma_2\) are the standard deviations, and \(\rho_{1,2}\) is the correlation coefficient between the two assets.

  3. Covariance: \[ \text{Cov}(r_1, r_2) = \rho_{1,2} \sigma_1 \sigma_2 \]


6.3: The Optimal Risky Portfolio with a Risk-Free Asset

  • Introduction: Investors allocate wealth between a risk-free asset and an optimal risky portfolio to maximize return for a given level of risk.

  • Capital Allocation Line (CAL):

    • A straight line representing the risk-return trade-off of combining a risk-free asset with a portfolio of risky assets.
    • The slope of CAL is the Sharpe Ratio.

    \[ \text{Sharpe Ratio} = \frac{E(r_P) - r_f}{\sigma_P} \]

    Where \(r_f\) is the risk-free rate, \(E(r_P)\) is the portfolio’s expected return, and \(\sigma_P\) is the portfolio’s standard deviation.

  • Optimal Portfolio:

    • Maximizes the Sharpe Ratio by choosing weights that balance risk and return.

Sharpe ratio maximizing portfolio weights with two risky assets (B and S) and a risk-free asset:

Formula for \(w_B\) (weight of asset B in the optimal portfolio):

\[ w_B = \frac{[E(r_B) - r_f] \sigma_S^2 - [E(r_S) - r_f] \sigma_B \sigma_S \rho_{BS}}{[E(r_B) - r_f] \sigma_S^2 + [E(r_S) - r_f] \sigma_B^2 - [E(r_B) - r_f + E(r_S) - r_f] \sigma_B \sigma_S \rho_{BS}} \]

\[ w_S = 1 - w_B \]

Where:

- \(E(r_B)\): Expected return of asset \(B\),

- \(E(r_S)\): Expected return of asset \(S\),

- \(r_f\): Risk-free rate,

- \(\sigma_B\): Standard deviation of asset \(B\),

- \(\sigma_S\): Standard deviation of asset \(S\),

- \(\rho_{BS}\): Correlation coefficient between \(B\) and \(S\).

Capital Allocation Line (CAL): \[ E(r_C) = r_f + \frac{E(r_P) - r_f}{\sigma_P} \cdot \sigma_C \] Where \(\sigma_C\) is the standard deviation of the complete portfolio. —

6.4: Efficient Diversification with Many Risky Assets

  • Efficient Frontier: A curve showing the best risk-return trade-offs from a portfolio of multiple risky assets.
  • Separation Property:
    • Portfolio construction can be separated into:
      • Identifying the optimal risky portfolio.
      • Allocating wealth between the risk-free asset and the optimal portfolio based on investor preferences.
  • Risk of Long-Term Investments:
    • Evaluates how compounding affects risk and return for long-term investments.

6.5: Single-Index Model

  • Purpose: Simplifies the covariance calculations by assuming asset returns are driven by a common market factor (e.g., an index).
  • Components of Return:
    • Systematic Component: Related to market movements.
    • Idiosyncratic Component: Unique to the asset.
  • Benefits:
    • Reduces complexity of managing large portfolios.
    • Focuses on market-wide factors for risk and return. \[ \sigma_A^2 = \beta^2 \sigma_M^2 + \sigma_{\text{residual}}^2 \]

6.6: Risk of Long-Term Investments

  • Misconception: Long-term investments do not necessarily reduce risk due to uncertainty in compounding.
  • Clarification: While diversification mitigates some risks, investors need to consider how risks compound over time.

Bài tập

  1. In forming a portfolio of two risky assets, what must be true of the correlation coefficient between their returns if there are to be gains from diversification? Explain. (LO 6-1)
  • To achieve gains from diversification, the correlation coefficient between the returns of the two assets must be less than 1.
  • A lower or negative correlation increases the diversification benefit by reducing portfolio risk.
  1. When adding a risky asset to a portfolio of many risky assets, which property of the asset is more important, its standard deviation or its covariance with the other assets? Explain. (LO 6-1) covariance
  2. A portfolio’s expected return is 12%, its standard deviation is 20%, and the risk-free rate is 4%. Which of the following would make for the greatest increase in the portfolio’s Sharpe ratio? (LO 6-3)
  1. An increase of 1% in expected return.
  2. A decrease of 1% in the risk-free rate.
  3. A decrease of 1% in its standard deviation.

Sharpe Ratio: \[ \text{Sharpe Ratio} = \frac{E(r_P) - r_f}{\sigma_P} \] Where \(r_f\) is the risk-free rate, \(E(r_P)\) is the portfolio’s expected return, and \(\sigma_P\) is the portfolio’s standard deviation.

  1. An investor ponders various allocations to the optimal risky portfolio and risk-free T-bills to construct his complete portfolio. How would the Sharpe ratio of the complete portfolio be affected by this choice? (LO 6-3) không ảnh hưởng

\[ \sigma_A^2 = \beta^2 \sigma_M^2 + \sigma_{\text{residual}}^2 \]

case 1 \[ \sigma_A^2 = (1.65)^2 \times (0.2)^2 + (0.3)^2 \] \[ \sigma_A^2 = (2.7225) \times (0.04) + (0.09) = 0.1089 + 0.09 = 0.1989 \] case 2 \[ \sigma_A^2 = (1.5)^2 \times (0.2)^2 + (0.33)^2 \] \[ \sigma_A^2 = (2.25) \times (0.04) + (0.1089) = 0.09 + 0.1089 = 0.1989 \]

không khác j \[ \sigma_P^2 = w_M^2 \sigma_M^2 + w_A^2 \sigma_A^2 + 2w_Mw_A \rho_{M,A} \sigma_M \sigma_A \]

  1. Reward-to-Volatility Ratio (Sharpe Ratio)

  1. Portfolio Standard Deviation: Solve for \(\sigma_P\) using the CAL formula: \[ E(r_P) = r_f + \frac{\sigma_P}{\sigma_O} (E(r_O) - r_f) \] Where \(\sigma_O\) and \(E(r_O)\) are the standard deviation and expected return of the optimal risky portfolio.

Substitute: \[ w_r = \frac{12\% - 5\%}{14\% - 5\%} = \frac{7\%}{9\%} = 0.7778 \, \text{or } 77.78\% \, \text{in the risky portfolio}. \]

  1. Proportions of T-Bill and Risky Assets: Calculate the weights:
    • Proportion in T-Bills (\(w_f\)).
    • Proportions in risky assets (\(1 - w_f\)).
LS0tDQp0aXRsZTogImNoYXB0ZXIgNiINCmF1dGhvcjogIlZOUXVhbnQiDQpkYXRlOiAiMTgvMTEvMjAyNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IHRydWUNCiAgICAgIHNtb290aF9zY3JvbGw6IGZhbHNlDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdGhlbWU6IGZsYXRseQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KZWRpdG9yX29wdGlvbnM6IA0KICBtYXJrZG93bjogDQogICAgd3JhcDogNzINCi0tLQ0KDQojIEzDvSB0aHV54bq/dA0KDQojIyAqKjYuMTogRGl2ZXJzaWZpY2F0aW9uIGFuZCBQb3J0Zm9saW8gUmlzayoqDQoNCi0gICAqKkNvbmNlcHQqKjogRGl2ZXJzaWZpY2F0aW9uIHJlZHVjZXMgcmlzayBieSBjb21iaW5pbmcgYXNzZXRzIHdpdGgNCiAgICByZXR1cm5zIHRoYXQgYXJlIG5vdCBwZXJmZWN0bHkgY29ycmVsYXRlZC4NCi0gICAqKlR5cGVzIG9mIFJpc2sqKjoNCiAgICAtICAgKipTeXN0ZW1hdGljIFJpc2sgKE1hcmtldCBSaXNrKSoqOiBSaXNrIHRoYXQgYWZmZWN0cyB0aGUgZW50aXJlDQogICAgICAgIG1hcmtldCBvciBlY29ub215IGFzIGEgd2hvbGUgKFZEOiBzdXkgdGhvw6FpLCBs4bqhbSBwaMOhdCwgdGhpw6puDQogICAgICAgIHRhaSwuLi4pLiBJdCdzIGFsc28ga25vd24gYXMgdW5kaXZlcnNpZmlhYmxlIHJpc2sgYmVjYXVzZSBpdA0KICAgICAgICBjYW4ndCBiZSBlbGltaW5hdGVkIGJ5IGRpdmVyc2lmeWluZyB5b3VyIGludmVzdG1lbnRzLiBDYW5ub3QgYmUNCiAgICAgICAgZGl2ZXJzaWZpZWQgYXdheS4NCiAgICAtICAgKip1bmlxdWUgcmlzay9maXJtLXNwZWNpZmljIHJpc2svbm9uc3lzdGVtYXRpYw0KICAgICAgICByaXNrL2RpdmVyc2lmaWFibGUgcmlzayoqOiBSaXNrIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb21wYW55DQogICAgICAgIG9yIGluZHVzdHJ5LiBJdCdzIGFsc28ga25vd24gYXMgZGl2ZXJzaWZpYWJsZSByaXNrIGJlY2F1c2UgaXQNCiAgICAgICAgY2FuIGJlIHJlZHVjZSBvciBlbGltaW5hdGVkIHRocm91Z2ggZGl2ZXJzaWZpY2F0aW9uLiAoVkQ6IGN0eQ0KICAgICAgICB0cnV54buBbiB0aMO0bmcgbmd1LCB0aGF5IMSR4buVaSBxdXkgxJHhu4tuaCB2cyBow6BuZyBob8OhLCAuLi4uKSAtXD4NCiAgICAgICAgKipQb3J0Zm9saW8gUmlzayoqOiBEZXRlcm1pbmVkIGJ5IHRoZSB3ZWlnaHRzIG9mIHRoZSBhc3NldHMsDQogICAgICAgIHRoZWlyIHZhcmlhbmNlcywgYW5kIHRoZWlyIGNvcnJlbGF0aW9ucyB0byBtYXhpbWl6ZSByZXR1cm4gYW5kDQogICAgICAgIHJlZHVjZSByaXNrLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMgKio2LjI6IEFzc2V0IEFsbG9jYXRpb24gd2l0aCBUd28gUmlza3kgQXNzZXRzKioNCg0KLSAgICoqUmlzayBhbmQgUmV0dXJuIFRyYWRlLU9mZioqOiBDb21iaW5pbmcgdHdvIHJpc2t5IGFzc2V0cyBwcm9kdWNlcyBhDQogICAgcG9ydGZvbGlvIHdpdGggcmlzayBhbmQgcmV0dXJuIGNoYXJhY3RlcmlzdGljcyBkZXBlbmRlbnQgb24gdGhlaXINCiAgICBjb3ZhcmlhbmNlLg0KLSAgICoqQ292YXJpYW5jZSBhbmQgQ29ycmVsYXRpb24qKjoNCiAgICAtICAgQ292YXJpYW5jZSBtZWFzdXJlcyBob3cgdHdvIGFzc2V0cyBtb3ZlIHRvZ2V0aGVyLg0KICAgIC0gICBDb3JyZWxhdGlvbiAoJFxyaG8kKSBpcyBhIHN0YW5kYXJkaXplZCB2ZXJzaW9uIG9mIGNvdmFyaWFuY2UsDQogICAgICAgIHJhbmdpbmcgYmV0d2VlbiAtMSBhbmQgMS4NCi0gICAqKkVmZmljaWVudCBGcm9udGllciBmb3IgVHdvIEFzc2V0cyoqOg0KICAgIC0gICBQb3J0Zm9saW9zIHdpdGggbG93IG9yIG5lZ2F0aXZlIGNvcnJlbGF0aW9ucyBvZmZlciBzaWduaWZpY2FudA0KICAgICAgICBkaXZlcnNpZmljYXRpb24gYmVuZWZpdHMuDQoNClVzaW5nIEhpc3RvcmljYWwgRGF0YSB0byBFc3RpbWF0ZSBNZWFucywgU3RhbmRhcmQgRGV2aWF0aW9ucywNCkNvdmFyaWFuY2UsIGFuZCBDb3JyZWxhdGlvbg0KDQoxLiAgKipQb3J0Zm9saW8gRXhwZWN0ZWQgUmV0dXJuKio6ICQkDQogICAgRShyX1ApID0gd18xRShyXzEpICsgd18yRShyXzIpDQogICAgJCQgV2hlcmUgJHdfMSwgd18yJCBhcmUgd2VpZ2h0cyBvZiBhc3NldHMgaW4gdGhlIHBvcnRmb2xpbywgYW5kDQogICAgJEUocl8xKSwgRShyXzIpJCBhcmUgdGhlaXIgZXhwZWN0ZWQgcmV0dXJucy4NCg0KMi4gICoqUG9ydGZvbGlvIFZhcmlhbmNlIChUd28gQXNzZXRzKSoqOiAkJA0KICAgIFxzaWdtYV9QXjIgPSB3XzFeMlxzaWdtYV8xXjIgKyB3XzJeMlxzaWdtYV8yXjIgKyAyd18xd18yXHJob197MSwyfVxzaWdtYV8xXHNpZ21hXzINCiAgICAkJCBXaGVyZSAkXHNpZ21hXzEsIFxzaWdtYV8yJCBhcmUgdGhlIHN0YW5kYXJkIGRldmlhdGlvbnMsIGFuZA0KICAgICRccmhvX3sxLDJ9JCBpcyB0aGUgY29ycmVsYXRpb24gY29lZmZpY2llbnQgYmV0d2VlbiB0aGUgdHdvIGFzc2V0cy4NCg0KMy4gICoqQ292YXJpYW5jZSoqOiAkJA0KICAgIFx0ZXh0e0Nvdn0ocl8xLCByXzIpID0gXHJob197MSwyfSBcc2lnbWFfMSBcc2lnbWFfMg0KICAgICQkDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIyAqKjYuMzogVGhlIE9wdGltYWwgUmlza3kgUG9ydGZvbGlvIHdpdGggYSBSaXNrLUZyZWUgQXNzZXQqKg0KDQotICAgKipJbnRyb2R1Y3Rpb24qKjogSW52ZXN0b3JzIGFsbG9jYXRlIHdlYWx0aCBiZXR3ZWVuIGEgcmlzay1mcmVlDQogICAgYXNzZXQgYW5kIGFuIG9wdGltYWwgcmlza3kgcG9ydGZvbGlvIHRvIG1heGltaXplIHJldHVybiBmb3IgYSBnaXZlbg0KICAgIGxldmVsIG9mIHJpc2suDQoNCi0gICAqKkNhcGl0YWwgQWxsb2NhdGlvbiBMaW5lIChDQUwpKio6DQoNCiAgICAtICAgQSBzdHJhaWdodCBsaW5lIHJlcHJlc2VudGluZyB0aGUgcmlzay1yZXR1cm4gdHJhZGUtb2ZmIG9mDQogICAgICAgIGNvbWJpbmluZyBhIHJpc2stZnJlZSBhc3NldCB3aXRoIGEgcG9ydGZvbGlvIG9mIHJpc2t5IGFzc2V0cy4NCiAgICAtICAgVGhlIHNsb3BlIG9mIENBTCBpcyB0aGUgU2hhcnBlIFJhdGlvLg0KDQogICAgJCQNCiAgICAgXHRleHR7U2hhcnBlIFJhdGlvfSA9IFxmcmFje0Uocl9QKSAtIHJfZn17XHNpZ21hX1B9DQogICAgICQkDQoNCiAgICBXaGVyZSAkcl9mJCBpcyB0aGUgcmlzay1mcmVlIHJhdGUsICRFKHJfUCkkIGlzIHRoZSBwb3J0Zm9saW8ncw0KICAgIGV4cGVjdGVkIHJldHVybiwgYW5kICRcc2lnbWFfUCQgaXMgdGhlIHBvcnRmb2xpbydzIHN0YW5kYXJkDQogICAgZGV2aWF0aW9uLg0KDQotICAgKipPcHRpbWFsIFBvcnRmb2xpbyoqOg0KDQogICAgLSAgIE1heGltaXplcyB0aGUgU2hhcnBlIFJhdGlvIGJ5IGNob29zaW5nIHdlaWdodHMgdGhhdCBiYWxhbmNlIHJpc2sNCiAgICAgICAgYW5kIHJldHVybi4NCg0KKipTaGFycGUgcmF0aW8gbWF4aW1pemluZyBwb3J0Zm9saW8gd2VpZ2h0cyB3aXRoIHR3byByaXNreSBhc3NldHMgKEIgYW5kDQpTKSBhbmQgYSByaXNrLWZyZWUgYXNzZXQqKjoNCg0KIyMjIEZvcm11bGEgZm9yICR3X0IkICh3ZWlnaHQgb2YgYXNzZXQgQiBpbiB0aGUgb3B0aW1hbCBwb3J0Zm9saW8pOg0KDQokJA0Kd19CID0gXGZyYWN7W0Uocl9CKSAtIHJfZl0gXHNpZ21hX1NeMiAtIFtFKHJfUykgLSByX2ZdIFxzaWdtYV9CIFxzaWdtYV9TIFxyaG9fe0JTfX17W0Uocl9CKSAtIHJfZl0gXHNpZ21hX1NeMiArIFtFKHJfUykgLSByX2ZdIFxzaWdtYV9CXjIgLSBbRShyX0IpIC0gcl9mICsgRShyX1MpIC0gcl9mXSBcc2lnbWFfQiBcc2lnbWFfUyBccmhvX3tCU319DQokJA0KDQokJA0Kd19TID0gMSAtIHdfQg0KJCQNCg0KV2hlcmU6DQoNClwtICRFKHJfQikkOiBFeHBlY3RlZCByZXR1cm4gb2YgYXNzZXQgJEIkLA0KDQpcLSAkRShyX1MpJDogRXhwZWN0ZWQgcmV0dXJuIG9mIGFzc2V0ICRTJCwNCg0KXC0gJHJfZiQ6IFJpc2stZnJlZSByYXRlLA0KDQpcLSAkXHNpZ21hX0IkOiBTdGFuZGFyZCBkZXZpYXRpb24gb2YgYXNzZXQgJEIkLA0KDQpcLSAkXHNpZ21hX1MkOiBTdGFuZGFyZCBkZXZpYXRpb24gb2YgYXNzZXQgJFMkLA0KDQpcLSAkXHJob197QlN9JDogQ29ycmVsYXRpb24gY29lZmZpY2llbnQgYmV0d2VlbiAkQiQgYW5kICRTJC4NCg0KKipDYXBpdGFsIEFsbG9jYXRpb24gTGluZSAoQ0FMKSoqOiAkJA0KICAgRShyX0MpID0gcl9mICsgXGZyYWN7RShyX1ApIC0gcl9mfXtcc2lnbWFfUH0gXGNkb3QgXHNpZ21hX0MNCiAgICQkIFdoZXJlICRcc2lnbWFfQyQgaXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgY29tcGxldGUNCnBvcnRmb2xpby4gLS0tDQoNCiMjICoqNi40OiBFZmZpY2llbnQgRGl2ZXJzaWZpY2F0aW9uIHdpdGggTWFueSBSaXNreSBBc3NldHMqKg0KDQotICAgKipFZmZpY2llbnQgRnJvbnRpZXIqKjogQSBjdXJ2ZSBzaG93aW5nIHRoZSBiZXN0IHJpc2stcmV0dXJuDQogICAgdHJhZGUtb2ZmcyBmcm9tIGEgcG9ydGZvbGlvIG9mIG11bHRpcGxlIHJpc2t5IGFzc2V0cy4NCi0gICAqKlNlcGFyYXRpb24gUHJvcGVydHkqKjoNCiAgICAtICAgUG9ydGZvbGlvIGNvbnN0cnVjdGlvbiBjYW4gYmUgc2VwYXJhdGVkIGludG86DQogICAgICAgIC0gICBJZGVudGlmeWluZyB0aGUgb3B0aW1hbCByaXNreSBwb3J0Zm9saW8uDQogICAgICAgIC0gICBBbGxvY2F0aW5nIHdlYWx0aCBiZXR3ZWVuIHRoZSByaXNrLWZyZWUgYXNzZXQgYW5kIHRoZQ0KICAgICAgICAgICAgb3B0aW1hbCBwb3J0Zm9saW8gYmFzZWQgb24gaW52ZXN0b3IgcHJlZmVyZW5jZXMuDQotICAgKipSaXNrIG9mIExvbmctVGVybSBJbnZlc3RtZW50cyoqOg0KICAgIC0gICBFdmFsdWF0ZXMgaG93IGNvbXBvdW5kaW5nIGFmZmVjdHMgcmlzayBhbmQgcmV0dXJuIGZvciBsb25nLXRlcm0NCiAgICAgICAgaW52ZXN0bWVudHMuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIyAqKjYuNTogU2luZ2xlLUluZGV4IE1vZGVsKioNCg0KLSAgICoqUHVycG9zZSoqOiBTaW1wbGlmaWVzIHRoZSBjb3ZhcmlhbmNlIGNhbGN1bGF0aW9ucyBieSBhc3N1bWluZw0KICAgIGFzc2V0IHJldHVybnMgYXJlIGRyaXZlbiBieSBhIGNvbW1vbiBtYXJrZXQgZmFjdG9yIChlLmcuLCBhbiBpbmRleCkuDQotICAgKipDb21wb25lbnRzIG9mIFJldHVybioqOg0KICAgIC0gICBTeXN0ZW1hdGljIENvbXBvbmVudDogUmVsYXRlZCB0byBtYXJrZXQgbW92ZW1lbnRzLg0KICAgIC0gICBJZGlvc3luY3JhdGljIENvbXBvbmVudDogVW5pcXVlIHRvIHRoZSBhc3NldC4NCi0gICAqKkJlbmVmaXRzKio6DQogICAgLSAgIFJlZHVjZXMgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBsYXJnZSBwb3J0Zm9saW9zLg0KICAgIC0gICBGb2N1c2VzIG9uIG1hcmtldC13aWRlIGZhY3RvcnMgZm9yIHJpc2sgYW5kIHJldHVybi4gJCQNCiAgICAgICAgICAgIFxzaWdtYV9BXjIgPSBcYmV0YV4yIFxzaWdtYV9NXjIgKyBcc2lnbWFfe1x0ZXh0e3Jlc2lkdWFsfX1eMg0KICAgICAgICAgICAgJCQgLS0tDQoNCiMjICoqNi42OiBSaXNrIG9mIExvbmctVGVybSBJbnZlc3RtZW50cyoqDQoNCi0gICAqKk1pc2NvbmNlcHRpb24qKjogTG9uZy10ZXJtIGludmVzdG1lbnRzIGRvIG5vdCBuZWNlc3NhcmlseSByZWR1Y2UNCiAgICByaXNrIGR1ZSB0byB1bmNlcnRhaW50eSBpbiBjb21wb3VuZGluZy4NCi0gICAqKkNsYXJpZmljYXRpb24qKjogV2hpbGUgZGl2ZXJzaWZpY2F0aW9uIG1pdGlnYXRlcyBzb21lIHJpc2tzLA0KICAgIGludmVzdG9ycyBuZWVkIHRvIGNvbnNpZGVyIGhvdyByaXNrcyBjb21wb3VuZCBvdmVyIHRpbWUuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIELDoGkgdOG6rXANCg0KMS4gIEluIGZvcm1pbmcgYSBwb3J0Zm9saW8gb2YgdHdvIHJpc2t5IGFzc2V0cywgd2hhdCBtdXN0IGJlIHRydWUgb2YgdGhlDQogICAgY29ycmVsYXRpb24gY29lZmZpY2llbnQgYmV0d2VlbiB0aGVpciByZXR1cm5zIGlmIHRoZXJlIGFyZSB0byBiZQ0KICAgIGdhaW5zIGZyb20gZGl2ZXJzaWZpY2F0aW9uPyBFeHBsYWluLiAoTE8gNi0xKQ0KDQotICAgVG8gYWNoaWV2ZSBnYWlucyBmcm9tIGRpdmVyc2lmaWNhdGlvbiwgdGhlIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50DQogICAgYmV0d2VlbiB0aGUgcmV0dXJucyBvZiB0aGUgdHdvIGFzc2V0cyBtdXN0IGJlIGxlc3MgdGhhbiAxLg0KLSAgIEEgbG93ZXIgb3IgbmVnYXRpdmUgY29ycmVsYXRpb24gaW5jcmVhc2VzIHRoZSBkaXZlcnNpZmljYXRpb24NCiAgICBiZW5lZml0IGJ5IHJlZHVjaW5nIHBvcnRmb2xpbyByaXNrLg0KDQoyLiAgV2hlbiBhZGRpbmcgYSByaXNreSBhc3NldCB0byBhIHBvcnRmb2xpbyBvZiBtYW55IHJpc2t5IGFzc2V0cywgd2hpY2gNCiAgICBwcm9wZXJ0eSBvZiB0aGUgYXNzZXQgaXMgbW9yZSBpbXBvcnRhbnQsIGl0cyBzdGFuZGFyZCBkZXZpYXRpb24gb3INCiAgICBpdHMgY292YXJpYW5jZSB3aXRoIHRoZSBvdGhlciBhc3NldHM/IEV4cGxhaW4uIChMTyA2LTEpIGNvdmFyaWFuY2UNCjMuICBBIHBvcnRmb2xpb+KAmXMgZXhwZWN0ZWQgcmV0dXJuIGlzIDEyJSwgaXRzIHN0YW5kYXJkIGRldmlhdGlvbiBpcyAyMCUsDQogICAgYW5kIHRoZSByaXNrLWZyZWUgcmF0ZSBpcyA0JS4gV2hpY2ggb2YgdGhlIGZvbGxvd2luZyB3b3VsZCBtYWtlIGZvcg0KICAgIHRoZSBncmVhdGVzdCBpbmNyZWFzZSBpbiB0aGUgcG9ydGZvbGlv4oCZcyBTaGFycGUgcmF0aW8/IChMTyA2LTMpDQoNCjwhLS0gLS0+DQoNCmEuICBBbiBpbmNyZWFzZSBvZiAxJSBpbiBleHBlY3RlZCByZXR1cm4uDQpiLiAgQSBkZWNyZWFzZSBvZiAxJSBpbiB0aGUgcmlzay1mcmVlIHJhdGUuDQpjLiAgQSBkZWNyZWFzZSBvZiAxJSBpbiBpdHMgc3RhbmRhcmQgZGV2aWF0aW9uLg0KDQoqKlNoYXJwZSBSYXRpbyoqOiAkJA0KICAgXHRleHR7U2hhcnBlIFJhdGlvfSA9IFxmcmFje0Uocl9QKSAtIHJfZn17XHNpZ21hX1B9DQogICAkJCBXaGVyZSAkcl9mJCBpcyB0aGUgcmlzay1mcmVlIHJhdGUsICRFKHJfUCkkIGlzIHRoZSBwb3J0Zm9saW8ncw0KZXhwZWN0ZWQgcmV0dXJuLCBhbmQgJFxzaWdtYV9QJCBpcyB0aGUgcG9ydGZvbGlvJ3Mgc3RhbmRhcmQgZGV2aWF0aW9uLg0KDQo0LiAgQW4gaW52ZXN0b3IgcG9uZGVycyB2YXJpb3VzIGFsbG9jYXRpb25zIHRvIHRoZSBvcHRpbWFsIHJpc2t5DQogICAgcG9ydGZvbGlvIGFuZCByaXNrLWZyZWUgVC1iaWxscyB0byBjb25zdHJ1Y3QgaGlzIGNvbXBsZXRlIHBvcnRmb2xpby4NCiAgICBIb3cgd291bGQgdGhlIFNoYXJwZSByYXRpbyBvZiB0aGUgY29tcGxldGUgcG9ydGZvbGlvIGJlIGFmZmVjdGVkIGJ5DQogICAgdGhpcyBjaG9pY2U/IChMTyA2LTMpIGtow7RuZyDhuqNuaCBoxrDhu59uZw0KDQo1LiAgDQoNCiQkDQogICAgXHNpZ21hX0FeMiA9IFxiZXRhXjIgXHNpZ21hX01eMiArIFxzaWdtYV97XHRleHR7cmVzaWR1YWx9fV4yDQogJCQNCg0KY2FzZSAxICQkDQogICBcc2lnbWFfQV4yID0gKDEuNjUpXjIgXHRpbWVzICgwLjIpXjIgKyAoMC4zKV4yDQogICAkJCAkJA0KICAgXHNpZ21hX0FeMiA9ICgyLjcyMjUpIFx0aW1lcyAoMC4wNCkgKyAoMC4wOSkgPSAwLjEwODkgKyAwLjA5ID0gMC4xOTg5DQogICAkJCBjYXNlIDIgJCQNCiAgIFxzaWdtYV9BXjIgPSAoMS41KV4yIFx0aW1lcyAoMC4yKV4yICsgKDAuMzMpXjINCiAgICQkICQkDQogICBcc2lnbWFfQV4yID0gKDIuMjUpIFx0aW1lcyAoMC4wNCkgKyAoMC4xMDg5KSA9IDAuMDkgKyAwLjEwODkgPSAwLjE5ODkNCiAgICQkDQoNCmtow7RuZyBraMOhYyBqICQkDQpcc2lnbWFfUF4yID0gd19NXjIgXHNpZ21hX01eMiArIHdfQV4yIFxzaWdtYV9BXjIgKyAyd19Nd19BIFxyaG9fe00sQX0gXHNpZ21hX00gXHNpZ21hX0ENCiQkDQoNCjEwLiBSZXdhcmQtdG8tVm9sYXRpbGl0eSBSYXRpbyAoU2hhcnBlIFJhdGlvKQ0KDQoxMS4gDQoNCjwhLS0gLS0+DQoNCmEuICAqKlBvcnRmb2xpbyBTdGFuZGFyZCBEZXZpYXRpb24qKjogU29sdmUgZm9yICRcc2lnbWFfUCQgdXNpbmcgdGhlIENBTA0KICAgIGZvcm11bGE6ICQkDQogICAgRShyX1ApID0gcl9mICsgXGZyYWN7XHNpZ21hX1B9e1xzaWdtYV9PfSAoRShyX08pIC0gcl9mKQ0KICAgICQkIFdoZXJlICRcc2lnbWFfTyQgYW5kICRFKHJfTykkIGFyZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGFuZA0KICAgIGV4cGVjdGVkIHJldHVybiBvZiB0aGUgb3B0aW1hbCByaXNreSBwb3J0Zm9saW8uDQoNClN1YnN0aXR1dGU6ICQkDQp3X3IgPSBcZnJhY3sxMlwlIC0gNVwlfXsxNFwlIC0gNVwlfSA9IFxmcmFjezdcJX17OVwlfSA9IDAuNzc3OCBcLCBcdGV4dHtvciB9IDc3Ljc4XCUgXCwgXHRleHR7aW4gdGhlIHJpc2t5IHBvcnRmb2xpb30uDQokJA0KDQpiLiAgKipQcm9wb3J0aW9ucyBvZiBULUJpbGwgYW5kIFJpc2t5IEFzc2V0cyoqOiBDYWxjdWxhdGUgdGhlIHdlaWdodHM6DQogICAgLSAgIFByb3BvcnRpb24gaW4gVC1CaWxscyAoJHdfZiQpLg0KICAgIC0gICBQcm9wb3J0aW9ucyBpbiByaXNreSBhc3NldHMgKCQxIC0gd19mJCkuDQo=