시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 442 60 49 22.172%

문제

무어 기계는 상태에 의해서 출력이 결정되는 유한 상태 기계이다. 무어 기계는 이름은 미국의 수학자이자 컴퓨터 과학자 Edward F. Moore의 이름을 따서 지었다. 무어 기계의 상태 전이는 입력에 의해서 정해진다. 예를 들어, 입력이 "aabba"이면, 아래와 같은 무어 기계의 출력은 "PRETTY"가 된다.

위의 그림에서 동그라미는 상태를 나타내고, 화살표 위의 글자는 입력 심볼을 나타낸다. 상태 중 하나는 시작 상태로 디자인 되어져 있다. 이 상태는 출발 노드가 없는 화살표로 나타나 있다. 이 경우에 시작 상태는 1번 상태이다. 상태 N과 출력 심볼 S는 N/S로 나타낸다.

대부분 경우에 무어 기계는 사이클을 가진다. 이 문제에서는 사이클이 전혀 없는 무어 기계를 다루며, 이런 종류의 기계를 직병렬 무어 기계라고 한다.

직병렬 무어 기계의 한 출력 심볼이 지워져 있다. 기계의 출력이 주어졌을 때, 지워진 심볼을 찾는 프로그램을 작성하시오. 항상 지워진 심볼을 찾을 수 있는 것은 아니다.

예를 들어, 아래 그림과 같은 직병렬 무어 기계가 있다.

위의 그림에는 상태를 간단하게 나타내기 위해 출력 심볼만 나타나 있다. 빈 원은 출력 심볼이 지워진 상태이다. 예를 들어, 기계의 출력이 "ADC"인 경우에는, 지워진 심볼이 D임을 알 수 있다. 하지만, 출력이 "ABC" 라면, 주어진 심볼을 유일하게 결정할 수 없다. "ABD"는 이 기계에서 나올 수 없는 출력이기 때문에, 불가능한 경우이다.

직병렬 무어 기계는 직병렬 그래프로 나타낼 수 있고, 간단히 표현할 수 있다. 상태가 하나이고, 출력이 S인 무어 기계는 'S' 로 나타낸다. 상태가 하나이고, 출력 심볼이 지워진 무어 기계는 '_'로 나타낸다. 여러 개의 부분 기계 M1, M2, ..., Mk가 직렬로 연결된 무어 기계는 M1M2...Mk로 나타낸다. 또, 부분 기계가 병렬로 연결된 무어 기계는 M1|M2|...|Mk로 나타낸다. 한 무어 기계가 더 큰 무어 기계의 일부로 사용된다면, 그 부분을 괄호로 감싼다. 이 방법을 사용하면, 위의 무어 기계는 A(B|_)C로 나타낼 수 있다.

직병렬 무어 기계와 그 기계의 출력이 주어졌을 때, 지워진 심볼을 구하는 프로그램을 작성하시오. 만약, 지워진 심볼을 유일하게 결정할 수 없다면, '_'를 출력한다. 또, 기계에서 나올 수 없는 출력이 주어진 경우에는 '!'를 출력한다.

입력

첫째 줄에는 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 두 줄로 이루어져 있다. 첫째 줄에는 직병렬 무어 기계가 주어지고, 둘째 줄에는 기계의 출력이 주어진다. 출력 심볼은 알파벳 대문자로만 이루어져 있다. 무어 기계의 가장 바깥쪽 연결은 직렬이다. 또, 지워진 심볼의 개수는 하나이다. 각 줄의 길이는 100보다 작거나 같다.

출력

각 테스트 케이스마다, 지워진 심볼을 출력한다. 만약, 유일하게 결정할 수 없다면 '_'를 출력한다. 또, 입력으로 주어진 기계에서 만들 수 없는 경우에는 '!'를 출력한다.

예제 입력 1

3
A(B|_)C
ADC
A(B|D|_)C
ADC
A(B|CD(E|_)G)E
BOY

예제 출력 1

