Simplification
Some useful relationships
\[\large\begin{array}{rcl}
(x+a)(x+b) &=& x^2 + (a+b)x + ab\\
(x+a)(x+a) &=& x^2 + 2a + a^2\\
(x+a)(x-a) &=& x^2 - a^2\\
(ax+b)(cx+d)&=& ac x^2 + (ad+bc)x + bd\\
\end{array}\]
Simplifying using additive inverses
\[\large\begin{array}{rcl}
x + 3 & = & 5 \\
x = x + 3 -(3) & = & 5 - (3) = 2 \\
& & \\
x + 7 & = & 2x + 3 \\
7 = x + 7 - (x) & = & 2x + 3 - (x) = x + 3\\
4 = 7 - (3) & = & x + 3 - (3) = x \\
\end{array}\]
Simplifying using reciprocal values
\[\large\begin{array}{rcl}
2 x & = & 16\\
{2x \over (2)} & = & {16 \over (2)}\\
x & = & 8 \\
\end{array}\]
\[\large\begin{array}{rcl}
{3\over x} &= & 36\\
1 = {3(x)\over (3)x} &= & {36(x) \over (3)} = 12x\\
{1\over 12} = {1\over (12)} &=& {12x\over (12)} = x\\
\end{array}\]
Case 1
\[\large\begin{array}{c}
\left({10h^2 − 9h − 9\over 2h^2 − 19h + 24}\right)\left({h^2 − 16h + 64\over 5h^2 − 37h − 24}\right)\\
{(5h+3)(2h-3)(h-8)(h-8)\over (2h-3)(h-8)(5h+3)(h-8)}\\
{(5h+3)(2h-3)(h-8)(h-8)\over (5h+3)(2h-3)(h-8)(h-8)}\\
1\\
\end{array}\]
Case 2
\[\large\begin{array}{c}
\left({x^2 − x − 6\over x^2 + x − 6}\right) \left({x^2 + 8x + 15\over
x^2 − 9}\right)\\
{(x-3)(x+2)(x+3)(x+5)\over (x+3)(x-2)(x+3)(x-3)}\\
{(x+2)(x+5)\over (x-2)(x+3)}= {x^2 +7x + 10\over x^2 + x - 6}\\
\end{array}\]
Challenge
Simplify the following:
\[\large\begin{array}{c}
\left({y^2 + 10y + 25\over y^2 + 11y + 30}\right)\\
{(y+5)(y+5)\over (y+5)(y+6)}\\
{y+5\over y+6}\\
\end{array}\] \[\large\begin{array}{c}
\left({2x^2 + 7x − 4\over
4x^2 + 2x − 2}\right)\\
{(2x-1)(x+4) \over (2x-1)(2x+2)}\\
{x+4 \over 2x+2} = {x+4 \over 2(x+1)}\\
\end{array}\]
\[\large\begin{array}{c}
\left({c^2 + 2c − 24\over c^2 + 12c + 36}\right)\left({c^2 − 10c + 24\over c^2 − 8c + 16}\right)\\
{(c-4)(c+6)(c-4)(c-6) \over (c+6)(c+6)(c-4)(c-4)}\\
{(c-6) \over (c+6)}\\
\end{array}\]
Algebraic Strategies
Strategy for simultaneous equations
- Remove common multiples and simplify the equations separately
- Transform the equations placing variables on one side of the equals and constants on the other
- Combine terms
- Solve for one variable
- Substitute the value of the known variable to find the values of the others
Case 1
\[\large\begin{array}{rcl}
3x - 2y = 57; & & x + y = 44\\
& & \\
2x + 2y=(2)(x + y) &=& (2)\times 44 = 88\\
& & \\
5x = (3x-2y)+ 2x +2y &= & 57 + 88 = 145\\
x=5x/5&=&145 /5 = 29\\
& & \\
29 + y &=& 44\\
y =29 + y -(29) & = & 44- (29)= 15\\
\end{array}\]
Case 2
\[\large\begin{array}{rcl}
8x - 3y = 8; & & x + 2y = 20\\
& & \\
8x +16y = 8(x + 2y) &=& 8\times 20=160\\
19y = 8x +16y -(8x - 3y) &=& 160 - 8 = 152\\
y = 19y/19 & = & 155/19 = 8\\
& & \\
x + 16 =x +2 \times 8 &= & 20\\
x = x + 16 - (16) &=& 20 -(16) = 4\\
\end{array}\]
Challenge
\[\large\begin{array}{rcl}
3x + 7 & = & 5x - 3\\
7 = 3x + 7 - (3x) & = & 5x - 3 - (3x)= 2x -3\\
7 & = & 2x - 3\\
10 = 7 + (3) & = & 2x - 3 + (3) = 2x \\
5 = 10 / (2) & = & 2x /(2) = x \\
5 &=& x\\
\end{array}\]
\[\large\begin{array}{rcl}
{-2 \over (3x+5)} & = & 6x - 4\\
-2 = {-2\times (3x+5) \over (3x + 5)} & = & (6x - 4)(3x+5) = 18x^2 +18x-20\\
-2 & = & 18x^2 - 18x - 20\\
-1= -2/2 & = & (18x^2 - 18x - 20) / 2 = 9x^2 -9x -10\\
0 = -1 + (1) &=& 9x^2 - 9x -10 + (1) \\
0 = 0/(9) & = & 9x^2 -9x -9 /(9) = x^2 -x - 1\\
\end{array}\]
\[\large\begin{array}{rcl}
x & = & {-b \pm \sqrt{b^2 - 4ac}\over 2a }\\
x & = & {-(-1) \pm \sqrt{-1^2 - 4(1)(-1)}\over 2}\\
x & = & {1 \pm \sqrt{1+4}\over 2} = {1 \pm \sqrt{5}\over 2}\\
\end{array}\]
\[\large\begin{array}{rcl}
{2x + 7\over x - 2} &=& 27\\
2x + 7 = {(2x + 7)(x-2)\over x - 2} &=& 27(x-2) = 27x - 54\\
7 = 2x + 7 - (2x) & = &27x -54 - (2x)= 25x -54\\
7 + (54) & = & 25x -54 + (54)\\
{61\over 25} = {61\over (25)} & = & {25x\over (25)} = x \\
\end{array}\]
\[\large\begin{array}{rcl}
2x+5& = & 6y -15\\
x+8& = & y + 6\\
& & \\
2x+16 =2(x+8) &=& 2(y+6) = 2y +12\\
2x+4 = 2x+16 -(12) &=& 2y +12 -(12) = 2y\\
1= 2x +5 -(2x+4) &=& 6y -15 - 2y = 4y -15\\
16 = 1 +(15) &=& 4y -15 + (15) = 4y\\
4 = 16/(4) &=& 4y/(4) = y\\
& & \\
x+8&=& 4 + 6= 10\\
x = x+8 - (8) = 10 - (8) = 2\\
\end{array}\]
Functions vs Non-Functions
Function Definition
A function is a relation in which each possible input value leads to exactly one output value.
\[\large\begin{eqnarray}
Input & \rightarrow & \hbox{Function} & \rightarrow & Output\\
x\qquad & & f(x) & & {}\qquad y\\
\hbox{domain} & & y = {x \over 5} & & \hbox{range}\\
\large [0, 1, 2 ... n] & & & & \large [0, 0.2, 0.4 ... n/5] \\
\end{eqnarray}\]
Common non-function relationships
Circle
\(\large 25= x^2 + y^2\)

