Archive | Parenting

Will you help us with a title for a new book?

Amy and I are getting the rights back to our first book, Don’t Date Naked: put on the full armor of God in your dating relationships! We are going to start self publishing this book now and want to freshen it up a little bit with a new title and cover design (as well as important new content for the book).  So what do you think would make for a new good title for a dating book?

The basic premise of our book is that you don’t have to kiss dating goodbye, in fact, if you learn how to honor God, others, and yourself then you can actually have a great dating experience that prepares you very well for marriage!  We take a pro dating stance in our book and then help young adults learn how to set up the right boundaries to keep themselves safe and protected while dating.

Here’s the chapters:

1. Let’s Hear It for Dating
2. Making a List and Checking It Twice
3. It’s All in Your Personality
4. Dating 101
5. Sex and the City
6. Staying Safe While Dating
7. Keeping Emotional Boundaries
8. What If Mr. or Ms. Right Turns Out to Be All Wrong?

As you can see the book is very applicable and straightforward. I think the best feedback we’ve been given over the years is that people really appreciate our openness and honesty. Amy and I are very transparent in the book and do not take a position of talking down to young adults, but rather, we respect them and believe they can make healthy choices in their dating relationships if they are given the chance.

The reason behind wanting a new title is that the church, in general, wasn’t ready for a Christian book to have the word “naked” in the title.  I was a bit ahead of the curve on that one =]  The book still did extremely well, and has been in print since 2003.  But now we get a chance to spruce things up, expand and deliberate on what we’ve learned since initially writing the book and put a new cover on it as well.

So let us know what you think would be a great title for the book.  If a title is chosen, the winner can have the choice of whatever they want from our online store (one item only) and of course a signed copy of the new look book!

Posted in Dating, The JournalsView Comments

A live interview with Renee Johnson – author of Faithbook of Jesus

Watch the interview with Renee Johnson on her new book “Faithbook of Jesus” specifically written for 20-somethings!

smalley on livestream.com. Broadcast Live Free

If you want to preorder Faithbook of Jesus now, please click on the Amazon.com link below:

Posted in Devotionals, Expert Interviews, FeaturedView Comments

A great new devo: The Faithbook of Jesus

One of our friends is Renee Johnson, who is getting close to releasing a great devotional book titled, “The Faithbook of Jesus”.  You can pre order the book here. Check out some of these endorsements for her book:

“Faithbook of Jesus” is a powerful and creative tool to reach out to 20-somethings to draw them into a daily relationship with God. I encourage everyone to pick up a copy. – Josh McDowell, Leading Apologist/Evangelist. Author of over 77 books, 49 million copies sold

“As Senior Pastor of a church known for its young following, I see the power 20-something’s can have when they truly connect with God and seek His Will for their lives. This is a book for young people to draw closer to the heart of God. I encourage everyone to pick up a copy of “Faithbook of Jesus” today”. – Miles McPherson, Senior Pastor of the Rock Church, San Diego

We’ve worked with Renee for a while now and really appreciate her heart for wanting to inspire people to draw closer to Christ!

Posted in DevotionalsView Comments

Q and A: “My daughter hates me!”

The question:

My daughter has hated me since the age of 15. she was a wonderful loving child and got involved with a controlling guy that she married at 18. she is only 18 now, dumped and divorced from this guy after a few months. it was a horrible time but she loves his mother still and wants me out of her life. i have tried to get along with her but she is nasty and disrespectful and i wont take it. i have 3 older children who treat me with respect and I wont let Anna treat me differently. I cant seem to reason with her. she refuses to talk about the past because it makes her feel bad, i want her to get help because she is full of hate and bitterness. I pray for her as does many, but her heart only seems to get harder.

Watch the answer Michael Smalley gives this hurting mother.

Posted in Discipline for Kids, Q&A, Video PodcastsView Comments

Choices That Impact Your Marriage

God has given you the ability to choose. Next to the gift of His Son Jesus, this is the most precious gift you possess. It’s what separates you from all other forms of life on this planet. Making choices allows you to tap into strengths you never thought you had and exercise the power to change whatever needs changing in your life. Whatever grief or anger or pain you may feel about your marriage, you have the power within you to do something about it. You are not a victim. You are free to choose to act, to change. God has given you a huge reservoir of talent, creativity, knowledge, self-worth, energy, and love. You have the freedom to change your negative responses to your mate’s behavior and draw on these God-given assets to do the right and helpful thing. Making this choice can introduce a redemptive force for positive change in your marriage.

For marriage choices it narrows down to two critical things every married individual must exercise: unconditional love and personal responsibility. Unconditional love means you accept and cherish your mate as he or she is. Personal responsibility means you take charge of correcting your own faults instead of your mate’s. That, in a nutshell, is it. Intimacy, happiness, growth, communication and all the other vital aspects of a good marriage grow out of these two choices. If both partners recognize this fact, there will be no victims in the marriage. Each person’s happiness will rest entirely in his or her own hands. And the end result is the safety and security that every marriage must have in order to thrive.

Do you believe this? Really believe this? Since it’s my contention that all behavior is a result of what we believe, this is a crucial question. Do you believe that you can take personal responsibility for the success of your marriage? If you don’t, then you must believe the opposite—that your spouse or circumstances are in control of what happens to you. You must believe that you are a victim. Therefore you must react and put the blame on your mate when the marriage does not meet your expectations. This is a tragedy, because when you blame your mate you not only divest yourself of your responsibility, you also reduce the choices you have to change the relationship. You forfeit the ability to control your own destiny.

So if you want your marriage to be the most exciting and rewarding journey of your life, the question to ask is not whether your mate is doing enough to make the marriage work, but rather: Are you loving your mate unconditionally by taking responsibility for your role in the relationship? A good way to turn this intention into a commitment is to make a promise of it. Promise to look at yourself first, to take responsibility for your own part of the marriage, and to stop trying to change your mate. Such a promise puts legs on unconditional love. It says you are willing to put your personal dreams and needs on hold for a while and make what’s best for the relationship a priority.

Posted in Conflict Resolution, Hiding God's Word, MarriageView Comments

Connecting to the Right Power Source

On board my sparkling new party boat were my guests, a missionary family of seven. I had bragged to them about my new boat, how wonderful it was and what a great time we’d have on the lake. Now we were ready to cast off, loaded with a picnic lunch, fishing gear, water skis, and everything else needed for water fun.

Hamming it up, I told the young kids to give me a count down. Five…Four…Three…Two…One…Blastoff! I turned the ignition and away from the dock we flew like a rocket ship from its launch pad. I overheard the five-year-old boy say to his father, “This is the coolest boat on the lake!” I loved it. I was in boat heaven. But then something happened; the engine stopped and we started losing speed.
“Don’t worry everyone; I’ll have this fixed in a second.” I turned the ignition key several times and the engine roared back to life. Once again we were off. But then it happened again. The engine died. What was going on? This pattern of the engine starting and stopping went on for the next few minutes. I checked the gas level, oil, and anything else I could possibly think of to create the illusion that I knew what I was doing. But no matter what I did, shortly after I’d get the engine running, it would die.

“Why won’t this boat work!” My voice boomed across the lake. I was completely frustrated and totally embarrassed. “Nothing is made with quality any more.” I wanted to sink that stupid boat right then and there, but I figured that drowning a missionary wouldn’t help my reputation.

That’s when Greg said, “Hey, Dad, what’s this cord for? Every time I pull it, the engine stops.” And then he started laughing. That cord was the emergency engine kill. I had been ready to blow up my boat, while all along it had been Greg playing a practical joke on me. At that moment I understood how it was possible for Abraham to place his son upon an altar.

For a boat, or anything electrical to function as it was designed, it needs to be connected to a power source. If human relationships are to function as they were designed, they too need to be connected to a power source. It’s as if you have a built-in battery that needs daily charges to keep you feeling complete and satisfied. For a long time I believed that I could keep that battery charged if I just plugged a 110-volt electrical cord into other people or my wife. Many of us enter marriage looking to our mate as the source of that power charge. We think, “Now that I have this person in my life, I am really going to have my needs met and be happy.” We ultimately find, however, that our mates cannot recharge our battery. Indeed, husbands and wives can be frustrating and irritating and drain away more emotional energy than they give. Our mates can be tremendous sources of help and encouragement, but if we expect them to be the source of our happiness, they are sure to disappoint us in the long run.