D
_
!
W3sicHJvYmxlbV9pZCI6IjMzMDAiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJiMzRcdWM1YjQgXHVhZTMwXHVhY2M0IiwiZGVzY3JpcHRpb24iOiI8cD5cdWJiMzRcdWM1YjQgXHVhZTMwXHVhY2M0XHViMjk0IFx1YzBjMVx1ZDBkY1x1YzVkMCBcdWM3NThcdWQ1NzRcdWMxMWMgXHVjZDljXHViODI1XHVjNzc0IFx1YWNiMFx1YzgxNVx1YjQxOFx1YjI5NCBcdWM3MjBcdWQ1NWMgXHVjMGMxXHVkMGRjIFx1YWUzMFx1YWNjNFx1Yzc3NFx1YjJlNC4gXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1YjI5NCBcdWM3NzRcdWI5ODRcdWM3NDAgXHViYmY4XHVhZDZkXHVjNzU4IFx1YzIxOFx1ZDU1OVx1Yzc5MFx1Yzc3NFx1Yzc5MCBcdWNlZjRcdWQ0ZThcdWQxMzAgXHVhY2ZjXHVkNTU5XHVjNzkwIEVkd2FyZCBGLiBNb29yZVx1Yzc1OCBcdWM3NzRcdWI5ODRcdWM3NDQgXHViNTMwXHVjMTFjIFx1YzljMFx1YzVjOFx1YjJlNC4gXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1Yzc1OCBcdWMwYzFcdWQwZGMgXHVjODA0XHVjNzc0XHViMjk0IFx1Yzc4NVx1YjgyNVx1YzVkMCBcdWM3NThcdWQ1NzRcdWMxMWMgXHVjODE1XHVkNTc0XHVjOWM0XHViMmU0LiBcdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWM3ODVcdWI4MjVcdWM3NzQgJnF1b3Q7YWFiYmEmcXVvdDtcdWM3NzRcdWJhNzQsIFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWM3NDAgXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1Yzc1OCBcdWNkOWNcdWI4MjVcdWM3NDAgJnF1b3Q7UFJFVFRZJnF1b3Q7XHVhYzAwIFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9tb29yZTEucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MTQ0cHg7IHdpZHRoOjQ2MXB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YzcwNFx1Yzc1OCBcdWFkZjhcdWI5YmNcdWM1ZDBcdWMxMWMgXHViM2Q5XHVhZGY4XHViNzdjXHViYmY4XHViMjk0IFx1YzBjMVx1ZDBkY1x1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWFjZTAsIFx1ZDY1NFx1YzBiNFx1ZDQ1YyBcdWM3MDRcdWM3NTggXHVhZTAwXHVjNzkwXHViMjk0IFx1Yzc4NVx1YjgyNSBcdWMyZWNcdWJjZmNcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBcdWMwYzFcdWQwZGMgXHVjOTExIFx1ZDU1OFx1YjA5OFx1YjI5NCBcdWMyZGNcdWM3OTEgXHVjMGMxXHVkMGRjXHViODVjIFx1YjUxNFx1Yzc5MFx1Yzc3OCBcdWI0MThcdWM1YjRcdWM4MzggXHVjNzg4XHViMmU0LiBcdWM3NzQgXHVjMGMxXHVkMGRjXHViMjk0IFx1Y2Q5Y1x1YmMxYyBcdWIxNzhcdWI0ZGNcdWFjMDAgXHVjNWM2XHViMjk0IFx1ZDY1NFx1YzBiNFx1ZDQ1Y1x1Yjg1YyBcdWIwOThcdWQwYzBcdWIwOTggXHVjNzg4XHViMmU0LiBcdWM3NzQgXHVhY2JkXHVjNmIwXHVjNWQwIFx1YzJkY1x1Yzc5MSBcdWMwYzFcdWQwZGNcdWIyOTQgMVx1YmM4OCBcdWMwYzFcdWQwZGNcdWM3NzRcdWIyZTQuIFx1YzBjMVx1ZDBkYyBOXHVhY2ZjIFx1Y2Q5Y1x1YjgyNSBcdWMyZWNcdWJjZmMgU1x1YjI5NCBOXC9TXHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViMzAwXHViZDgwXHViZDg0IFx1YWNiZFx1YzZiMFx1YzVkMCBcdWJiMzRcdWM1YjQgXHVhZTMwXHVhY2M0XHViMjk0IFx1YzBhY1x1Yzc3NFx1ZDA3NFx1Yzc0NCBcdWFjMDBcdWM5YzRcdWIyZTQuIFx1Yzc3NCBcdWJiMzhcdWM4MWNcdWM1ZDBcdWMxMWNcdWIyOTQgXHVjMGFjXHVjNzc0XHVkMDc0XHVjNzc0IFx1YzgwNFx1ZDYwMCBcdWM1YzZcdWIyOTQgXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1Yjk3YyBcdWIyZTRcdWI4ZThcdWJhNzAsIFx1Yzc3NFx1YjdmMCBcdWM4ODVcdWI5NThcdWM3NTggXHVhZTMwXHVhY2M0XHViOTdjIFx1YzljMVx1YmNkMVx1YjgyYyBcdWJiMzRcdWM1YjQgXHVhZTMwXHVhY2M0XHViNzdjXHVhY2UwIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjOWMxXHViY2QxXHViODJjIFx1YmIzNFx1YzViNCBcdWFlMzBcdWFjYzRcdWM3NTggXHVkNTVjIFx1Y2Q5Y1x1YjgyNSBcdWMyZWNcdWJjZmNcdWM3NzQgXHVjOWMwXHVjNmNjXHVjODM4IFx1Yzc4OFx1YjJlNC4gXHVhZTMwXHVhY2M0XHVjNzU4IFx1Y2Q5Y1x1YjgyNVx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBcdWM5YzBcdWM2Y2NcdWM5YzQgXHVjMmVjXHViY2ZjXHVjNzQ0IFx1Y2MzZVx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LiBcdWQ1NmRcdWMwYzEgXHVjOWMwXHVjNmNjXHVjOWM0IFx1YzJlY1x1YmNmY1x1Yzc0NCBcdWNjM2VcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjI5NCBcdWFjODNcdWM3NDAgXHVjNTQ0XHViMmM4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWM1NDRcdWI3OTggXHVhZGY4XHViOWJjXHVhY2ZjIFx1YWMxOVx1Yzc0MCBcdWM5YzFcdWJjZDFcdWI4MmMgXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1YWMwMCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvbW9vcmUyLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjE0MHB4OyB3aWR0aDoyNzhweFwiIFwvPjxcL3A+XHJcblxyXG48cD5cdWM3MDRcdWM3NTggXHVhZGY4XHViOWJjXHVjNWQwXHViMjk0IFx1YzBjMVx1ZDBkY1x1Yjk3YyBcdWFjMDRcdWIyZThcdWQ1NThcdWFjOGMgXHViMDk4XHVkMGMwXHViMGI0XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWNkOWNcdWI4MjUgXHVjMmVjXHViY2ZjXHViOWNjIFx1YjA5OFx1ZDBjMFx1YjA5OCBcdWM3ODhcdWIyZTQuIFx1YmU0OCBcdWM2ZDBcdWM3NDAgXHVjZDljXHViODI1IFx1YzJlY1x1YmNmY1x1Yzc3NCBcdWM5YzBcdWM2Y2NcdWM5YzQgXHVjMGMxXHVkMGRjXHVjNzc0XHViMmU0LiBcdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWFlMzBcdWFjYzRcdWM3NTggXHVjZDljXHViODI1XHVjNzc0ICZxdW90O0FEQyZxdW90O1x1Yzc3OCBcdWFjYmRcdWM2YjBcdWM1ZDBcdWIyOTQsIFx1YzljMFx1YzZjY1x1YzljNCBcdWMyZWNcdWJjZmNcdWM3NzQgRFx1Yzc4NFx1Yzc0NCBcdWM1NGMgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVkNTU4XHVjOWMwXHViOWNjLCBcdWNkOWNcdWI4MjVcdWM3NzQgJnF1b3Q7QUJDJnF1b3Q7IFx1Yjc3Y1x1YmE3NCwgXHVjOGZjXHVjNWI0XHVjOWM0IFx1YzJlY1x1YmNmY1x1Yzc0NCBcdWM3MjBcdWM3N2NcdWQ1NThcdWFjOGMgXHVhY2IwXHVjODE1XHVkNTYwIFx1YzIxOCBcdWM1YzZcdWIyZTQuICZxdW90O0FCRCZxdW90O1x1YjI5NCBcdWM3NzQgXHVhZTMwXHVhY2M0XHVjNWQwXHVjMTFjIFx1YjA5OFx1YzYyYyBcdWMyMTggXHVjNWM2XHViMjk0IFx1Y2Q5Y1x1YjgyNVx1Yzc3NFx1YWUzMCBcdWI1NGNcdWJiMzhcdWM1ZDAsIFx1YmQ4OFx1YWMwMFx1YjJhNVx1ZDU1YyBcdWFjYmRcdWM2YjBcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzljMVx1YmNkMVx1YjgyYyBcdWJiMzRcdWM1YjQgXHVhZTMwXHVhY2M0XHViMjk0IFx1YzljMVx1YmNkMVx1YjgyYyBcdWFkZjhcdWI3OThcdWQ1MDRcdWI4NWMgXHViMDk4XHVkMGMwXHViMGJjIFx1YzIxOCBcdWM3ODhcdWFjZTAsIFx1YWMwNFx1YjJlOFx1ZDc4OCBcdWQ0NWNcdWQ2MDRcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjMGMxXHVkMGRjXHVhYzAwIFx1ZDU1OFx1YjA5OFx1Yzc3NFx1YWNlMCwgXHVjZDljXHViODI1XHVjNzc0IFNcdWM3NzggXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1YjI5NCAmIzM5O1MmIzM5OyBcdWI4NWMgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBcdWMwYzFcdWQwZGNcdWFjMDAgXHVkNTU4XHViMDk4XHVjNzc0XHVhY2UwLCBcdWNkOWNcdWI4MjUgXHVjMmVjXHViY2ZjXHVjNzc0IFx1YzljMFx1YzZjY1x1YzljNCBcdWJiMzRcdWM1YjQgXHVhZTMwXHVhY2M0XHViMjk0ICYjMzk7XyYjMzk7XHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC4gXHVjNWVjXHViN2VjIFx1YWMxY1x1Yzc1OCBcdWJkODBcdWJkODQgXHVhZTMwXHVhY2M0IE08c3ViPjE8XC9zdWI+LCBNPHN1Yj4yPFwvc3ViPiwgLi4uLCBNPHN1Yj5rPFwvc3ViPlx1YWMwMCBcdWM5YzFcdWI4MmNcdWI4NWMgXHVjNWYwXHVhY2IwXHViNDFjIFx1YmIzNFx1YzViNCBcdWFlMzBcdWFjYzRcdWIyOTQgTTxzdWI+MTxcL3N1Yj5NPHN1Yj4yPFwvc3ViPi4uLk08c3ViPms8XC9zdWI+XHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC4gXHViNjEwLCBcdWJkODBcdWJkODQgXHVhZTMwXHVhY2M0XHVhYzAwIFx1YmNkMVx1YjgyY1x1Yjg1YyBcdWM1ZjBcdWFjYjBcdWI0MWMgXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1YjI5NCBNPHN1Yj4xPFwvc3ViPnxNPHN1Yj4yPFwvc3ViPnwuLi58TTxzdWI+azxcL3N1Yj5cdWI4NWMgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBcdWQ1NWMgXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1YWMwMCBcdWIzNTQgXHVkMDcwIFx1YmIzNFx1YzViNCBcdWFlMzBcdWFjYzRcdWM3NTggXHVjNzdjXHViZDgwXHViODVjIFx1YzBhY1x1YzZhOVx1YjQxY1x1YjJlNFx1YmE3NCwgXHVhZGY4IFx1YmQ4MFx1YmQ4NFx1Yzc0NCBcdWFkMDRcdWQ2MzhcdWI4NWMgXHVhYzEwXHVjMmZjXHViMmU0LiBcdWM3NzQgXHViYzI5XHViYzk1XHVjNzQ0IFx1YzBhY1x1YzZhOVx1ZDU1OFx1YmE3NCwgXHVjNzA0XHVjNzU4IFx1YmIzNFx1YzViNCBcdWFlMzBcdWFjYzRcdWIyOTQgQShCfF8pQ1x1Yjg1YyBcdWIwOThcdWQwYzBcdWIwYmMgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjOWMxXHViY2QxXHViODJjIFx1YmIzNFx1YzViNCBcdWFlMzBcdWFjYzRcdWM2NDAgXHVhZGY4IFx1YWUzMFx1YWNjNFx1Yzc1OCBcdWNkOWNcdWI4MjVcdWM3NzQgXHVjOGZjXHVjNWI0XHVjODRjXHVjNzQ0IFx1YjU0YywgXHVjOWMwXHVjNmNjXHVjOWM0IFx1YzJlY1x1YmNmY1x1Yzc0NCBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC4gXHViOWNjXHVjNTdkLCBcdWM5YzBcdWM2Y2NcdWM5YzQgXHVjMmVjXHViY2ZjXHVjNzQ0IFx1YzcyMFx1Yzc3Y1x1ZDU1OFx1YWM4YyBcdWFjYjBcdWM4MTVcdWQ1NjAgXHVjMjE4IFx1YzVjNlx1YjJlNFx1YmE3NCwgJiMzOTtfJiMzOTtcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWI2MTAsIFx1YWUzMFx1YWNjNFx1YzVkMFx1YzExYyBcdWIwOThcdWM2MmMgXHVjMjE4IFx1YzVjNlx1YjI5NCBcdWNkOWNcdWI4MjVcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCAmIzM5OyEmIzM5O1x1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVhYzFjXHVjMjE4IFRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YjI5NCBcdWI0NTAgXHVjOTA0XHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjOWMxXHViY2QxXHViODJjIFx1YmIzNFx1YzViNCBcdWFlMzBcdWFjYzRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWMwXHVhY2UwLCBcdWI0NThcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IFx1YWUzMFx1YWNjNFx1Yzc1OCBcdWNkOWNcdWI4MjVcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWNkOWNcdWI4MjUgXHVjMmVjXHViY2ZjXHVjNzQwIFx1YzU0Y1x1ZDMwY1x1YmNiMyBcdWIzMDBcdWJiMzhcdWM3OTBcdWI4NWNcdWI5Y2MgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC4gXHViYjM0XHVjNWI0IFx1YWUzMFx1YWNjNFx1Yzc1OCBcdWFjMDBcdWM3YTUgXHViYzE0XHVhZTY1XHVjYWJkIFx1YzVmMFx1YWNiMFx1Yzc0MCBcdWM5YzFcdWI4MmNcdWM3NzRcdWIyZTQuIFx1YjYxMCwgXHVjOWMwXHVjNmNjXHVjOWM0IFx1YzJlY1x1YmNmY1x1Yzc1OCBcdWFjMWNcdWMyMThcdWIyOTQgXHVkNTU4XHViMDk4XHVjNzc0XHViMmU0LiBcdWFjMDEgXHVjOTA0XHVjNzU4IFx1YWUzOFx1Yzc3NFx1YjI5NCAxMDBcdWJjZjRcdWIyZTQgXHVjNzkxXHVhYzcwXHViMDk4IFx1YWMxOVx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YjljOFx1YjJlNCwgXHVjOWMwXHVjNmNjXHVjOWM0IFx1YzJlY1x1YmNmY1x1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YjljY1x1YzU3ZCwgXHVjNzIwXHVjNzdjXHVkNTU4XHVhYzhjIFx1YWNiMFx1YzgxNVx1ZDU2MCBcdWMyMTggXHVjNWM2XHViMmU0XHViYTc0ICYjMzk7XyYjMzk7XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHViNjEwLCBcdWM3ODVcdWI4MjVcdWM3M2NcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0IFx1YWUzMFx1YWNjNFx1YzVkMFx1YzExYyBcdWI5Y2NcdWI0ZTQgXHVjMjE4IFx1YzVjNlx1YjI5NCBcdWFjYmRcdWM2YjBcdWM1ZDBcdWIyOTQgJiMzOTshJiMzOTtcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMzMwMCIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6Ik1vb3JlIE1hY2hpbmUiLCJkZXNjcmlwdGlvbiI6IjxwPk1vb3JlIE1hY2hpbmUgaXMgYSBmaW5pdGUgc3RhdGUgbWFjaGluZSBvZiB3aGljaCB0aGUgb3V0cHV0IGlzIGRldGVybWluZWQgYnkgdGhlIHN0YXRlcyBvZiB0aGVtLiBUaGUgTW9vcmUgTWFjaGluZSBpcyBuYW1lZCBhZnRlciBFZHdhcmQgRi4gTW9vcmUsIGFuIEFtZXJpY2FuIG1hdGhlbWF0aWNpYW4gYW5kIGNvbXB1dGVyIHNjaWVudGlzdC4gVGhlIHN0YXRlIHRyYW5zaXRpb24gb2YgYSBNb29yZSBNYWNoaW5lIGlzIGRpcmVjdGVkIGJ5IHRoZSBnaXZlbiBpbnB1dC4gRm9yIGV4YW1wbGUsIGlmIHRoZSBpbnB1dCBpcyBnaXZlbiBhcyAmbGRxdW87YWFiYmEsJnJkcXVvOyB0aGUgb3V0cHV0IG9mIHRoZSBmb2xsb3dpbmcgTW9vcmUgTWFjaGluZSBpcyAmbGRxdW87UFJFVFRZLiZyZHF1bzsmbmJzcDs8XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9tb29yZTEucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MTQ0cHg7IHdpZHRoOjQ2MXB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPkZpZ3VyZSAxLiBBbiBleGFtcGxlIG9mIGEgTW9vcmUgTWFjaGluZTxcL3A+XHJcblxyXG48cD5JbiBGaWd1cmUgMSwgYSBjaXJjbGUgZGVub3RlcyBlYWNoIHN0YXRlIGFuZCB0aGUgbGFiZWwgb24gdGhlIGFycm93IGRlbm90ZXMgdGhlIGlucHV0IHN5bWJvbC4gT25lIG9mIHRoZSBzdGF0ZXMgaXMgZGVzaWduYXRlZCBhcyB0aGUgc3RhcnQgc3RhdGUsIHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IGFuIGFycm93IHdpdGggbm8gb3JpZ2luIHBvaW50aW5nIHRvIHRoZSBzdGF0ZS4gSW4gdGhpcyBjYXNlLCB0aGUgc3RhcnQgc3RhdGUgaXMgU3RhdGUgMS4gRWFjaCBzdGF0ZSBOIHdpdGggb3V0cHV0IHN5bWJvbCBTIGlzIGRlcGljdGVkIGluIGxhYmVsIE5cL1MuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkdlbmVyYWxseSwgYSBNb29yZSBNYWNoaW5lIGNhbiBoYXZlIGN5Y2xlcy4gSG93ZXZlciwgd2UgY2FuIHRoaW5rIG9mIGEgY2VydGFpbiBraW5kIG9mIE1vb3JlIE1hY2hpbmUgd2hpY2ggaGFzIG5vIGN5Y2xlIGF0IGFsbC4gTGV0JnJzcXVvO3MgY2FsbCB0aGlzIGtpbmQgb2YgTW9vcmUgTWFjaGluZSBhIHNlcmllcy1wYXJhbGxlbCBNb29yZSBNYWNoaW5lLiZuYnNwOzxcL3A+XHJcblxyXG48cD5VbmZvcnR1bmF0ZWx5LCBvbmUgb2YgdGhlIG91dHB1dCBzeW1ib2xzIG9mIGEgc2VyaWVzLXBhcmFsbGVsIE1vb3JlIE1hY2hpbmUgaXMgZXJhc2VkLiBUaGUgcHJvYmxlbSBpcyB0byBmaW5kIHRoZSBlcmFzZWQgb3V0cHV0IHN5bWJvbCB1c2luZyB0aGUgZ2l2ZW4gb3V0cHV0IG9mIHRoZSBtYWNoaW5lLiBOb3RlIHRoYXQgaXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBmaW5kIHRoZSBlcmFzZWQgc3ltYm9sLiBGb3IgZXhhbXBsZSwgYXNzdW1lIHRoZSBmb2xsb3dpbmcgc2VyaWVzLXBhcmFsbGVsIE1vb3JlIE1hY2hpbmUgaXMgZ2l2ZW4uJm5ic3A7PFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvbW9vcmUyLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjE0MHB4OyB3aWR0aDoyNzhweFwiIFwvPjxcL3A+XHJcblxyXG48cD5GaWd1cmUgMi4gQW4gZXhhbXBsZSBvZiBhIHNlcmllcy1wYXJhbGxlbCBNb29yZSBNYWNoaW5lPFwvcD5cclxuXHJcbjxwPkluIEZpZ3VyZSAyLCBvbmx5IHRoZSBvdXRwdXQgc3ltYm9scyBhcmUgc2hvd24gYXMgbGFiZWxzIG9uIHN0YXRlcyBmb3Igc2ltcGxpY2l0eS4gVGhlIHdoaXRlIGNpcmNsZSB3aXRob3V0IGFueSBsYWJlbCBkZW5vdGVzIHRoZSBzdGF0ZSB3aG9zZSBvdXRwdXQgc3ltYm9sIGlzIGVyYXNlZC4gSWYgdGhlIGdpdmVuIG91dHB1dCBvZiB0aGUgbWFjaGluZSBpcyAmbGRxdW87QURDLCZyZHF1bzsgdGhlbiB3ZSBjYW4gZGV0ZXJtaW5lIHRoZSBlcmFzZWQgc3ltYm9sIGlzIEQuIEhvd2V2ZXIsIGlmIHRoZSBvdXRwdXQgaXMgJmxkcXVvO0FCQywmcmRxdW87IHdlIGNhbm5vdCB1bmlxdWVseSBkZXRlcm1pbmUgdGhlIGVyYXNlZCBzeW1ib2wuIE9yLCBpZiB0aGUgb3V0cHV0IGlzIGdpdmVuIGFzICZsZHF1bztBQkQsJnJkcXVvOyBpdCBpcyBub3QgYSB2YWxpZCBvdXRwdXQgb2YgdGhpcyBtYWNoaW5lLiBZb3VyIHByb2dyYW0gc2hvdWxkIGFsc28gZGV0ZXJtaW5lIHRoZXNlIGltcG9zc2libGUgY2FzZXMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlNpbmNlIHRoZSBNb29yZSBNYWNoaW5lIGlzIHJlZHVjZWQgdG8gYSBzZXJpZXMtcGFyYWxsZWwgZ3JhcGgsIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWFjaGluZSBpdHNlbGYgY2FuIGJlIGRlZmluZWQgaW4gYSBzdHJhaWdodC1mb3J3YXJkIHdheS4gQSBNb29yZSBNYWNoaW5lIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHN0YXRlLCB3aG9zZSBvdXRwdXQgaXMgUywgaXMgZGVub3RlZCBieSBTIGl0c2VsZi4gQSBNb29yZSBNYWNoaW5lIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHN0YXRlLCB3aG9zZSBvdXRwdXQgc3ltYm9sIGlzIGVyYXNlZCwgaXMgZGVub3RlZCBieSB0aGUgdW5kZXJzY29yZSBzeW1ib2wgJmxzcXVvO18mcnNxdW87LiBUaGUgTW9vcmUgTWFjaGluZSBjb25zaXN0cyBvZiBhIHNlcmllcyBvZiBzdWItbWFjaGluZXMsIHdob3NlIGRlc2NyaXB0aW9ucyBhcmUgTTEsIE0yLCAuLi4sIGFuZCBNayByZXNwZWN0aXZlbHksIGlzIGRlbm90ZWQgYnkgTTFNMi4uLk1rIFRoZSBNb29yZSBNYWNoaW5lIGNvbnNpc3RzIG9mIGEgcGFyYWxsZWwgY29ubmVjdGlvbiBzdWItbWFjaGluZXMsIHdob3NlIGRlc2NyaXB0aW9ucyBhcmUgTTEsIE0yLCAuLi4sIGFuZCBNayByZXNwZWN0aXZlbHksIGlzIGRlbm90ZWQgYnkgTTF8TTJ8Li4ufE1rLiBJZiBhIE1vb3JlIE1hY2hpbmUgaXMgdXNlZCBhcyBhIHBhcnQgb2YgYW5vdGhlciBiaWdnZXIgTW9vcmUgTWFjaGluZSwgdGhlIHBhcmVudGhlc2VzIGNhbiBiZSB1c2VkIGZvciBlbmNsb3NpbmcgdGhlIHBhcnQuIFVzaW5nIHRoaXMgcmVwcmVzZW50YXRpb24sIHRoZSBhYm92ZSBNb29yZSBNYWNoaW5lIGNhbiBiZSBnaXZlbiBhcyBBKEJ8XylDLiZuYnNwOzxcL3A+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gZGV0ZXJtaW5pbmcgdGhlIGVyYXNlZCBzeW1ib2wgZm9yIGEgZ2l2ZW4gc2VyaWVzLXBhcmFsbGVsIE1vb3JlIE1hY2hpbmUgYW5kIGFuIG91dHB1dCBwcm9kdWNlZCBieSB0aGUgbWFjaGluZS4gSWYgdGhlIGVyYXNlZCBzeW1ib2wgY2Fubm90IGJlIHVuaXF1ZWx5IGRldGVybWluZWQsIHByaW50IHRoZSB1bmRlcnNjb3JlIHN5bWJvbCAmbHNxdW87XyZyc3F1bzsgaW5zdGVhZC4gSWYgdGhlIG91dHB1dCBjYW5ub3QgYmUgcHJvZHVjZWQgZnJvbSB0aGUgZ2l2ZW4gbWFjaGluZSwgcHJpbnQgdGhlIGV4Y2xhbWF0aW9uIG1hcmsgJmxzcXVvOyEmcnNxdW87IGluc3RlYWQuJm5ic3A7PFwvcD5cclxuIiwiaW5wdXQiOiI8cD5Zb3VyIHByb2dyYW0gaXMgdG8gcmVhZCBmcm9tIHN0YW5kYXJkIGlucHV0LiBUaGUgaW5wdXQgY29uc2lzdHMgb2YgVCB0ZXN0IGNhc2VzLiBUaGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMgVCBpcyBnaXZlbiBpbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgaW5wdXQuIEZyb20gdGhlIHNlY29uZCBsaW5lLCBlYWNoIHRlc3QgY2FzZSBpcyBnaXZlbi4gQSB0ZXN0IGNhc2UgY29uc2lzdHMgb2YgdHdvIGxpbmVzLiBUaGUgc3RyaW5nIGluIHRoZSBmaXJzdCBsaW5lIG9mIGEgdGVzdCBjYXNlIGNvbnRhaW5zIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2VyaWVzLXBhcmFsbGVsIE1vb3JlIE1hY2hpbmUuIFRoZSBzZWNvbmQgbGluZSBjb250YWlucyBhbiBvdXRwdXQgb2YgdGhlIG1hY2hpbmUuIE9ubHkgY2FwaXRhbCBFbmdsaXNoIGFscGhhYmV0cyBhcmUgdXNlZCBmb3IgdGhlIG91dHB1dCBzeW1ib2xzLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIG91dGVybW9zdCBjb25uZWN0aW9uIG9mIHRoZSBNb29yZSBNYWNoaW5lIGlzIHNlcmlhbC4gSXQgaXMgYWxzbyBhc3N1bWVkIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZXJhc2VkIHN5bWJvbCBpbiB0aGUgaW5wdXQgbWFjaGluZS4gVGhlIGxlbmd0aHMgb2YgdGhlIGlucHV0IGxpbmVzIG9mIHRlc3QgY2FzZXMgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAxMDAuJm5ic3A7PFwvcD5cclxuIiwib3V0cHV0IjoiPHA+WW91ciBwcm9ncmFtIGlzIHRvIHdyaXRlIHRvIHN0YW5kYXJkIG91dHB1dC4gUHJpbnQgZXhhY3RseSBvbmUgbGluZSBmb3IgZWFjaCB0ZXN0IGNhc2UuIFRoZSBsaW5lIHNob3VsZCBjb250YWluIHRoZSBlcmFzZWQgb3V0cHV0IHN5bWJvbC4gSWYgaXQgY2Fubm90IGJlIGRldGVybWluZWQsIHRoZSB1bmRlcnNjb3JlIHN5bWJvbCBzaG91bGQgYmUgcHJpbnRlZC4gSWYgdGhlIG91dHB1dCBjYW5ub3QgYmUgcHJvZHVjZWQgZnJvbSB0aGUgbWFjaGluZSwgdGhlIGV4Y2xhbWF0aW9uIG1hcmsgc3ltYm9sIHNob3VsZCBiZSBwcmludGVkLiZuYnNwOzxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d