Ellipse
\(\large 25 = 2x^2+ 5y^2\)

Hyperbola
\(\large 25= x^2 y^2\)

\(\large 25=\left(x+1\right) \left(x-5\right) \left(y-1\right) \left(y+4\right)\)

Egg and Heart Shapes
\[\large 25 = \frac{x^2}{.5} + \frac{5y^2}{1-0.1x}\]

\(\large\left(x^2+y^2-2ax)^2 = 4a^2(x^2+y^2)\) 
Flowers
\[\large\left(x^2+y^2\right)^3 = 4x^2y^2\]

Challenge
Determine why these are considered non-functions in this form?
- There is more than one y-value per value of x
- There are values of x that have no corresponding values of y
Some values of y are indeterminable and cannot be caluculated
Is there a domain or mathematical transform that would make any of these a function?
- Using absolute value helps some
- Limiting the domain to a specific set of values also helps sometimes
No magic bullet!
- Answer the questions on pg 20: Numbers 52-69
Give answers for Applied Exercises on pg 21: Numbers 88-90
Inverse Functions
An inverse function will convert output back to the corresponding input value.
\[\large\begin{eqnarray}
Input & \rightarrow & \hbox{Function} & \rightarrow & Output\\
x\qquad & & f(x) & & {}\qquad y\\
& & & & \\
Output & \rightarrow & \hbox{Inverse Function} & \rightarrow & Input\\
y\qquad & & f\prime(y) & & {}\qquad x\\
\end{eqnarray}\]
Challenge
\(\Large [-5,-2,0,2,5]\) |
\(\large y = 3x\) |
\(\Large [-15,-6,0,6,15]\) |
\(\large x_2 = y / 3\) |
\(\Large [-5,-2,0,2,5]\) |
True |
\(\Large [-5,-2,0,2,5]\) |
\(\large y = x^2\) |
\(\Large [25,4,0,4,25]\) |
\(\large x_2 = \sqrt{y}\) |
|
|
\(\Large [-5,-2,0,2,5]\) |
\(\large y = 3x + 4\) |
\(\Large [-11,-2,4,10,19]\) |
|
|
|
\(\Large [-5,-2,0,2,5]\) |
\(\large y = 1/x\) |
|
|
|
|
\(\Large [-5,-2,0,2,5]\) |
$y = |
x |
/x$ |
|
|
LS0tDQp0aXRsZTogJ0lUMTAwIFNlc3Npb24gMjogLSBGdW5jdGlvbnMnDQphdXRob3I6ICdBbnN3ZXJzIGtleTogUm9iZXJ0IEJhdHppbmdlcicNCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICBhdXRvc2l6ZTogeWVzDQogICAgc2VsZl9jb250YWluZWQ6IHllcw0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgcGRmX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAzDQotLS0NCg0KIyBTaW1wbGlmaWNhdGlvbg0KDQojIyBTb21lIHVzZWZ1bCByZWxhdGlvbnNoaXBzDQokJFxsYXJnZVxiZWdpbnthcnJheX17cmNsfQ0KKHgrYSkoeCtiKSAmPSYgeF4yICsgKGErYil4ICsgYWJcXA0KKHgrYSkoeCthKSAmPSYgeF4yICsgMmEgKyBhXjJcXA0KKHgrYSkoeC1hKSAmPSYgeF4yIC0gYV4yXFwNCihheCtiKShjeCtkKSY9JiBhYyB4XjIgKyAoYWQrYmMpeCArIGJkXFwNClxlbmR7YXJyYXl9JCQNCg0KDQojIyBTaW1wbGlmeWluZyAgdXNpbmcgYWRkaXRpdmUgaW52ZXJzZXMNCiQkXGxhcmdlXGJlZ2lue2FycmF5fXtyY2x9DQp4ICsgMyAmID0gJiA1IFxcDQp4ID0geCArIDMgLSgzKSAmID0gJiA1IC0gKDMpID0gMiBcXA0KJiAmIFxcDQp4ICsgNyAmID0gJiAyeCArIDMgXFwNCjcgPSB4ICsgNyAtICh4KSAgJiA9ICYgMnggKyAzIC0gKHgpID0geCArIDNcXA0KNCA9IDcgLSAoMykgJiA9ICYgeCArIDMgLSAoMykgPSB4IFxcDQpcZW5ke2FycmF5fSQkDQoNCg0KIyMgU2ltcGxpZnlpbmcgdXNpbmcgcmVjaXByb2NhbCB2YWx1ZXMNCiAgDQokJFxsYXJnZVxiZWdpbnthcnJheX17cmNsfQ0KMiB4ICYgPSAmIDE2XFwNCnsyeCBcb3ZlciAoMil9ICYgPSAmIHsxNiBcb3ZlciAoMil9XFwNCnggJiA9ICYgOCBcXA0KXGVuZHthcnJheX0kJA0KDQoNCiQkXGxhcmdlXGJlZ2lue2FycmF5fXtyY2x9DQp7M1xvdmVyIHh9ICY9ICYgMzZcXA0KMSA9IHszKHgpXG92ZXIgKDMpeH0gJj0gJiB7MzYoeCkgXG92ZXIgKDMpfSA9IDEyeFxcDQp7MVxvdmVyIDEyfSA9IHsxXG92ZXIgKDEyKX0gJj0mIHsxMnhcb3ZlciAoMTIpfSA9IHhcXA0KXGVuZHthcnJheX0kJA0KDQojIyBDYXNlIDENCiQkXGxhcmdlXGJlZ2lue2FycmF5fXtjfQ0KXGxlZnQoezEwaF4yIOKIkiA5aCDiiJIgOVxvdmVyIDJoXjIg4oiSIDE5aCArIDI0fVxyaWdodClcbGVmdCh7aF4yIOKIkiAxNmggKyA2NFxvdmVyIDVoXjIg4oiSIDM3aCDiiJIgMjR9XHJpZ2h0KVxcDQp7KDVoKzMpKDJoLTMpKGgtOCkoaC04KVxvdmVyICgyaC0zKShoLTgpKDVoKzMpKGgtOCl9XFwNCnsoNWgrMykoMmgtMykoaC04KShoLTgpXG92ZXIgKDVoKzMpKDJoLTMpKGgtOCkoaC04KX1cXA0KMVxcDQpcZW5ke2FycmF5fSQkDQoNCg0KIyMgQ2FzZSAyDQokJFxsYXJnZVxiZWdpbnthcnJheX17Y30NClxsZWZ0KHt4XjIg4oiSIHgg4oiSIDZcb3ZlciB4XjIgKyB4IOKIkiA2fVxyaWdodCkgXGxlZnQoe3heMiArIDh4ICsgMTVcb3Zlcg0KeF4yIOKIkiA5fVxyaWdodClcXA0Keyh4LTMpKHgrMikoeCszKSh4KzUpXG92ZXIgKHgrMykoeC0yKSh4KzMpKHgtMyl9XFwNCnsoeCsyKSh4KzUpXG92ZXIgKHgtMikoeCszKX09IHt4XjIgKzd4ICsgMTBcb3ZlciB4XjIgKyB4IC0gNn1cXA0KXGVuZHthcnJheX0kJA0KDQojIyBDaGFsbGVuZ2UNCg0KU2ltcGxpZnkgdGhlIGZvbGxvd2luZzogICANCiQkXGxhcmdlXGJlZ2lue2FycmF5fXtjfQ0KXGxlZnQoe3leMiArIDEweSArIDI1XG92ZXIgeV4yICsgMTF5ICsgMzB9XHJpZ2h0KVxcDQp7KHkrNSkoeSs1KVxvdmVyICh5KzUpKHkrNil9XFwNCnt5KzVcb3ZlciB5KzZ9XFwNClxlbmR7YXJyYXl9JCQNCiQkXGxhcmdlXGJlZ2lue2FycmF5fXtjfQ0KXGxlZnQoezJ4XjIgKyA3eCDiiJIgNFxvdmVyDQo0eF4yICsgMngg4oiSIDJ9XHJpZ2h0KVxcDQp7KDJ4LTEpKHgrNCkgXG92ZXIgKDJ4LTEpKDJ4KzIpfVxcDQp7eCs0IFxvdmVyIDJ4KzJ9ID0ge3grNCBcb3ZlciAyKHgrMSl9XFwNClxlbmR7YXJyYXl9JCQNCg0KJCRcbGFyZ2VcYmVnaW57YXJyYXl9e2N9DQpcbGVmdCh7Y14yICsgMmMg4oiSIDI0XG92ZXIgY14yICsgMTJjICsgMzZ9XHJpZ2h0KVxsZWZ0KHtjXjIg4oiSIDEwYyArIDI0XG92ZXIgY14yIOKIkiA4YyArIDE2fVxyaWdodClcXA0KeyhjLTQpKGMrNikoYy00KShjLTYpIFxvdmVyIChjKzYpKGMrNikoYy00KShjLTQpfVxcDQp7KGMtNikgXG92ZXIgKGMrNil9XFwNClxlbmR7YXJyYXl9JCQNCg0KIyBBbGdlYnJhaWMgU3RyYXRlZ2llcw0KDQoNCiMjIEFsZ2VicmEgDQoNCiogZnJvbSBBcmFiaWMgImFsLWphYnIiICAgIA0KbWVhbmluZyAqKiJyZXVuaW9uIG9mIGJyb2tlbiBwYXJ0cyIqKg0KDQoqIGEgc3lzdGVtYXRpYyBhcHBsaWNhdGlvbiBvZiB0aGUgYmFzaWMgcnVsZXMgdG8gc2ltcGxpZnkgYW5kIHNvbHZlIGVxdWF0aW9ucw0KDQoNCiMjIFN0cmF0ZWd5IGZvciBzaW11bHRhbmVvdXMgZXF1YXRpb25zDQoNCjEuIFJlbW92ZSBjb21tb24gbXVsdGlwbGVzIGFuZCBzaW1wbGlmeSB0aGUgZXF1YXRpb25zIHNlcGFyYXRlbHkNCjIuIFRyYW5zZm9ybSB0aGUgZXF1YXRpb25zIHBsYWNpbmcgdmFyaWFibGVzIG9uIG9uZSBzaWRlIG9mIHRoZSBlcXVhbHMgYW5kIGNvbnN0YW50cyBvbiB0aGUgb3RoZXINCjMuIENvbWJpbmUgdGVybXMNCjQuIFNvbHZlIGZvciBvbmUgdmFyaWFibGUNCjUuIFN1YnN0aXR1dGUgdGhlIHZhbHVlIG9mIHRoZSBrbm93biB2YXJpYWJsZSB0byBmaW5kIHRoZSB2YWx1ZXMgb2YgdGhlIG90aGVycw0KDQoNCiMjIENhc2UgMQ0KDQokJFxsYXJnZVxiZWdpbnthcnJheX17cmNsfQ0KM3ggLSAyeSA9IDU3OyAmICYgeCArIHkgID0gNDRcXA0KJiAmIFxcDQoyeCArIDJ5PSgyKSh4ICsgeSkgICY9JiAoMilcdGltZXMgNDQgPSA4OFxcDQomICYgXFwNCjV4ID0gKDN4LTJ5KSsgMnggKzJ5ICY9ICYgNTcgKyA4OCA9IDE0NVxcDQp4PTV4LzUmPSYxNDUgLzUgPSAyOVxcDQomICYgXFwNCjI5ICsgeSAmPSYgNDRcXA0KeSA9MjkgKyB5IC0oMjkpICYgPSAmIDQ0LSAoMjkpPSAgMTVcXA0KXGVuZHthcnJheX0kJA0KDQojIyBDYXNlIDINCg0KDQokJFxsYXJnZVxiZWdpbnthcnJheX17cmNsfQ0KOHggLSAzeSA9IDg7ICYgJiB4ICsgMnkgID0gMjBcXA0KJiAmIFxcDQo4eCArMTZ5ID0gOCh4ICsgMnkpICY9JiA4XHRpbWVzIDIwPTE2MFxcDQoxOXkgPSA4eCArMTZ5IC0oOHggLSAzeSkgJj0mIDE2MCAtIDggPSAxNTJcXA0KeSA9IDE5eS8xOSAmID0gJiAxNTUvMTkgPSA4XFwNCiYgJiBcXA0KeCArIDE2ID14ICsyIFx0aW1lcyA4ICY9ICYgMjBcXA0KeCA9IHggKyAxNiAtICgxNikgJj0mIDIwIC0oMTYpID0gNFxcDQpcZW5ke2FycmF5fSQkIA0KDQoNCg0KIyMgQ2hhbGxlbmdlDQokJFxsYXJnZVxiZWdpbnthcnJheX17cmNsfQ0KM3ggKyA3ICYgPSAmIDV4IC0gM1xcDQo3ID0gM3ggKyA3IC0gKDN4KSAmID0gJiA1eCAtIDMgLSAoM3gpPSAyeCAtM1xcDQo3ICYgPSAmIDJ4IC0gM1xcDQoxMCA9IDcgKyAoMykgJiA9ICYgMnggLSAzICsgKDMpID0gMnggXFwNCjUgPSAxMCAvICgyKSAmID0gJiAyeCAvKDIpID0geCBcXA0KNSAmPSYgeFxcDQpcZW5ke2FycmF5fSQkDQoNCiQkXGxhcmdlXGJlZ2lue2FycmF5fXtyY2x9DQp7LTIgXG92ZXIgKDN4KzUpfSAmID0gJiA2eCAtIDRcXA0KLTIgPSB7LTJcdGltZXMgKDN4KzUpIFxvdmVyICgzeCArIDUpfSAmID0gJiAoNnggLSA0KSgzeCs1KSA9IDE4eF4yICsxOHgtMjBcXA0KLTIgJiA9ICYgMTh4XjIgLSAxOHggLSAyMFxcDQotMT0gLTIvMiAmID0gJiAoMTh4XjIgLSAxOHggLSAyMCkgLyAyID0gOXheMiAtOXggLTEwXFwNCjAgPSAtMSArICgxKSAmPSYgOXheMiAtIDl4IC0xMCArICgxKSBcXA0KMCA9IDAvKDkpICYgPSAmIDl4XjIgLTl4IC05IC8oOSkgPSB4XjIgLXggLSAxXFwNClxlbmR7YXJyYXl9JCQNCg0KJCRcbGFyZ2VcYmVnaW57YXJyYXl9e3JjbH0NCnggJiA9ICYgey1iIFxwbSBcc3FydHtiXjIgLSA0YWN9XG92ZXIgMmEgfVxcDQp4ICYgPSAmIHstKC0xKSBccG0gXHNxcnR7LTFeMiAtIDQoMSkoLTEpfVxvdmVyIDJ9XFwNCnggJiA9ICYgezEgXHBtIFxzcXJ0ezErNH1cb3ZlciAyfSA9IHsxIFxwbSBcc3FydHs1fVxvdmVyIDJ9XFwNClxlbmR7YXJyYXl9JCQNCg0KJCRcbGFyZ2VcYmVnaW57YXJyYXl9e3JjbH0NCnsyeCArIDdcb3ZlciB4IC0gMn0gJj0mIDI3XFwNCjJ4ICsgNyA9IHsoMnggKyA3KSh4LTIpXG92ZXIgeCAtIDJ9ICY9JiAyNyh4LTIpID0gMjd4IC0gNTRcXA0KNyA9IDJ4ICsgNyAtICgyeCkgJiA9ICYyN3ggLTU0IC0gKDJ4KT0gMjV4IC01NFxcDQo3ICsgKDU0KSAgJiA9ICYgMjV4IC01NCArICg1NClcXA0KezYxXG92ZXIgMjV9ID0gezYxXG92ZXIgKDI1KX0gJiA9ICYgezI1eFxvdmVyICgyNSl9ID0geCBcXA0KXGVuZHthcnJheX0kJA0KDQokJFxsYXJnZVxiZWdpbnthcnJheX17cmNsfQ0KMngrNSYgPSAmIDZ5IC0xNVxcDQp4KzgmID0gJiB5ICsgNlxcIA0KJiAmIFxcDQoyeCsxNiA9Mih4KzgpICY9JiAyKHkrNikgPSAyeSArMTJcXA0KMngrNCA9IDJ4KzE2IC0oMTIpICY9JiAyeSArMTIgLSgxMikgPSAyeVxcDQoxPSAyeCArNSAtKDJ4KzQpICY9JiA2eSAtMTUgLSAyeSA9IDR5IC0xNVxcDQoxNiA9IDEgKygxNSkgJj0mIDR5IC0xNSArICgxNSkgPSA0eVxcDQo0ID0gMTYvKDQpICY9JiA0eS8oNCkgPSB5XFwNCiYgJiBcXA0KeCs4Jj0mIDQgKyA2PSAxMFxcDQp4ID0geCs4IC0gKDgpID0gMTAgLSAoOCkgPSAyXFwNClxlbmR7YXJyYXl9JCQNCg0KIyBGdW5jdGlvbnMgdnMgTm9uLUZ1bmN0aW9ucw0KDQoNCiMjIEZ1bmN0aW9uIERlZmluaXRpb24NCg0KPGxhcmdlPg0KQSBmdW5jdGlvbiBpcyBhIHJlbGF0aW9uIGluIHdoaWNoIGVhY2ggcG9zc2libGUgaW5wdXQgdmFsdWUgbGVhZHMgdG8gZXhhY3RseSBvbmUgb3V0cHV0IHZhbHVlLg0KPC9sYXJnZT4NCg0KJCRcbGFyZ2VcYmVnaW57ZXFuYXJyYXl9DQogSW5wdXQgJiBccmlnaHRhcnJvdyAmIFxoYm94e0Z1bmN0aW9ufSAmIFxyaWdodGFycm93ICYgT3V0cHV0XFwNCnhccXF1YWQgJiAmIGYoeCkgJiAmIHt9XHFxdWFkIHlcXA0KXGhib3h7ZG9tYWlufSAmICYgeSA9IHt4IFxvdmVyIDV9ICYgJiBcaGJveHtyYW5nZX1cXA0KXGxhcmdlIFswLCAxLCAyIC4uLiBuXSAmICYgICYgJiBcbGFyZ2UgWzAsIDAuMiwgMC40IC4uLiBuLzVdIFxcDQpcZW5ke2VxbmFycmF5fSQkDQoNCg0KIyMgQ29tbW9uIG5vbi1mdW5jdGlvbiByZWxhdGlvbnNoaXBzDQoqKkNpcmNsZSoqICAgDQokXGxhcmdlIDI1PSB4XjIgKyB5XjIkICAgIA0KIVtjaXJjbGVdKGltZy9ncmNpcmNsZS5wbmcpDQoNCg0KKipFbGxpcHNlKiogICANCiRcbGFyZ2UgMjUgPSAyeF4yKyA1eV4yJCAgIA0KIVtjaXJjbGVdKGltZy9ncmVsbGlwc2UucG5nKQ0KDQojIyBIeXBlcmJvbGENCg0KJFxsYXJnZSAyNT0geF4yIHleMiQgICAgDQohW2NpcmNsZV0oaW1nL2dyaHlwZXIucG5nKQ0KDQoNCiRcbGFyZ2UgMjU9XGxlZnQoeCsxXHJpZ2h0KSBcbGVmdCh4LTVccmlnaHQpIFxsZWZ0KHktMVxyaWdodCkgXGxlZnQoeSs0XHJpZ2h0KSQgICAgDQohW2NpcmNsZV0oaW1nL2dyaHlwZXIyLnBuZykNCg0KDQojIyBFZ2cgYW5kIEhlYXJ0IFNoYXBlcw0KDQokJFxsYXJnZSAyNSA9IFxmcmFje3heMn17LjV9ICsgXGZyYWN7NXleMn17MS0wLjF4fSQkICAgIA0KIVtlZ2ddKGltZy9ncmVnZy5wbmcpDQoNCg0KJFxsYXJnZVxsZWZ0KHheMit5XjItMmF4KV4yID0gNGFeMih4XjIreV4yKSQgICAgICFbZmxvd2VyXShpbWcvZ3JjYXJ0b2lkLnBuZykNCg0KDQojIyBGbG93ZXJzDQoNCiQkXGxhcmdlXGxlZnQoeF4yK3leMlxyaWdodCleMyA9IDR4XjJ5XjIkJCAgIA0KIVtmbG93ZXJdKGltZy9ncjRwZXRhbC5wbmcpIA0KDQoNCiMjIENoYWxsZW5nZQ0KDQoqIERldGVybWluZSB3aHkgdGhlc2UgYXJlIGNvbnNpZGVyZWQgbm9uLWZ1bmN0aW9ucyBpbiB0aGlzIGZvcm0/DQoNCiAgICogVGhlcmUgaXMgbW9yZSB0aGFuIG9uZSB5LXZhbHVlIHBlciB2YWx1ZSBvZiB4DQogICAqIFRoZXJlIGFyZSB2YWx1ZXMgb2YgeCB0aGF0IGhhdmUgbm8gY29ycmVzcG9uZGluZyB2YWx1ZXMgb2YgeQ0KICAgKiBTb21lIHZhbHVlcyBvZiB5IGFyZSBpbmRldGVybWluYWJsZSBhbmQgY2Fubm90IGJlIGNhbHVjdWxhdGVkDQogICANCiogSXMgdGhlcmUgYSBkb21haW4gb3IgbWF0aGVtYXRpY2FsIHRyYW5zZm9ybSB0aGF0IHdvdWxkIG1ha2UgYW55IG9mIHRoZXNlIGEgZnVuY3Rpb24/IA0KDQogICAqIFVzaW5nIGFic29sdXRlIHZhbHVlIGhlbHBzIHNvbWUNCiAgICogTGltaXRpbmcgdGhlIGRvbWFpbiB0byBhIHNwZWNpZmljIHNldCBvZiB2YWx1ZXMgYWxzbyBoZWxwcyBzb21ldGltZXMNCiAgICogTm8gbWFnaWMgYnVsbGV0IQ0KICAgDQoNCiogQW5zd2VyIHRoZSBxdWVzdGlvbnMgb24gcGcgMjA6IE51bWJlcnMgNTItNjkNCiogR2l2ZSBhbnN3ZXJzIGZvciBBcHBsaWVkIEV4ZXJjaXNlcyBvbiBwZyAyMTogTnVtYmVycyA4OC05MA0KDQojIEludmVyc2UgRnVuY3Rpb25zDQoNCjxsYXJnZT4NCkFuIGludmVyc2UgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IG91dHB1dCBiYWNrIHRvIHRoZSBjb3JyZXNwb25kaW5nIGlucHV0IHZhbHVlLjwvbGFyZ2U+DQoNCiQkXGxhcmdlXGJlZ2lue2VxbmFycmF5fQ0KIElucHV0ICYgXHJpZ2h0YXJyb3cgJiBcaGJveHtGdW5jdGlvbn0gJiBccmlnaHRhcnJvdyAmIE91dHB1dFxcDQp4XHFxdWFkICYgJiBmKHgpICYgJiB7fVxxcXVhZCB5XFwNCiYgJiAmICYgXFwNCk91dHB1dCAgJiBccmlnaHRhcnJvdyAmIFxoYm94e0ludmVyc2UgRnVuY3Rpb259ICYgXHJpZ2h0YXJyb3cgJiBJbnB1dFxcDQp5XHFxdWFkICYgJiBmXHByaW1lKHkpICYgJiB7fVxxcXVhZCB4XFwNClxlbmR7ZXFuYXJyYXl9JCQNCg0KDQoNCiMjIENoYWxsZW5nZQ0KDQp8IElucHV0ICRcbGFyZ2UoeCkkIHwgRnVuY3Rpb24gfCBPdXRwdXQgJFxsYXJnZSAoeSkkIHwgSW52ZXJzZSBGdW5jdGlvbnwgUmV2ZXJ0ZWQgJFxsYXJnZSAoeF8yKSQgfCBEb2VzICRcbGFyZ2UgeCA9IHhfMiQgP3wNCnwtLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS18LS0tfA0KfCRcTGFyZ2UgWy01LC0yLDAsMiw1XSQgfCAkXGxhcmdlIHkgPSAzeCQgfCAkXExhcmdlIFstMTUsLTYsMCw2LDE1XSQgfCAgJFxsYXJnZSB4XzIgPSB5IC8gMyQgfCRcTGFyZ2UgWy01LC0yLDAsMiw1XSQgfCBUcnVlIHwNCnwkXExhcmdlIFstNSwtMiwwLDIsNV0kIHwgJFxsYXJnZSB5ID0geF4yJCB8ICRcTGFyZ2UgWzI1LDQsMCw0LDI1XSQgfCAgJFxsYXJnZSB4XzIgPSBcc3FydHt5fSQgfCB8IHwNCnwkXExhcmdlIFstNSwtMiwwLDIsNV0kIHwgJFxsYXJnZSB5ID0gM3ggKyA0JCB8ICRcTGFyZ2UgWy0xMSwtMiw0LDEwLDE5XSQgfCAgfCB8IHwNCnwkXExhcmdlIFstNSwtMiwwLDIsNV0kIHwgJFxsYXJnZSB5ID0gMS94JCB8ICB8ICB8IHwgfA0KfCRcTGFyZ2UgWy01LC0yLDAsMiw1XSQgfCAkXGxhcmdlIHkgPSB8eHwveCQgfCAgfCAgfCB8IHwNCg0KDQojIEZ1bmN0aW9uIFRyYW5zZm9ybXMNCg0KIyMgRnVuY3Rpb24gdHJhbnNmb3Jtcw0KDQp8IFRyYW5zZm9ybXwgRm9ybXVsYXxQYXJhYm9sYSB8IExpbmUgfCBOb3JtYWwgQ3VydmUgfA0KfC0tLS0tLS0tLS0tLS18LS0tLS0tLXwtLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tfA0KfCAoTikgTm9uZSB8JFxsYXJnZSB5ICA9ICBmKHgpJCB8ICRcbGFyZ2UgeSA9IHheMiQgfCAkXGxhcmdlIHkgPSAyeCQgfCAkXGxhcmdlIHkgPSB7MVxvdmVyIFxzaWdtYVxzcXJ0ezJccGl9fSBlXnsteyh4LVxtdSleMlxvdmVyIDIgXHNpZ21hXjIpfX0kIHwgDQp8IChBKSBIb3Jpem9udGFsIHwkXGxhcmdlIHkgID0gIGYoeCtBKSQgfCRcbGFyZ2UgeSA9ICh4K0EpXjIkIHwgJFxsYXJnZSB5ID0gMih4ICsgQSkkIHwgJFxsYXJnZSB5ID0gezFcb3ZlciBcc2lnbWFcc3FydHsyXHBpfX0gZV57LXsoeCtBLVxtdSleMlxvdmVyIDIgXHNpZ21hXjIpfX0kIHwNCnwgKEIpIFZlcnRpY2FsIHwkXGxhcmdlIHkgID0gIGYoeCkgKyBCJCB8ICRcbGFyZ2UgeSA9IHheMiArIEIkIHwgICRcbGFyZ2UgeSA9IDJ4ICsgQiQgfCRcbGFyZ2UgeSA9IEIrIHsxXG92ZXIgXHNpZ21hXHNxcnR7MlxwaX19IGVeey17KHgtXG11KV4yXG92ZXIgMiBcc2lnbWFeMil9fSQgfA0KfCAoQykgQW1wbGl0dWRlIHwgJFxsYXJnZSB5ICA9ICBDXHRpbWVzIGYoeCkkIHwgJFxsYXJnZSB5ID0gQyB4XjIkIHwgICRcbGFyZ2UgeSA9IEMoMngpJCB8JFxsYXJnZSB5ID0ge0Ncb3ZlciBcc2lnbWFcc3FydHsyXHBpfX0gZV57LXsoeC1cbXUpXjJcb3ZlciAyIFxzaWdtYV4yKX19JCB8DQoNCiMjIEdyYXBoIG9mIFRyYW5zZm9ybWF0aW9ucw0KIVt0cmFuc2Zvcm1zXShpbWcvZ3JmdW5jdC5wbmcpDQoNCiFbdHJhbnNmb3Jtc10oaW1nL2dybGluZWFyLnBuZykNCg0KDQojIyBOb3JtYWwgR3JhcGgNCiFbdHJhbnNmb3Jtc10oaW1nL2dybm9ybS5wbmcpDQoNCiMjIENoYWxsZW5nZQ0KDQoqIENvbXBhcmUgdGhlIGdyYXBoIG9mICRcbGFyZ2UgZih4K0EpJCB0byB0aGF0IG9mICRcbGFyZ2UgZih4KSQNCg0KKiBDb21wYXJlIHRoZSBncmFwaCBvZiAkXGxhcmdlIGYoeCkgKyBCJCAgdG8gdGhhdCBvZiAkXGxhcmdlIGYoeCkkDQoNCiogQ29tcGFyZSB0aGUgZ3JhcGggb2YgJFxsYXJnZSBmKHgpXHRpbWVzIEMkIHRvIHRoYXQgb2YgJFxsYXJnZSBmKHgpJCANCg0KDQojIyBUb3BpYyBmb3IgVW5pdCA1DQoNCioqTGluZWFyIGZ1bmN0aW9ucyoqDQpSZWFkIENoYXB0ZXIgMiBQcmVjYWxjdWx1cw0KDQogDQo=