When coming face-to-face with this inevitable disappointment, many people assume they must have married the wrong person. Some may resort to an affair to recharge their battery. The stolen charge may light up the circuits for a moment, but after the glow fades they will feel emptier and more miserable than before. Even if they divorce and remarry the “right person,” they will encounter the same frustration. The problem is not in the person they marry; it is in their expectations that that person will make them happy and keep them charged day after day. Wrong.

Sooner or later we run headlong into an inescapable fact: no person on earth is capable of giving us the fulfillment we crave. We can never plug in to enough people to keep our lives filled with the happiness we want. It’s no wonder so many people consider suicide as a way out. By depending on people to make us happy, we not only miss the positive emotions we crave, we also saddle ourselves with the very negative emotions we want to avoid—deep frustration, disappointment, hurt feelings, worry, anxiety, fear, unrest, uncertainty, and confusion. These emotions are the inevitable result of depending on a person, place, or thing for your fulfillment. Bottom line: We’re just not wired to plug into other people as our power source. God made a way for us to find fulfillment and true happiness. God created us. God designed us for a relationship with Him. But the power cord must be connected through His son Jesus Christ. Jesus himself said he was the way to connect to God.

Posted in Featured, Hiding God's WordView Comments

advert

PHVsPjxsaT48c3Ryb25nPndvb19hZHNfcm90YXRlPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkXzIwMF9hZHNlbnNlPC9zdHJvbmc+IC0gPCEtLS8qIE9wZW5YIEphdmFzY3JpcHQgVGFnIHYyLjguMi1yYzI1ICovLS0+DQoNCjxzY3JpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPjwhLS0vLzwhW0NEQVRBWw0KICAgdmFyIG0zX3UgPSAobG9jYXRpb24ucHJvdG9jb2w9PVwnaHR0cHM6XCc/XCdodHRwczovL2QxLm9wZW54Lm9yZy9hanMucGhwXCc6XCdodHRwOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJyk7DQogICB2YXIgbTNfciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo5OTk5OTk5OTk5OSk7DQogICBpZiAoIWRvY3VtZW50Lk1BWF91c2VkKSBkb2N1bWVudC5NQVhfdXNlZCA9IFwnLFwnOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiPHNjclwiK1wiaXB0IHR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJyBzcmM9XCdcIittM191KTsNCiAgIGRvY3VtZW50LndyaXRlIChcIj96b25laWQ9ODM4OTYmYW1wO3RhcmdldD1fdG9wXCIpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOw0KICAgaWYgKGRvY3VtZW50Lk1BWF91c2VkICE9IFwnLFwnKSBkb2N1bWVudC53cml0ZSAoXCImYW1wO2V4Y2x1ZGU9XCIgKyBkb2N1bWVudC5NQVhfdXNlZCk7DQogICBkb2N1bWVudC53cml0ZSAoZG9jdW1lbnQuY2hhcnNldCA/IFwnJmFtcDtjaGFyc2V0PVwnK2RvY3VtZW50LmNoYXJzZXQgOiAoZG9jdW1lbnQuY2hhcmFjdGVyU2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcmFjdGVyU2V0IDogXCdcJykpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDtsb2M9XCIgKyBlc2NhcGUod2luZG93LmxvY2F0aW9uKSk7DQogICBpZiAoZG9jdW1lbnQucmVmZXJyZXIpIGRvY3VtZW50LndyaXRlIChcIiZhbXA7cmVmZXJlcj1cIiArIGVzY2FwZShkb2N1bWVudC5yZWZlcnJlcikpOw0KICAgaWYgKGRvY3VtZW50LmNvbnRleHQpIGRvY3VtZW50LndyaXRlIChcIiZjb250ZXh0PVwiICsgZXNjYXBlKGRvY3VtZW50LmNvbnRleHQpKTsNCiAgIGlmIChkb2N1bWVudC5tbW1fZm8pIGRvY3VtZW50LndyaXRlIChcIiZhbXA7bW1tX2ZvPTFcIik7DQogICBkb2N1bWVudC53cml0ZSAoXCJcJz48XFwvc2NyXCIrXCJpcHQ+XCIpOw0KLy9dXT4tLT48L3NjcmlwdD48bm9zY3JpcHQ+PGEgaHJlZj1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvY2sucGhwP249YTdmOTg4ZTAmY2I9SU5TRVJUX1JBTkRPTV9OVU1CRVJfSEVSRVwnIHRhcmdldD1cJ190b3BcJz48aW1nIHNyYz1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYXZ3LnBocD96b25laWQ9ODM4OTYmY2I9SU5TRVJUX1JBTkRPTV9OVU1CRVJfSEVSRSZuPWE3Zjk4OGUwXCcgYm9yZGVyPVwnMFwnIGFsdD1cJ1wnIC8+PC9hPjwvbm9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fYWRfMjAwX2ltYWdlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjAwX3VybDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkXzI1MF9hZHNlbnNlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL0FzTG9uZ0FzV2VCb3RoLTI1MHgyNTAuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly9zbWFsbGV5b25saW5lc3RvcmUuY29tL2FzbG9uZ2Fzd2Vib3Roc2hhbGxsaXZlLmFzcHg8L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X2Fkc2Vuc2U8L3N0cm9uZz4gLSA8IS0tLyogT3BlblggSmF2YXNjcmlwdCBUYWcgdjIuOC41IChSaWNoIE1lZGlhIC0gT3BlblgpICovLS0+Cgo8IS0tLyoKICAqIFRoZSBiYWNrdXAgaW1hZ2Ugc2VjdGlvbiBvZiB0aGlzIHRhZyBoYXMgYmVlbiBnZW5lcmF0ZWQgZm9yIHVzZSBvbiBhCiAgKiBub24tU1NMIHBhZ2UuIElmIHRoaXMgdGFnIGlzIHRvIGJlIHBsYWNlZCBvbiBhbiBTU0wgcGFnZSwgY2hhbmdlIHRoZQogICogICBcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvLi4uXCcKICAqIHRvCiAgKiAgIFwnaHR0cHM6Ly9kMS5vcGVueC5vcmcvLi4uXCcKICAqCiAgKiBUaGlzIG5vc2NyaXB0IHNlY3Rpb24gb2YgdGhpcyB0YWcgb25seSBzaG93cyBpbWFnZSBiYW5uZXJzLiBUaGVyZQogICogaXMgbm8gd2lkdGggb3IgaGVpZ2h0IGluIHRoZXNlIGJhbm5lcnMsIHNvIGlmIHlvdSB3YW50IHRoZXNlIHRhZ3MgdG8KICAqIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgYWQgYmVmb3JlIGl0IHNob3dzLCB5b3Ugd2lsbCBuZWVkIHRvIGFkZCB0aGlzCiAgKiBpbmZvcm1hdGlvbiB0byB0aGUgPGltZz4gdGFnLgogICoKICAqIElmIHlvdSBkbyBub3Qgd2FudCB0byBkZWFsIHdpdGggdGhlIGludHJpY2l0aWVzIG9mIHRoZSBub3NjcmlwdAogICogc2VjdGlvbiwgZGVsZXRlIHRoZSB0YWcgKGZyb20gPG5vc2NyaXB0Pi4uLiB0byA8L25vc2NyaXB0PikuIE9uCiAgKiBhdmVyYWdlLCB0aGUgbm9zY3JpcHQgdGFnIGlzIGNhbGxlZCBmcm9tIGxlc3MgdGhhbiAxJSBvZiBpbnRlcm5ldAogICogdXNlcnMuCiAgKi8tLT4KCjxzY3JpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPjwhLS0vLzwhW0NEQVRBWwogICBkb2N1bWVudC5NQVhfY3QwID1cJ3tjbGlja3VybH1cJzsKCiAgIHZhciBtM191ID0gKGxvY2F0aW9uLnByb3RvY29sPT1cJ2h0dHBzOlwnP1wnaHR0cHM6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnOlwnaHR0cDovL2QxLm9wZW54Lm9yZy9hanMucGhwXCcpOwogICB2YXIgbTNfciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo5OTk5OTk5OTk5OSk7CiAgIGlmICghZG9jdW1lbnQuTUFYX3VzZWQpIGRvY3VtZW50Lk1BWF91c2VkID0gXCcsXCc7CiAgIGRvY3VtZW50LndyaXRlICgiPHNjciIrImlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCcgc3JjPVwnIittM191KTsKICAgZG9jdW1lbnQud3JpdGUgKCI/em9uZWlkPTExODE0OSIpOwogICBkb2N1bWVudC53cml0ZSAoXCcmYW1wO2NiPVwnICsgbTNfcik7CiAgIGlmIChkb2N1bWVudC5NQVhfdXNlZCAhPSBcJyxcJykgZG9jdW1lbnQud3JpdGUgKCImYW1wO2V4Y2x1ZGU9IiArIGRvY3VtZW50Lk1BWF91c2VkKTsKICAgZG9jdW1lbnQud3JpdGUgKGRvY3VtZW50LmNoYXJzZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyc2V0IDogKGRvY3VtZW50LmNoYXJhY3RlclNldCA/IFwnJmFtcDtjaGFyc2V0PVwnK2RvY3VtZW50LmNoYXJhY3RlclNldCA6IFwnXCcpKTsKICAgZG9jdW1lbnQud3JpdGUgKCImYW1wO2xvYz0iICsgZXNjYXBlKHdpbmRvdy5sb2NhdGlvbikpOwogICBpZiAoZG9jdW1lbnQucmVmZXJyZXIpIGRvY3VtZW50LndyaXRlICgiJmFtcDtyZWZlcmVyPSIgKyBlc2NhcGUoZG9jdW1lbnQucmVmZXJyZXIpKTsKICAgaWYgKGRvY3VtZW50LmNvbnRleHQpIGRvY3VtZW50LndyaXRlICgiJmNvbnRleHQ9IiArIGVzY2FwZShkb2N1bWVudC5jb250ZXh0KSk7CiAgIGlmICgodHlwZW9mKGRvY3VtZW50Lk1BWF9jdDApICE9IFwndW5kZWZpbmVkXCcpICYmIChkb2N1bWVudC5NQVhfY3QwLnN1YnN0cmluZygwLDQpID09IFwnaHR0cFwnKSkgewogICAgICAgZG9jdW1lbnQud3JpdGUgKCImYW1wO2N0MD0iICsgZXNjYXBlKGRvY3VtZW50Lk1BWF9jdDApKTsKICAgfQogICBpZiAoZG9jdW1lbnQubW1tX2ZvKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7bW1tX2ZvPTEiKTsKICAgZG9jdW1lbnQud3JpdGUgKCJcJz48L3NjciIrImlwdD4iKTsKLy9dXT4tLT48L3NjcmlwdD48bm9zY3JpcHQ+PGEgaHJlZj1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvY2sucGhwP249YTU0ZWFmZmEmY2I9e3JhbmRvbX1cJyB0YXJnZXQ9XCdfYmxhbmtcJz48aW1nIHNyYz1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYXZ3LnBocD96b25laWQ9MTE4MTQ5JmNiPXtyYW5kb219Jm49YTU0ZWFmZmEmY3QwPXtjbGlja3VybH1cJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD48L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X2Rpc2FibGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2NvbnRlbnRfaW1hZ2U8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy00Njh4NjAtMi5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzE8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvTmV3bHl3ZWRLaXQtMTI1eDEyNS5wbmc8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8yPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL1dvcmtib29rcy0xMjV4MTI1LnBuZzwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzM8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvRW1icmFjZS0xMjV4MTI1LnBuZzwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzQ8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvUFlGLTEyNXgxMjUuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtNC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV82PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS00LmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX21wdV9hZHNlbnNlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfbXB1X2Rpc2FibGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX21wdV9pbWFnZTwvc3Ryb25nPiAtIGh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9ETkEtMzAwWDI1MC5qcGc8L2xpPjxsaT48c3Ryb25nPndvb19hZF9tcHVfdXJsPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vZG5hb2ZyZWxhdGlvbnNoaXBzc2VyaWVzb25kdmQuYXNweDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9hZHNlbnNlPC9zdHJvbmc+IC0gPCEtLS8qIE9wZW5YIEphdmFzY3JpcHQgVGFnIHYyLjguNSAoUmljaCBNZWRpYSAtIE9wZW5YKSAqLy0tPg0KDQo8IS0tLyoNCiAgKiBUaGUgYmFja3VwIGltYWdlIHNlY3Rpb24gb2YgdGhpcyB0YWcgaGFzIGJlZW4gZ2VuZXJhdGVkIGZvciB1c2Ugb24gYQ0KICAqIG5vbi1TU0wgcGFnZS4gSWYgdGhpcyB0YWcgaXMgdG8gYmUgcGxhY2VkIG9uIGFuIFNTTCBwYWdlLCBjaGFuZ2UgdGhlDQogICogICBcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvLi4uXCcNCiAgKiB0bw0KICAqICAgXCdodHRwczovL2QxLm9wZW54Lm9yZy8uLi5cJw0KICAqDQogICogVGhpcyBub3NjcmlwdCBzZWN0aW9uIG9mIHRoaXMgdGFnIG9ubHkgc2hvd3MgaW1hZ2UgYmFubmVycy4gVGhlcmUNCiAgKiBpcyBubyB3aWR0aCBvciBoZWlnaHQgaW4gdGhlc2UgYmFubmVycywgc28gaWYgeW91IHdhbnQgdGhlc2UgdGFncyB0bw0KICAqIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgYWQgYmVmb3JlIGl0IHNob3dzLCB5b3Ugd2lsbCBuZWVkIHRvIGFkZCB0aGlzDQogICogaW5mb3JtYXRpb24gdG8gdGhlIDxpbWc+IHRhZy4NCiAgKg0KICAqIElmIHlvdSBkbyBub3Qgd2FudCB0byBkZWFsIHdpdGggdGhlIGludHJpY2l0aWVzIG9mIHRoZSBub3NjcmlwdA0KICAqIHNlY3Rpb24sIGRlbGV0ZSB0aGUgdGFnIChmcm9tIDxub3NjcmlwdD4uLi4gdG8gPC9ub3NjcmlwdD4pLiBPbg0KICAqIGF2ZXJhZ2UsIHRoZSBub3NjcmlwdCB0YWcgaXMgY2FsbGVkIGZyb20gbGVzcyB0aGFuIDElIG9mIGludGVybmV0DQogICogdXNlcnMuDQogICovLS0+DQoNCjxzY3JpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPjwhLS0vLzwhW0NEQVRBWw0KICAgZG9jdW1lbnQuTUFYX2N0MCA9XCd7Y2xpY2t1cmx9XCc7DQoNCiAgIHZhciBtM191ID0gKGxvY2F0aW9uLnByb3RvY29sPT1cJ2h0dHBzOlwnP1wnaHR0cHM6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnOlwnaHR0cDovL2QxLm9wZW54Lm9yZy9hanMucGhwXCcpOw0KICAgdmFyIG0zX3IgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OTkpOw0KICAgaWYgKCFkb2N1bWVudC5NQVhfdXNlZCkgZG9jdW1lbnQuTUFYX3VzZWQgPSBcJyxcJzsNCiAgIGRvY3VtZW50LndyaXRlIChcIjxzY3JcIitcImlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCcgc3JjPVwnXCIrbTNfdSk7DQogICBkb2N1bWVudC53cml0ZSAoXCI/em9uZWlkPTY0NTgyXCIpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOw0KICAgaWYgKGRvY3VtZW50Lk1BWF91c2VkICE9IFwnLFwnKSBkb2N1bWVudC53cml0ZSAoXCImYW1wO2V4Y2x1ZGU9XCIgKyBkb2N1bWVudC5NQVhfdXNlZCk7DQogICBkb2N1bWVudC53cml0ZSAoZG9jdW1lbnQuY2hhcnNldCA/IFwnJmFtcDtjaGFyc2V0PVwnK2RvY3VtZW50LmNoYXJzZXQgOiAoZG9jdW1lbnQuY2hhcmFjdGVyU2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcmFjdGVyU2V0IDogXCdcJykpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDtsb2M9XCIgKyBlc2NhcGUod2luZG93LmxvY2F0aW9uKSk7DQogICBpZiAoZG9jdW1lbnQucmVmZXJyZXIpIGRvY3VtZW50LndyaXRlIChcIiZhbXA7cmVmZXJlcj1cIiArIGVzY2FwZShkb2N1bWVudC5yZWZlcnJlcikpOw0KICAgaWYgKGRvY3VtZW50LmNvbnRleHQpIGRvY3VtZW50LndyaXRlIChcIiZjb250ZXh0PVwiICsgZXNjYXBlKGRvY3VtZW50LmNvbnRleHQpKTsNCiAgIGlmICgodHlwZW9mKGRvY3VtZW50Lk1BWF9jdDApICE9IFwndW5kZWZpbmVkXCcpICYmIChkb2N1bWVudC5NQVhfY3QwLnN1YnN0cmluZygwLDQpID09IFwnaHR0cFwnKSkgew0KICAgICAgIGRvY3VtZW50LndyaXRlIChcIiZhbXA7Y3QwPVwiICsgZXNjYXBlKGRvY3VtZW50Lk1BWF9jdDApKTsNCiAgIH0NCiAgIGlmIChkb2N1bWVudC5tbW1fZm8pIGRvY3VtZW50LndyaXRlIChcIiZhbXA7bW1tX2ZvPTFcIik7DQogICBkb2N1bWVudC53cml0ZSAoXCJcJz48L3NjclwiK1wiaXB0PlwiKTsNCi8vXV0+LS0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxhIGhyZWY9XCdodHRwOi8vZDEub3Blbngub3JnL2NrLnBocD9uPWExZGMxZDRmJmNiPXtyYW5kb219XCcgdGFyZ2V0PVwnX2JsYW5rXCc+PGltZyBzcmM9XCdodHRwOi8vZDEub3Blbngub3JnL2F2dy5waHA/em9uZWlkPTY0NTgyJmNiPXtyYW5kb219Jm49YTFkYzFkNGYmY3QwPXtjbGlja3VybH1cJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD48L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3BfZGlzYWJsZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8xPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vdGhlbmV3bHl3ZWRraXQuYXNweDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8yPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vd29ya2Jvb2tzc3R1ZHlndWlkZXMuYXNweDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8zPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vZW1icmFjZS10aGVtYXJyaWFnZXNlbWluYXJhdWRpb3Nlcmllcy5hc3B4PC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzQ8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleW9ubGluZXN0b3JlLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF81PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzY8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGRlZmF1bHQuY3NzPC9saT48bGk+PHN0cm9uZz53b29fYXJjaGl2ZV9ib3hlczwvc3Ryb25nPiAtIE9uPC9saT48bGk+PHN0cm9uZz53b29fYXJjaGl2ZV9jb250ZW50PC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2F1dGhvcjwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYm94ZWRfdGh1bWJfaGVpZ2h0PC9zdHJvbmc+IC0gMTAwPC9saT48bGk+PHN0cm9uZz53b29fYm94ZWRfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSAyMzQ8L2xpPjxsaT48c3Ryb25nPndvb19icmVhZGNydW1iczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYnV5X3RoZW1lczwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19jYXJvdXNlbF9oZWlnaHQ8L3N0cm9uZz4gLSAyOTI8L2xpPjxsaT48c3Ryb25nPndvb19jYXRuYXZfZXhjbHVkZTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9leDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9tZW51PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jb21tZW50X3Bvc3RzPC9zdHJvbmc+IC0gNTwvbGk+PGxpPjxzdHJvbmc+d29vX2NvbnRhY3Rmb3JtX2VtYWlsPC9zdHJvbmc+IC0gaW5mb0BzbWFsbGV5LmNjPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudDwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9hcmNoaXZlczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9mZWF0PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fY3NzPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fY3VzdG9tX2Zhdmljb248L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fdXBsb2FkX3RyYWNraW5nPC9zdHJvbmc+IC0gYToxOntpOjA7YTo0OntzOjQ6ImZpbGUiO3M6NjA6Ii9ob21lcGFnZXMvMjQvZDE5MjcwNzQ1MC9odGRvY3MvR29TbWFsbGV5L2ltYWdlcy9kYXRpbmcyLmpwZyI7czozOiJ1cmwiO3M6MzY6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9kYXRpbmcyLmpwZyI7czo0OiJ0eXBlIjtzOjEwOiJpbWFnZS9qcGVnIjtzOjExOiJvcHRpb25fbmFtZSI7czo1OiJJbWFnZSI7fX08L2xpPjxsaT48c3Ryb25nPndvb19lbWJlZDwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19mZWF0dXJlZF9jYXRlZ29yeTwvc3Ryb25nPiAtIEZlYXR1cmVkPC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfcG9zdHM8L3N0cm9uZz4gLSAxPC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfdGFnczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlYXRfZW50cmllczwvc3Ryb25nPiAtIDQ8L2xpPjxsaT48c3Ryb25nPndvb19mZWVkYnVybmVyX2lkPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZmVlZGJ1cm5lcl91cmw8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19mb290ZXJfY3JlZGl0czwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2Zvb3Rlcl9pbWFnZTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZyYW1ld29ya191cGRhdGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2ZyYW1ld29ya192ZXJzaW9uPC9zdHJvbmc+IC0gMi41LjM8L2xpPjxsaT48c3Ryb25nPndvb19mdWxsX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDE4MDwvbGk+PGxpPjxzdHJvbmc+d29vX2Z1bGxfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSA1NjA8L2xpPjxsaT48c3Ryb25nPndvb19nZXRfaW1hZ2VfaGVpZ2h0PC9zdHJvbmc+IC0gMTQyPC9saT48bGk+PHN0cm9uZz53b29fZ2V0X2ltYWdlX3dpZHRoPC9zdHJvbmc+IC0gMTkwPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfYXJjPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2JveGVzPC9zdHJvbmc+IC0gT248L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2NvbnRlbnQ8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfZmVhdHVyZWQ8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29faG9tZV9saW5rPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfbGlua19kZXNjPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29faG9tZV9saW5rX3RleHQ8L3N0cm9uZz4gLSBIb21lPC9saT48bGk+PHN0cm9uZz53b29faG9tZV90aHVtYl9oZWlnaHQ8L3N0cm9uZz4gLSA5MjwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSAyNDc8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9oZWlnaHQ8L3N0cm9uZz4gLSAyMTA8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9zaW5nbGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2ltYWdlX3dpZHRoPC9zdHJvbmc+IC0gNTQwPC9saT48bGk+PHN0cm9uZz53b29fbG9nbzwvc3Ryb25nPiAtIGh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9TSVRFLUhFQURFUjEucG5nPC9saT48bGk+PHN0cm9uZz53b29fbWFudWFsPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL3N1cHBvcnQvdGhlbWUtZG9jdW1lbnRhdGlvbi9nYXpldHRlLWVkaXRpb24vPC9saT48bGk+PHN0cm9uZz53b29fbmF2X2V4Y2x1ZGU8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19vcHRpb25zPC9zdHJvbmc+IC0gYToxMDc6e3M6MTQ6Indvb19hZHNfcm90YXRlIjtzOjQ6InRydWUiO3M6MTg6Indvb19hZF8yMDBfYWRzZW5zZSI7czoxMzM4OiI8IS0tLyogT3BlblggSmF2YXNjcmlwdCBUYWcgdjIuOC4yLXJjMjUgKi8tLT4NCg0KPHNjcmlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCc+PCEtLS8vPCFbQ0RBVEFbDQogICB2YXIgbTNfdSA9IChsb2NhdGlvbi5wcm90b2NvbD09XCdodHRwczpcJz9cJ2h0dHBzOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJzpcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnKTsNCiAgIHZhciBtM19yID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OTk5KTsNCiAgIGlmICghZG9jdW1lbnQuTUFYX3VzZWQpIGRvY3VtZW50Lk1BWF91c2VkID0gXCcsXCc7DQogICBkb2N1bWVudC53cml0ZSAoXCI8c2NyXCIrXCJpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnIHNyYz1cJ1wiK20zX3UpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiP3pvbmVpZD04Mzg5NiZhbXA7dGFyZ2V0PV90b3BcIik7DQogICBkb2N1bWVudC53cml0ZSAoXCcmYW1wO2NiPVwnICsgbTNfcik7DQogICBpZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gXCcsXCcpIGRvY3VtZW50LndyaXRlIChcIiZhbXA7ZXhjbHVkZT1cIiArIGRvY3VtZW50Lk1BWF91c2VkKTsNCiAgIGRvY3VtZW50LndyaXRlIChkb2N1bWVudC5jaGFyc2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcnNldCA6IChkb2N1bWVudC5jaGFyYWN0ZXJTZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiBcJ1wnKSk7DQogICBkb2N1bWVudC53cml0ZSAoXCImYW1wO2xvYz1cIiArIGVzY2FwZSh3aW5kb3cubG9jYXRpb24pKTsNCiAgIGlmIChkb2N1bWVudC5yZWZlcnJlcikgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDtyZWZlcmVyPVwiICsgZXNjYXBlKGRvY3VtZW50LnJlZmVycmVyKSk7DQogICBpZiAoZG9jdW1lbnQuY29udGV4dCkgZG9jdW1lbnQud3JpdGUgKFwiJmNvbnRleHQ9XCIgKyBlc2NhcGUoZG9jdW1lbnQuY29udGV4dCkpOw0KICAgaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDttbW1fZm89MVwiKTsNCiAgIGRvY3VtZW50LndyaXRlIChcIlwnPjxcXC9zY3JcIitcImlwdD5cIik7DQovL11dPi0tPjwvc2NyaXB0Pjxub3NjcmlwdD48YSBocmVmPVwnaHR0cDovL2QxLm9wZW54Lm9yZy9jay5waHA/bj1hN2Y5ODhlMCZjYj1JTlNFUlRfUkFORE9NX05VTUJFUl9IRVJFXCcgdGFyZ2V0PVwnX3RvcFwnPjxpbWcgc3JjPVwnaHR0cDovL2QxLm9wZW54Lm9yZy9hdncucGhwP3pvbmVpZD04Mzg5NiZjYj1JTlNFUlRfUkFORE9NX05VTUJFUl9IRVJFJm49YTdmOTg4ZTBcJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD4iO3M6MTY6Indvb19hZF8yMDBfaW1hZ2UiO3M6MDoiIjtzOjE0OiJ3b29fYWRfMjAwX3VybCI7czowOiIiO3M6MTg6Indvb19hZF8yNTBfYWRzZW5zZSI7czowOiIiO3M6MTY6Indvb19hZF8yNTBfaW1hZ2UiO3M6NTE6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9Bc0xvbmdBc1dlQm90aC0yNTB4MjUwLmpwZyI7czoxNDoid29vX2FkXzI1MF91cmwiO3M6NTg6Imh0dHA6Ly9zbWFsbGV5b25saW5lc3RvcmUuY29tL2FzbG9uZ2Fzd2Vib3Roc2hhbGxsaXZlLmFzcHgiO3M6MjI6Indvb19hZF9jb250ZW50X2Fkc2Vuc2UiO3M6MjIwODoiPCEtLS8qIE9wZW5YIEphdmFzY3JpcHQgVGFnIHYyLjguNSAoUmljaCBNZWRpYSAtIE9wZW5YKSAqLy0tPgoKPCEtLS8qCiAgKiBUaGUgYmFja3VwIGltYWdlIHNlY3Rpb24gb2YgdGhpcyB0YWcgaGFzIGJlZW4gZ2VuZXJhdGVkIGZvciB1c2Ugb24gYQogICogbm9uLVNTTCBwYWdlLiBJZiB0aGlzIHRhZyBpcyB0byBiZSBwbGFjZWQgb24gYW4gU1NMIHBhZ2UsIGNoYW5nZSB0aGUKICAqICAgXCdodHRwOi8vZDEub3Blbngub3JnLy4uLlwnCiAgKiB0bwogICogICBcJ2h0dHBzOi8vZDEub3Blbngub3JnLy4uLlwnCiAgKgogICogVGhpcyBub3NjcmlwdCBzZWN0aW9uIG9mIHRoaXMgdGFnIG9ubHkgc2hvd3MgaW1hZ2UgYmFubmVycy4gVGhlcmUKICAqIGlzIG5vIHdpZHRoIG9yIGhlaWdodCBpbiB0aGVzZSBiYW5uZXJzLCBzbyBpZiB5b3Ugd2FudCB0aGVzZSB0YWdzIHRvCiAgKiBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGFkIGJlZm9yZSBpdCBzaG93cywgeW91IHdpbGwgbmVlZCB0byBhZGQgdGhpcwogICogaW5mb3JtYXRpb24gdG8gdGhlIDxpbWc+IHRhZy4KICAqCiAgKiBJZiB5b3UgZG8gbm90IHdhbnQgdG8gZGVhbCB3aXRoIHRoZSBpbnRyaWNpdGllcyBvZiB0aGUgbm9zY3JpcHQKICAqIHNlY3Rpb24sIGRlbGV0ZSB0aGUgdGFnIChmcm9tIDxub3NjcmlwdD4uLi4gdG8gPC9ub3NjcmlwdD4pLiBPbgogICogYXZlcmFnZSwgdGhlIG5vc2NyaXB0IHRhZyBpcyBjYWxsZWQgZnJvbSBsZXNzIHRoYW4gMSUgb2YgaW50ZXJuZXQKICAqIHVzZXJzLgogICovLS0+Cgo8c2NyaXB0IHR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJz48IS0tLy88IVtDREFUQVsKICAgZG9jdW1lbnQuTUFYX2N0MCA9XCd7Y2xpY2t1cmx9XCc7CgogICB2YXIgbTNfdSA9IChsb2NhdGlvbi5wcm90b2NvbD09XCdodHRwczpcJz9cJ2h0dHBzOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJzpcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnKTsKICAgdmFyIG0zX3IgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OTkpOwogICBpZiAoIWRvY3VtZW50Lk1BWF91c2VkKSBkb2N1bWVudC5NQVhfdXNlZCA9IFwnLFwnOwogICBkb2N1bWVudC53cml0ZSAoIjxzY3IiKyJpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnIHNyYz1cJyIrbTNfdSk7CiAgIGRvY3VtZW50LndyaXRlICgiP3pvbmVpZD0xMTgxNDkiKTsKICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOwogICBpZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gXCcsXCcpIGRvY3VtZW50LndyaXRlICgiJmFtcDtleGNsdWRlPSIgKyBkb2N1bWVudC5NQVhfdXNlZCk7CiAgIGRvY3VtZW50LndyaXRlIChkb2N1bWVudC5jaGFyc2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcnNldCA6IChkb2N1bWVudC5jaGFyYWN0ZXJTZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiBcJ1wnKSk7CiAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtsb2M9IiArIGVzY2FwZSh3aW5kb3cubG9jYXRpb24pKTsKICAgaWYgKGRvY3VtZW50LnJlZmVycmVyKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7cmVmZXJlcj0iICsgZXNjYXBlKGRvY3VtZW50LnJlZmVycmVyKSk7CiAgIGlmIChkb2N1bWVudC5jb250ZXh0KSBkb2N1bWVudC53cml0ZSAoIiZjb250ZXh0PSIgKyBlc2NhcGUoZG9jdW1lbnQuY29udGV4dCkpOwogICBpZiAoKHR5cGVvZihkb2N1bWVudC5NQVhfY3QwKSAhPSBcJ3VuZGVmaW5lZFwnKSAmJiAoZG9jdW1lbnQuTUFYX2N0MC5zdWJzdHJpbmcoMCw0KSA9PSBcJ2h0dHBcJykpIHsKICAgICAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtjdDA9IiArIGVzY2FwZShkb2N1bWVudC5NQVhfY3QwKSk7CiAgIH0KICAgaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKCImYW1wO21tbV9mbz0xIik7CiAgIGRvY3VtZW50LndyaXRlICgiXCc+PC9zY3IiKyJpcHQ+Iik7Ci8vXV0+LS0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxhIGhyZWY9XCdodHRwOi8vZDEub3Blbngub3JnL2NrLnBocD9uPWE1NGVhZmZhJmNiPXtyYW5kb219XCcgdGFyZ2V0PVwnX2JsYW5rXCc+PGltZyBzcmM9XCdodHRwOi8vZDEub3Blbngub3JnL2F2dy5waHA/em9uZWlkPTExODE0OSZjYj17cmFuZG9tfSZuPWE1NGVhZmZhJmN0MD17Y2xpY2t1cmx9XCcgYm9yZGVyPVwnMFwnIGFsdD1cJ1wnIC8+PC9hPjwvbm9zY3JpcHQ+IjtzOjIyOiJ3b29fYWRfY29udGVudF9kaXNhYmxlIjtzOjU6ImZhbHNlIjtzOjIwOiJ3b29fYWRfY29udGVudF9pbWFnZSI7czo1MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmIjtzOjE4OiJ3b29fYWRfY29udGVudF91cmwiO3M6MjQ6Imh0dHA6Ly93d3cud29vdGhlbWVzLmNvbSI7czoxNDoid29vX2FkX2ltYWdlXzEiO3M6NDg6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9OZXdseXdlZEtpdC0xMjV4MTI1LnBuZyI7czoxNDoid29vX2FkX2ltYWdlXzIiO3M6NDY6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9Xb3JrYm9va3MtMTI1eDEyNS5wbmciO3M6MTQ6Indvb19hZF9pbWFnZV8zIjtzOjQ0OiJodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvRW1icmFjZS0xMjV4MTI1LnBuZyI7czoxNDoid29vX2FkX2ltYWdlXzQiO3M6NDA6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9QWUYtMTI1eDEyNS5qcGciO3M6MTQ6Indvb19hZF9pbWFnZV81IjtzOjUyOiJodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTQuZ2lmIjtzOjE0OiJ3b29fYWRfaW1hZ2VfNiI7czo1MjoiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS00LmdpZiI7czoxODoid29vX2FkX21wdV9hZHNlbnNlIjtzOjA6IiI7czoxODoid29vX2FkX21wdV9kaXNhYmxlIjtzOjU6ImZhbHNlIjtzOjE2OiJ3b29fYWRfbXB1X2ltYWdlIjtzOjQwOiJodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvRE5BLTMwMFgyNTAuanBnIjtzOjE0OiJ3b29fYWRfbXB1X3VybCI7czo2NDoiaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vZG5hb2ZyZWxhdGlvbnNoaXBzc2VyaWVzb25kdmQuYXNweCI7czoxODoid29vX2FkX3RvcF9hZHNlbnNlIjtzOjIyMDY6IjwhLS0vKiBPcGVuWCBKYXZhc2NyaXB0IFRhZyB2Mi44LjUgKFJpY2ggTWVkaWEgLSBPcGVuWCkgKi8tLT4KCjwhLS0vKgogICogVGhlIGJhY2t1cCBpbWFnZSBzZWN0aW9uIG9mIHRoaXMgdGFnIGhhcyBiZWVuIGdlbmVyYXRlZCBmb3IgdXNlIG9uIGEKICAqIG5vbi1TU0wgcGFnZS4gSWYgdGhpcyB0YWcgaXMgdG8gYmUgcGxhY2VkIG9uIGFuIFNTTCBwYWdlLCBjaGFuZ2UgdGhlCiAgKiAgIFwnaHR0cDovL2QxLm9wZW54Lm9yZy8uLi5cJwogICogdG8KICAqICAgXCdodHRwczovL2QxLm9wZW54Lm9yZy8uLi5cJwogICoKICAqIFRoaXMgbm9zY3JpcHQgc2VjdGlvbiBvZiB0aGlzIHRhZyBvbmx5IHNob3dzIGltYWdlIGJhbm5lcnMuIFRoZXJlCiAgKiBpcyBubyB3aWR0aCBvciBoZWlnaHQgaW4gdGhlc2UgYmFubmVycywgc28gaWYgeW91IHdhbnQgdGhlc2UgdGFncyB0bwogICogYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBhZCBiZWZvcmUgaXQgc2hvd3MsIHlvdSB3aWxsIG5lZWQgdG8gYWRkIHRoaXMKICAqIGluZm9ybWF0aW9uIHRvIHRoZSA8aW1nPiB0YWcuCiAgKgogICogSWYgeW91IGRvIG5vdCB3YW50IHRvIGRlYWwgd2l0aCB0aGUgaW50cmljaXRpZXMgb2YgdGhlIG5vc2NyaXB0CiAgKiBzZWN0aW9uLCBkZWxldGUgdGhlIHRhZyAoZnJvbSA8bm9zY3JpcHQ+Li4uIHRvIDwvbm9zY3JpcHQ+KS4gT24KICAqIGF2ZXJhZ2UsIHRoZSBub3NjcmlwdCB0YWcgaXMgY2FsbGVkIGZyb20gbGVzcyB0aGFuIDElIG9mIGludGVybmV0CiAgKiB1c2Vycy4KICAqLy0tPgoKPHNjcmlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCc+PCEtLS8vPCFbQ0RBVEFbCiAgIGRvY3VtZW50Lk1BWF9jdDAgPVwne2NsaWNrdXJsfVwnOwoKICAgdmFyIG0zX3UgPSAobG9jYXRpb24ucHJvdG9jb2w9PVwnaHR0cHM6XCc/XCdodHRwczovL2QxLm9wZW54Lm9yZy9hanMucGhwXCc6XCdodHRwOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJyk7CiAgIHZhciBtM19yID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OTk5KTsKICAgaWYgKCFkb2N1bWVudC5NQVhfdXNlZCkgZG9jdW1lbnQuTUFYX3VzZWQgPSBcJyxcJzsKICAgZG9jdW1lbnQud3JpdGUgKCI8c2NyIisiaXB0IHR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJyBzcmM9XCciK20zX3UpOwogICBkb2N1bWVudC53cml0ZSAoIj96b25laWQ9NjQ1ODIiKTsKICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOwogICBpZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gXCcsXCcpIGRvY3VtZW50LndyaXRlICgiJmFtcDtleGNsdWRlPSIgKyBkb2N1bWVudC5NQVhfdXNlZCk7CiAgIGRvY3VtZW50LndyaXRlIChkb2N1bWVudC5jaGFyc2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcnNldCA6IChkb2N1bWVudC5jaGFyYWN0ZXJTZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiBcJ1wnKSk7CiAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtsb2M9IiArIGVzY2FwZSh3aW5kb3cubG9jYXRpb24pKTsKICAgaWYgKGRvY3VtZW50LnJlZmVycmVyKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7cmVmZXJlcj0iICsgZXNjYXBlKGRvY3VtZW50LnJlZmVycmVyKSk7CiAgIGlmIChkb2N1bWVudC5jb250ZXh0KSBkb2N1bWVudC53cml0ZSAoIiZjb250ZXh0PSIgKyBlc2NhcGUoZG9jdW1lbnQuY29udGV4dCkpOwogICBpZiAoKHR5cGVvZihkb2N1bWVudC5NQVhfY3QwKSAhPSBcJ3VuZGVmaW5lZFwnKSAmJiAoZG9jdW1lbnQuTUFYX2N0MC5zdWJzdHJpbmcoMCw0KSA9PSBcJ2h0dHBcJykpIHsKICAgICAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtjdDA9IiArIGVzY2FwZShkb2N1bWVudC5NQVhfY3QwKSk7CiAgIH0KICAgaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKCImYW1wO21tbV9mbz0xIik7CiAgIGRvY3VtZW50LndyaXRlICgiXCc+PC9zY3IiKyJpcHQ+Iik7Ci8vXV0+LS0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxhIGhyZWY9XCdodHRwOi8vZDEub3Blbngub3JnL2NrLnBocD9uPWExZGMxZDRmJmNiPXtyYW5kb219XCcgdGFyZ2V0PVwnX2JsYW5rXCc+PGltZyBzcmM9XCdodHRwOi8vZDEub3Blbngub3JnL2F2dy5waHA/em9uZWlkPTY0NTgyJmNiPXtyYW5kb219Jm49YTFkYzFkNGYmY3QwPXtjbGlja3VybH1cJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD4iO3M6MTg6Indvb19hZF90b3BfZGlzYWJsZSI7czo1OiJmYWxzZSI7czoxNjoid29vX2FkX3RvcF9pbWFnZSI7czo1MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmIjtzOjE0OiJ3b29fYWRfdG9wX3VybCI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjEyOiJ3b29fYWRfdXJsXzEiO3M6NDk6Imh0dHA6Ly9zbWFsbGV5b25saW5lc3RvcmUuY29tL3RoZW5ld2x5d2Vka2l0LmFzcHgiO3M6MTI6Indvb19hZF91cmxfMiI7czo1NToiaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vd29ya2Jvb2tzc3R1ZHlndWlkZXMuYXNweCI7czoxMjoid29vX2FkX3VybF8zIjtzOjcyOiJodHRwOi8vc21hbGxleW9ubGluZXN0b3JlLmNvbS9lbWJyYWNlLXRoZW1hcnJpYWdlc2VtaW5hcmF1ZGlvc2VyaWVzLmFzcHgiO3M6MTI6Indvb19hZF91cmxfNCI7czoyOToiaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20iO3M6MTI6Indvb19hZF91cmxfNSI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjEyOiJ3b29fYWRfdXJsXzYiO3M6MjQ6Imh0dHA6Ly93d3cud29vdGhlbWVzLmNvbSI7czoxODoid29vX2FsdF9zdHlsZXNoZWV0IjtzOjExOiJza3libHVlLmNzcyI7czoxNzoid29vX2FyY2hpdmVfYm94ZXMiO3M6MjoiT24iO3M6MTk6Indvb19hcmNoaXZlX2NvbnRlbnQiO3M6NDoidHJ1ZSI7czoxMDoid29vX2F1dGhvciI7czo0OiJ0cnVlIjtzOjEyOiJ3b29fYXV0b19pbWciO3M6NToiZmFsc2UiO3M6MjI6Indvb19ib3hlZF90aHVtYl9oZWlnaHQiO3M6MzoiMTAwIjtzOjIxOiJ3b29fYm94ZWRfdGh1bWJfd2lkdGgiO3M6MzoiMjM0IjtzOjE1OiJ3b29fYnJlYWRjcnVtYnMiO3M6NToiZmFsc2UiO3M6MTQ6Indvb19idXlfdGhlbWVzIjtzOjQ6InRydWUiO3M6MTk6Indvb19jYXJvdXNlbF9oZWlnaHQiO3M6MzoiMjkyIjtzOjE4OiJ3b29fY2F0bmF2X2V4Y2x1ZGUiO3M6MDoiIjtzOjEwOiJ3b29fY2F0X2V4IjtzOjA6IiI7czoxMjoid29vX2NhdF9tZW51IjtzOjU6ImZhbHNlIjtzOjE3OiJ3b29fY29tbWVudF9wb3N0cyI7czoxOiI1IjtzOjIxOiJ3b29fY29udGFjdGZvcm1fZW1haWwiO3M6MTU6ImluZm9Ac21hbGxleS5jYyI7czoxMToid29vX2NvbnRlbnQiO3M6NToiZmFsc2UiO3M6MjA6Indvb19jb250ZW50X2FyY2hpdmVzIjtzOjU6ImZhbHNlIjtzOjE2OiJ3b29fY29udGVudF9mZWF0IjtzOjU6ImZhbHNlIjtzOjE0OiJ3b29fY3VzdG9tX2NzcyI7czowOiIiO3M6MTg6Indvb19jdXN0b21fZmF2aWNvbiI7czowOiIiO3M6MjY6Indvb19jdXN0b21fdXBsb2FkX3RyYWNraW5nIjthOjE6e2k6MDthOjQ6e3M6NDoiZmlsZSI7czo2MDoiL2hvbWVwYWdlcy8yNC9kMTkyNzA3NDUwL2h0ZG9jcy9Hb1NtYWxsZXkvaW1hZ2VzL2RhdGluZzIuanBnIjtzOjM6InVybCI7czozNjoiaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL2RhdGluZzIuanBnIjtzOjQ6InR5cGUiO3M6MTA6ImltYWdlL2pwZWciO3M6MTE6Im9wdGlvbl9uYW1lIjtzOjU6IkltYWdlIjt9fXM6OToid29vX2VtYmVkIjtzOjQ6InRydWUiO3M6MjE6Indvb19mZWF0dXJlZF9jYXRlZ29yeSI7czo4OiJGZWF0dXJlZCI7czoxODoid29vX2ZlYXR1cmVkX3Bvc3RzIjtzOjE6IjEiO3M6MTc6Indvb19mZWF0dXJlZF90YWdzIjtzOjA6IiI7czoxNjoid29vX2ZlYXRfZW50cmllcyI7czoxOiI2IjtzOjE3OiJ3b29fZmVlZGJ1cm5lcl9pZCI7czowOiIiO3M6MTg6Indvb19mZWVkYnVybmVyX3VybCI7czowOiIiO3M6MTg6Indvb19mb290ZXJfY3JlZGl0cyI7czowOiIiO3M6MTY6Indvb19mb290ZXJfaW1hZ2UiO3M6MDoiIjtzOjIwOiJ3b29fZnJhbWV3b3JrX3VwZGF0ZSI7czo1OiJmYWxzZSI7czoyMToid29vX2Z1bGxfdGh1bWJfaGVpZ2h0IjtzOjM6IjE4MCI7czoyMDoid29vX2Z1bGxfdGh1bWJfd2lkdGgiO3M6MzoiNTYwIjtzOjIwOiJ3b29fZ2V0X2ltYWdlX2hlaWdodCI7czozOiIxNDIiO3M6MTk6Indvb19nZXRfaW1hZ2Vfd2lkdGgiO3M6MzoiMTkwIjtzOjIwOiJ3b29fZ29vZ2xlX2FuYWx5dGljcyI7czowOiIiO3M6ODoid29vX2hvbWUiO3M6NToiZmFsc2UiO3M6MTI6Indvb19ob21lX2FyYyI7czo1OiJmYWxzZSI7czoxNDoid29vX2hvbWVfYm94ZXMiO3M6MjoiT24iO3M6MTY6Indvb19ob21lX2NvbnRlbnQiO3M6NToiZmFsc2UiO3M6MTc6Indvb19ob21lX2ZlYXR1cmVkIjtzOjQ6InRydWUiO3M6MTM6Indvb19ob21lX2xpbmsiO3M6NDoidHJ1ZSI7czoxODoid29vX2hvbWVfbGlua19kZXNjIjtzOjA6IiI7czoxODoid29vX2hvbWVfbGlua190ZXh0IjtzOjQ6IkhvbWUiO3M6MjE6Indvb19ob21lX3RodW1iX2hlaWdodCI7czoyOiI5MiI7czoyMDoid29vX2hvbWVfdGh1bWJfd2lkdGgiO3M6MzoiMjQ3IjtzOjE2OiJ3b29faW1hZ2VfaGVpZ2h0IjtzOjM6IjIxMCI7czoxNjoid29vX2ltYWdlX3NpbmdsZSI7czo1OiJmYWxzZSI7czoxNToid29vX2ltYWdlX3dpZHRoIjtzOjM6IjU0MCI7czo4OiJ3b29fbG9nbyI7czo0MToiaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL1NJVEUtSEVBREVSMS5wbmciO3M6MTU6Indvb19uYXZfZXhjbHVkZSI7czowOiIiO3M6MTc6Indvb19wb3B1bGFyX3Bvc3RzIjtzOjE6IjUiO3M6MTA6Indvb19yZXNpemUiO3M6NDoidHJ1ZSI7czoxNjoid29vX3Nob3duX3NsaWRlcyI7YToxOntpOjA7czozOiIyNDIiO31zOjE3OiJ3b29fc2hvd19jYXJvdXNlbCI7czo0OiJ0cnVlIjtzOjE2OiJ3b29fc2hvd19vcHRpb25zIjtzOjU6ImZhbHNlIjtzOjIzOiJ3b29fc2hvd190YWxraW5nX3BvaW50cyI7czo1OiJmYWxzZSI7czoxNDoid29vX3Nob3dfdmlkZW8iO3M6NDoidHJ1ZSI7czoxNzoid29vX3NpbmdsZV9oZWlnaHQiO3M6MzoiMTIwIjtzOjE2OiJ3b29fc2luZ2xlX3dpZHRoIjtzOjM6IjE4MCI7czoxNjoid29vX3NsaWRlcl9jZmFkZSI7czo1OiJmYWxzZSI7czoyNDoid29vX3NsaWRlcl9jb250ZW50X3NwZWVkIjtzOjQ6IjEwMDAiO3M6MTY6Indvb19zbGlkZXJfc2ZhZGUiO3M6NToiZmFsc2UiO3M6MTY6Indvb19zbGlkZXJfc3BlZWQiO3M6MzoiNTAwIjtzOjE4OiJ3b29fc2xpZGVyX3RpbWVvdXQiO3M6NDoiNjAwMCI7czo4OiJ3b29fdGFicyI7czo1OiJmYWxzZSI7czoyMzoid29vX3RhbGtpbmdfcG9pbnRzX3RhZ3MiO3M6MDoiIjtzOjEzOiJ3b29fdGhlbWVuYW1lIjtzOjg6IkJ1c3kgQmVlIjtzOjI1OiJ3b29fdGhlbWVfdmVyc2lvbl9jaGVja2VyIjtzOjQ6InRydWUiO3M6MTY6Indvb190aHVtYl9oZWlnaHQiO3M6MjoiODgiO3M6MTU6Indvb190aHVtYl93aWR0aCI7czoyOiI4OCI7czoxMToid29vX3R3aXR0ZXIiO3M6MDoiIjtzOjExOiJ3b29fdXBsb2FkcyI7YTo4OntpOjA7czo4MDoiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMTAtU21hbGxleU9ubGluZS1NYWluLUhlYWRlci5qcGciO2k6MTtzOjc5OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy85LVNtYWxsZXlPbmxpbmUtTWFpbi1IZWFkZXIuanBnIjtpOjI7czo3OToiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvOC1TbWFsbGV5T25saW5lLU1haW4tSGVhZGVyLmpwZyI7aTozO3M6Nzk6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzctU21hbGxleU9ubGluZS1NYWluLUhlYWRlci5qcGciO2k6NDtzOjcxOiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy82LXN0b3JlLWhlYWRlci1sb2dvLnBuZyI7aTo1O3M6NzQ6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzUtU21hbGxleS1sb2dvXzJjX21haW4uanBnIjtpOjY7czo3NDoiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNC1TbWFsbGV5LWxvZ29fMmNfbWFpbi5qcGciO2k6NztzOjU4OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy8zLWxvZ28ucG5nIjt9czoyMjoid29vX3ZpZGVvX2Jyb3dzZXJfaW5pdCI7czoxOiIzIjtzOjE4OiJ3b29fdmlkZW9fY2F0ZWdvcnkiO3M6MTQ6IlZpZGVvIFBvZGNhc3RzIjtzOjE0OiJ3b29fdmlkZW9fdGFncyI7czowOiIiO308L2xpPjxsaT48c3Ryb25nPndvb19wb3B1bGFyX3Bvc3RzPC9zdHJvbmc+IC0gNTwvbGk+PGxpPjxzdHJvbmc+d29vX3Jlc2l6ZTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19zaG9ydG5hbWU8L3N0cm9uZz4gLSB3b288L2xpPjxsaT48c3Ryb25nPndvb19zaG93bl9zbGlkZXM8L3N0cm9uZz4gLSBhOjE6e2k6MDtzOjM6IjI0MiI7fTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3dfY2Fyb3VzZWw8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fc2hvd19vcHRpb25zPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19zaG93X3RhbGtpbmdfcG9pbnRzPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19zaG93X3ZpZGVvPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3NpbmdsZV9oZWlnaHQ8L3N0cm9uZz4gLSAxMjA8L2xpPjxsaT48c3Ryb25nPndvb19zaW5nbGVfd2lkdGg8L3N0cm9uZz4gLSAxODA8L2xpPjxsaT48c3Ryb25nPndvb19zbGlkZXJfY2ZhZGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3NsaWRlcl9jb250ZW50X3NwZWVkPC9zdHJvbmc+IC0gMTAwMDwvbGk+PGxpPjxzdHJvbmc+d29vX3NsaWRlcl9zZmFkZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fc2xpZGVyX3NwZWVkPC9zdHJvbmc+IC0gNTAwPC9saT48bGk+PHN0cm9uZz53b29fc2xpZGVyX3RpbWVvdXQ8L3N0cm9uZz4gLSA2MDAwPC9saT48bGk+PHN0cm9uZz53b29fdGFiczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fdGFsa2luZ19wb2ludHNfdGFnczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIEdhemV0dGU8L2xpPjxsaT48c3Ryb25nPndvb190aGVtZV92ZXJzaW9uX2NoZWNrZXI8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fdGh1bWJfaGVpZ2h0PC9zdHJvbmc+IC0gODg8L2xpPjxsaT48c3Ryb25nPndvb190aHVtYl93aWR0aDwvc3Ryb25nPiAtIDg4PC9saT48bGk+PHN0cm9uZz53b29fdHdpdHRlcjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX3VwbG9hZHM8L3N0cm9uZz4gLSBhOjg6e2k6MDtzOjgwOiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy8xMC1TbWFsbGV5T25saW5lLU1haW4tSGVhZGVyLmpwZyI7aToxO3M6Nzk6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzktU21hbGxleU9ubGluZS1NYWluLUhlYWRlci5qcGciO2k6MjtzOjc5OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy84LVNtYWxsZXlPbmxpbmUtTWFpbi1IZWFkZXIuanBnIjtpOjM7czo3OToiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNy1TbWFsbGV5T25saW5lLU1haW4tSGVhZGVyLmpwZyI7aTo0O3M6NzE6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzYtc3RvcmUtaGVhZGVyLWxvZ28ucG5nIjtpOjU7czo3NDoiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNS1TbWFsbGV5LWxvZ29fMmNfbWFpbi5qcGciO2k6NjtzOjc0OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy80LVNtYWxsZXktbG9nb18yY19tYWluLmpwZyI7aTo3O3M6NTg6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzMtbG9nby5wbmciO308L2xpPjxsaT48c3Ryb25nPndvb192aWRlb19icm93c2VyX2luaXQ8L3N0cm9uZz4gLSAzPC9saT48bGk+PHN0cm9uZz53b29fdmlkZW9fY2F0ZWdvcnk8L3N0cm9uZz4gLSBWaWRlbyBQb2RjYXN0czwvbGk+PGxpPjxzdHJvbmc+d29vX3ZpZGVvX3RhZ3M8L3N0cm9uZz4gLSA8L2xpPjwvdWw+