This project aims to analyze the financial performances of Jack and
his two children, Sara and Abe, by comparing their returns against the
overall market.
Analysis
Combined Plot Year vs Return Difference


Mean Return Difference for Each Person

Sum of Return Difference for Each Person

Plot SP500 vs Individuals by Year

Plot Total Cash Earned by Each Person

Scatter plot Return v Person by Year

Conclusions
I’d say that this family has had great luck in the stock market. All
three have made positive returns against the market.
To answer the question if he should have given an equal amount to
each kid, I think so. Abe had a higher sum and average return return vs
the market than Sara. However, I’m not too sure because Sara never
really had bad years, so it just depends I feel like.
Considering their dad didn’t outperform the market since 1980, I’d
say they’ve performed pretty decently compared to what he might have
done. Both have made significant profits in their own style.
Jack always had subtle good years, not fluctuating much. However,
once 1980 hit, he couldn’t seem to break positive. Abe only either had a
great year or a terrible year. He won big or lost big, hardly any in
betweens. Sara had a very strong year after 2010, but other than that,
her return vs the market sat close to 0.
LS0tDQp0aXRsZTogIkhvbWV3b3JrIDQgU3VibWlzc2lvbiAtIE5vYWggU3RhY3kiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyBUaGlzIHByb2plY3QgYWltcyB0byBhbmFseXplIHRoZSBmaW5hbmNpYWwgcGVyZm9ybWFuY2VzIG9mIEphY2sgYW5kIGhpcyB0d28gY2hpbGRyZW4sIFNhcmEgYW5kIEFiZSwgYnkgY29tcGFyaW5nIHRoZWlyIHJldHVybnMgYWdhaW5zdCB0aGUgb3ZlcmFsbCBtYXJrZXQuDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQojTGlicmFyaWVzDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCg0KI0ltcG9ydCAzIGRhdGEgZmlsZXMNCmNhc2ggPC0gcmVhZC5jc3YoImNhc2guY3N2IikNClZpZXcoY2FzaCkNCg0KY29udHJpYnV0aW9ucyA8LSByZWFkLmNzdigiY29udHJpYnV0aW9ucy5jc3YiKQ0KVmlldyhjb250cmlidXRpb25zKQ0KDQpzcDUwMCA8LSByZWFkLmNzdigic3A1MDAuY3N2IikNClZpZXcoc3A1MDApDQoNCiNQdXQgaW50byB0aWJibGVzDQoNCiNDYXNoIHRpYmJsZQ0KdF9jYXNoIDwtIGFzX3RpYmJsZShjYXNoKQ0Kc3RyKHRfY2FzaCkNCg0KdF9jYXNoIDwtIHRfY2FzaCAlPiUgDQogIHJlbmFtZSgNCiAgICBjYXNoX3llYXIgPSBDYXNoLlllYXIsDQogICAgY2FzaF9zdGFydCA9IENhc2guU3RhcnQsDQogICAgZW5kX3llYXJfY2FzaCA9IEVuZC5vZi5ZZWFyLkNhc2gsDQogICAgcGVyc29uID0gUGVyc29uLg0KICApIA0KDQojVGhpcyBmaWx0ZXJzIG91dCB3aGVyZSBjZWxscywgbm90IHN1cmUgaWYgcmlnaHQNCnRfY2FzaCA8LSB0X2Nhc2ggJT4lIA0KICBmaWx0ZXIoIShwZXJzb24gPT0gIkphY2siIA0KICAgICAgICAgICAmIGNhc2hfeWVhciA+PSAyMDAwIA0KICAgICAgICAgICAmIGNhc2hfeWVhciA8PSAyMDA1ICkpDQoNCnRfY2FzaCA8LSB0X2Nhc2ggJT4lIA0KICBtdXRhdGUoZW5kX3llYXJfY2FzaCA9IGFzLm51bWVyaWMoZW5kX3llYXJfY2FzaCkpDQoNCg0KI0NvbnRyaWJ1dGlvbnMgdGliYmxlDQp0X2NvbnRyaWJ1dGlvbnMgPC0gYXNfdGliYmxlKGNvbnRyaWJ1dGlvbnMpDQpzdHIodF9jb250cmlidXRpb25zKQ0KDQp0X2NvbnRyaWJ1dGlvbnMgPC0gdF9jb250cmlidXRpb25zICU+JSANCiAgcmVuYW1lKA0KICAgIGNvbnRfY2FzaF95ZWFyID0gQ2FzaC5ZZWFyLA0KICAgIGNhc2hfYWRkZWRfZW5kX3llYXIgPSBDYXNoLkFkZGVkLmF0LkVuZC5vZi5ZZWFyLA0KICAgIHBlcnNvbl9hZGRpbmdfY2FzaCA9IFBlcnNvbi5BZGRpbmcuQ2FzaA0KICApIA0KDQp0X2NvbnRyaWJ1dGlvbnMgPC0gdF9jb250cmlidXRpb25zICU+JSANCiAgbXV0YXRlKGNhc2hfYWRkZWRfZW5kX3llYXIgPSBhcy5udW1lcmljKGNhc2hfYWRkZWRfZW5kX3llYXIpKQ0KICANCg0KI3NwNTAwIHRpYmJsZQ0KdF9zcDUwMCA8LSBhc190aWJibGUoc3A1MDApDQpzdHIodF9zcDUwMCkNCg0KdF9zcDUwMCA8LSB0X3NwNTAwICU+JSANCiAgcmVuYW1lKHNwX3Jvd19pZCA9IFNwNTAwLklELlJvdykNCg0KdF9zcDUwMCA8LSB0X3NwNTAwICU+JSANCiAgZmlsdGVyKHNwX3Jvd19pZCA8IDEyNCkNCg0KI0pvaW4gdGliYmxlcyBpbnRvIG9uZSB0aWJibGUNCg0KdF9jb21iaW5lZCA8LSB0X2Nhc2ggJT4lIA0KICBsZWZ0X2pvaW4odF9jb250cmlidXRpb25zLCBieSA9IGMoJ2Nhc2hfeWVhcicgPSAnY29udF9jYXNoX3llYXInLCAncGVyc29uJyA9ICdwZXJzb25fYWRkaW5nX2Nhc2gnKSkgJT4lIA0KICBsZWZ0X2pvaW4odF9zcDUwMCwgYnkgPSBjKCdjYXNoX3llYXInID0gJ3llYXInKSkgJT4lIA0KICBzZWxlY3QoLXNwX3Jvd19pZCkNCg0KI1JldHVybiB2cyBtYXJrZXQgZGlmZmVyZW5jZSBjb2x1bW4gDQp0X2NvbWJpbmVkIDwtIHRfY29tYmluZWQgJT4lIA0KICBtdXRhdGUoY2FzaF9lYXJuZWQgPSANCiAgICAgICAgICAgZW5kX3llYXJfY2FzaCAtIGNhc2hfYWRkZWRfZW5kX3llYXIgLSBjYXNoX3N0YXJ0KQ0KDQp0X2NvbWJpbmVkIDwtIHRfY29tYmluZWQgJT4lIA0KICBtdXRhdGUocGVyc29uX3JldHVybiA9IChjYXNoX2Vhcm5lZCAvIGNhc2hfc3RhcnQpKQ0KDQp0X2NvbWJpbmVkIDwtIHRfY29tYmluZWQgJT4lIA0KICBtdXRhdGUocmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UgPSAocGVyc29uX3JldHVybiAtIG1hcmtldF9yZXR1cm4pKQ0KYGBgDQoNCiMgQW5hbHlzaXMNCg0KDQojIyMgSmFjaydzIFBlcmZvcm1hbmNlIE92ZXIgVGltZSBMaW5lIEdyYXBoDQpgYGB7ciBlY2hvPUZBTFNFfQ0KdF9qYWNrX2J5X3llYXIgPC0gdF9jb21iaW5lZCAlPiUgDQogIGZpbHRlcihwZXJzb24gPT0gIkphY2siKQ0KDQpnZ3Bsb3QoZGF0YSA9IHRfamFja19ieV95ZWFyKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSByZXR1cm5fdl9tYXJrZXRfZGlmZmVyZW5jZSwgY29sb3IgPSBwZXJzb24pKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIpICsNCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IG1hcmtldF9yZXR1cm4pKSArDQogIGxhYnModGl0bGUgPSAiSmFjaydzIEludmVzdG1lbnQgUGVyZm9ybWFuY2UgT3ZlciBUaW1lIiwNCiAgICAgICBjYXB0aW9uID0gIkhlIGRpZCB3b3JzZSB0aGFuIHRoZSBtYXJrZXQgcmV0dXJuIGV2ZXJ5IHllYXIgYWZ0ZXIgMTk4MCIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KYGBgDQojIyMgU2FyYSdzIFBlcmZvcm1hbmNlIE92ZXIgVGltZSBMaW5lIEdyYXBoDQpgYGB7ciBlY2hvPUZBTFNFfQ0KDQp0X3NhcmFfYnlfeWVhciA8LSB0X2NvbWJpbmVkICU+JSANCiAgZmlsdGVyKHBlcnNvbiA9PSAiU2FyYSIpDQoNCmdncGxvdChkYXRhID0gdF9zYXJhX2J5X3llYXIpICsNCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlLCBjb2xvciA9IHBlcnNvbikpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIikgKw0KICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gbWFya2V0X3JldHVybikpICsNCiAgbGFicyh0aXRsZSA9ICJTYXJhJ3MgSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBPdmVyIFRpbWUiLA0KICAgICAgIGNhcHRpb24gPSAiU2hlIGhhZCBvbmUgdmVyeSBhbWF6aW5nIHllYXIgYWZ0ZXIgMjAxMCIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KDQpnZ3Bsb3QoZGF0YSA9IHRfc2FyYV9ieV95ZWFyKSArDQogIGdlb21fc21vb3RoKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlLCBjb2xvciA9IHBlcnNvbikpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIikgKw0KICBnZW9tX3Ntb290aChtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSBtYXJrZXRfcmV0dXJuKSkgKw0KICBsYWJzKHRpdGxlID0gIlNhcmEncyBJbnZlc3RtZW50IFBlcmZvcm1hbmNlIE92ZXIgVGltZSIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KYGBgDQojIyMgQWJlJ3MgSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBPdmVyIFRpbWUNCmBgYHtyIGVjaG89RkFMU0V9DQoNCnRfYWJlX2J5X3llYXIgPC0gdF9jb21iaW5lZCAlPiUgDQogIGZpbHRlcihwZXJzb24gPT0gIkFiZSIpDQoNCmdncGxvdChkYXRhID0gdF9hYmVfYnlfeWVhcikgKw0KICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gcmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UsIGNvbG9yID0gcGVyc29uKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSBtYXJrZXRfcmV0dXJuKSkgKw0KICBsYWJzKHRpdGxlID0gIkFiZSdzIEludmVzdG1lbnQgUGVyZm9ybWFuY2UgT3ZlciBUaW1lIiwNCiAgICAgICBjYXB0aW9uID0gIkFiZSdzIHBlcmZvcm1hbmNlIGdyZWF0bHkgdmFyaWVkIHllYXIgYnkgeWVhciwgZWl0aGVyIGNydXNoaW5nIHRoZSBtYXJrZXQgcmV0dXJuIG9yIGZhbGxpbmcgd2VsbCBiZWxvdyIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KDQpnZ3Bsb3QoZGF0YSA9IHRfYWJlX2J5X3llYXIpICsNCiAgZ2VvbV9zbW9vdGgobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gcmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UsIGNvbG9yID0gcGVyc29uKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiKSArDQogIGdlb21fc21vb3RoKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IG1hcmtldF9yZXR1cm4pKSArDQogIGxhYnModGl0bGUgPSAiQWJlJ3MgSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBPdmVyIFRpbWUiKSArDQogIHhsYWIoIlllYXIiKSArDQogIHlsYWIoIlJldHVybiB2cyBNYXJrZXQgKCUpIikNCmBgYA0KIyMjIENvbWJpbmVkIFBsb3QgWWVhciB2cyBSZXR1cm4gRGlmZmVyZW5jZQ0KYGBge3IgZWNobz1GQUxTRX0NCg0KZ2dwbG90KGRhdGEgPSB0X2NvbWJpbmVkKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSByZXR1cm5fdl9tYXJrZXRfZGlmZmVyZW5jZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBwZXJzb24pKSArDQogIGxhYnModGl0bGUgPSAiSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBDb21wYXJpc29uIE92ZXIgVGltZSIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIERpZmZlcmVuY2UgdnMgTWFya2V0ICglKSIpDQoNCmdncGxvdChkYXRhID0gdF9jb21iaW5lZCkgKw0KICBnZW9tX3Ntb290aChtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSByZXR1cm5fdl9tYXJrZXRfZGlmZmVyZW5jZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBwZXJzb24pKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIpICsNCiAgbGFicyh0aXRsZSA9ICJJbnZlc3RtZW50IFBlcmZvcm1hbmNlIENvbXBhcmlzb24gT3ZlciBUaW1lIikgKw0KICB4bGFiKCJZZWFyIikgKw0KICB5bGFiKCJSZXR1cm4gRGlmZmVyZW5jZSB2cyBNYXJrZXQgKCUpIikNCg0KYGBgDQojIyMgTWVhbiBSZXR1cm4gRGlmZmVyZW5jZSBmb3IgRWFjaCBQZXJzb24NCmBgYHtyIGVjaG89RkFMU0V9DQoNCm1lYW5fZGlmZiA8LSB0X2NvbWJpbmVkICU+JSANCiAgZ3JvdXBfYnkocGVyc29uKSAlPiUgDQogIHN1bW1hcml6ZShtZWFuX2RpZmYgPSBtZWFuKHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlKSkNCg0KDQpnZ3Bsb3QoZGF0YSA9IG1lYW5fZGlmZikgKw0KICBnZW9tX2JhcihtYXBwaW5nID0gYWVzKHggPSBwZXJzb24sIHkgPSBtZWFuX2RpZmYsDQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IHBlcnNvbiksDQogICAgICAgICAgIHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGxhYnModGl0bGUgPSAiTWVhbiBSZXR1cm4gdnMgTWFya2V0IERpZmZlcmVuY2UgYnkgUGVyc29uIikgKw0KICB4bGFiKCJQZXJzb24iKSArDQogIHlsYWIoIk1lYW4gRGlmZmVyZW5jZSB2cyBNYXJrZXQgKCUpIikNCg0KYGBgDQojIyMgU3VtIG9mIFJldHVybiBEaWZmZXJlbmNlIGZvciBFYWNoIFBlcnNvbg0KYGBge3IgZWNobz1GQUxTRX0NCg0Kc3VtX2RpZmYgPC0gdF9jb21iaW5lZCAlPiUgDQogIGdyb3VwX2J5KHBlcnNvbikgJT4lIA0KICBzdW1tYXJpemUoc3VtX2RpZmYgPSBzdW0ocmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UpKQ0KDQoNCmdncGxvdChkYXRhID0gc3VtX2RpZmYpICsNCiAgZ2VvbV9iYXIobWFwcGluZyA9IGFlcyh4ID0gcGVyc29uLCB5ID0gc3VtX2RpZmYsDQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IHBlcnNvbiksDQogICAgICAgICAgIHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGxhYnModGl0bGUgPSAiU3VtIFJldHVybiB2cyBNYXJrZXQgRGlmZmVyZW5jZSBieSBQZXJzb24iKSArDQogIHhsYWIoIlBlcnNvbiIpICsNCiAgeWxhYigiU3VtIG9mIERpZmZlcmVuY2UgdnMgTWFya2V0ICglKSIpDQoNCmBgYA0KIyMjIFBsb3QgU1A1MDAgdnMgSW5kaXZpZHVhbHMgYnkgWWVhcg0KYGBge3IgZWNobz1GQUxTRX0NCg0KZ2dwbG90KGRhdGEgPSB0X2NvbWJpbmVkKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSBtYXJrZXRfcmV0dXJuKSkgKw0KICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gcmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gcGVyc29uKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiKSArDQogIGZhY2V0X3dyYXAofnBlcnNvbiwgbmNvbCA9IDEpICsNCiAgbGFicyh0aXRsZSA9ICJTJlA1MDAgdnMgSW5kaXZpZHVhbHMgUGVyZm9ybWFuY2UgT3ZlciBUaW1lIikgKw0KICB4bGFiKCJZZWFyIikgKw0KICB5bGFiKCJSZXR1cm4gdnMgTWFya2V0ICglKSIpDQoNCg0KYGBgDQojIyMgUGxvdCBUb3RhbCBDYXNoIEVhcm5lZCBieSBFYWNoIFBlcnNvbg0KYGBge3IgZWNobz1GQUxTRX0NCg0KdG90YWxfZWFybmluZ3MgPC0gdF9jb21iaW5lZCAlPiUgDQogIGdyb3VwX2J5KHBlcnNvbikgJT4lIA0KICBzdW1tYXJpemUodG90YWxfZWFybmVkID0gc3VtKGVuZF95ZWFyX2Nhc2ggLSBjYXNoX2FkZGVkX2VuZF95ZWFyIC0gY2FzaF9zdGFydCkpDQoNCmdncGxvdChkYXRhID0gdG90YWxfZWFybmluZ3MpICsNCiAgZ2VvbV9iYXIobWFwcGluZyA9IGFlcyh4ID0gcGVyc29uLCB5ID0gdG90YWxfZWFybmVkLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBwZXJzb24pLA0KICAgICAgICAgICBzdGF0ID0gImlkZW50aXR5IikgKw0KICBsYWJzKHRpdGxlID0gIlRvdGFsIENhc2ggRWFybmVkIEJ5IFBlcnNvbiIpICsNCiAgeGxhYigiUGVyc29uIikgKw0KICB5bGFiKCJUb3RhbCBDYXNoIEVhcm5lZCAoJCkiKQ0KDQpgYGANCiMjIyBTY2F0dGVyIHBsb3QgUmV0dXJuIHYgUGVyc29uIGJ5IFllYXINCmBgYHtyIGVjaG89RkFMU0V9DQoNCmdncGxvdChkYXRhID0gdF9jb21iaW5lZCkgKw0KICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBwZXJzb24pKSArDQogIGdlb21fc21vb3RoKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IG1hcmtldF9yZXR1cm4pKSArDQogIGxhYnModGl0bGUgPSAiUmV0dXJuIHZzIE1hcmtldCBSZXR1cm4gYnkgWWVhciIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KYGBgDQoNCiMgQ29uY2x1c2lvbnMgDQpJJ2Qgc2F5IHRoYXQgdGhpcyBmYW1pbHkgaGFzIGhhZCBncmVhdCBsdWNrIGluIHRoZSBzdG9jayBtYXJrZXQuIEFsbCB0aHJlZSBoYXZlIG1hZGUgcG9zaXRpdmUgcmV0dXJucyBhZ2FpbnN0IHRoZSBtYXJrZXQuIA0KDQpUbyBhbnN3ZXIgdGhlIHF1ZXN0aW9uIGlmIGhlIHNob3VsZCBoYXZlIGdpdmVuIGFuIGVxdWFsIGFtb3VudCB0byBlYWNoIGtpZCwgSSB0aGluayBzby4gQWJlIGhhZCBhIGhpZ2hlciBzdW0gYW5kIGF2ZXJhZ2UgcmV0dXJuIHJldHVybiB2cyB0aGUgbWFya2V0IHRoYW4gU2FyYS4gSG93ZXZlciwgSSdtIG5vdCB0b28gc3VyZSBiZWNhdXNlIFNhcmEgbmV2ZXIgcmVhbGx5IGhhZCBiYWQgeWVhcnMsIHNvIGl0IGp1c3QgZGVwZW5kcyBJIGZlZWwgbGlrZS4NCg0KDQpDb25zaWRlcmluZyB0aGVpciBkYWQgZGlkbid0IG91dHBlcmZvcm0gdGhlIG1hcmtldCBzaW5jZSAxOTgwLCBJJ2Qgc2F5IHRoZXkndmUgcGVyZm9ybWVkIHByZXR0eSBkZWNlbnRseSBjb21wYXJlZCB0byB3aGF0IGhlIG1pZ2h0IGhhdmUgZG9uZS4gQm90aCBoYXZlIG1hZGUgc2lnbmlmaWNhbnQgcHJvZml0cyBpbiB0aGVpciBvd24gc3R5bGUuDQoNCkphY2sgYWx3YXlzIGhhZCBzdWJ0bGUgZ29vZCB5ZWFycywgbm90IGZsdWN0dWF0aW5nIG11Y2guIEhvd2V2ZXIsIG9uY2UgMTk4MCBoaXQsIGhlIGNvdWxkbid0IHNlZW0gdG8gYnJlYWsgcG9zaXRpdmUuIEFiZSBvbmx5IGVpdGhlciBoYWQgYSBncmVhdCB5ZWFyIG9yIGEgdGVycmlibGUgeWVhci4gSGUgd29uIGJpZyBvciBsb3N0IGJpZywgaGFyZGx5IGFueSBpbiBiZXR3ZWVucy4gU2FyYSBoYWQgYSB2ZXJ5IHN0cm9uZyB5ZWFyIGFmdGVyIDIwMTAsIGJ1dCBvdGhlciB0aGFuIHRoYXQsIGhlciByZXR1cm4gdnMgdGhlIG1hcmtldCBzYXQgY2xvc2UgdG8gMC4NCg==