시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 64 MB 11 1 1 100.000%

문제

상범이는 수상한 것들을 모으는 취미가 있다. 이 상범이는 최근에 엄청 이상한 것을 발견했다. 그 이상한 물건은 철제 구조물로, 몇 개의 철 막대가 구슬과 납땜되어진 물건이었다. 이를테면 다음 그림과 같은 모양으로:

상범이는 이 구조물을 보자마자 자신의 남자친구에게 줄 사진 액자를 만들 재료로 딱!이라고 생각했다.

상범이가 원하는 액자는 반드시 철제 막대로 이루어진 닫힌 고리여야 한다. 이를 위해서 상범이는 몇 개의 구슬을 떼어내서 고리의 끝을 분리하고, 그런 막대들을 다시 납땜하는 식으로 고치기 시작했다.

여기서 흥미로운 사실은, 상범이가 구슬을 떼어낼 때 막대를 어떤 식으로 분리할 지 마음대로 고를 수 있다는 것이다. 그러니까, 한 개의 구슬에 여러 개의 막대가 납땜되어있을 경우, 이 구슬을 제거하면서 일부 막대끼리는 붙여놓고, 어떤 건 분리하는 것이 가능하다.

예를 들어, 위의 그림에 나온 구조물을 상범이가 남자친구에게 줄 액자로 만들기 위해서는 A번 구슬을 떼어내면서 막대 1번을 분리한다. 그 다음 D번 구슬을 떼어내면서 막대 4-5번 쌍과 3-7번 쌍을 분리하고(4번과 5번은 여전히 납땜되어진 채로 두고, 3-7번도 납땜되어진 채로 둔다), E번 구슬을 떼어내면서 막대 7번을 분리한다. 마지막으로 끝이 연결되지 않은 1번과 7번 막대를 연결하면 상범이가 남자친구에게 선물할 액자인 1-7-3-2-4-5-6-8이란 이름의 구조물이 완성된다.

상범이는 의외로 게으르기 때문에 최소한의 동작(구슬을 떼어내는 것, 두 개의 막대를 연결하는 것)을 통해 액자를 완성하고싶다.

철제 구조물의 초기 상태가 주어졌을 때, 이 구조물은 얼마나 많은 동작을 통해야 액자가 될 수 있을지 구해보자.

입력

첫 번째 줄에 구슬의 수 N(0 ≤ N ≤ 1000)과 막대의 수 M(2 ≤ M ≤ 50,000)이 주어진다.

구슬의 번호는 1번부터 N번으로 매겨지며, 이어지는 M개의 줄에는 막대의 양 끝이 연결된 구슬의 번호를 나타내는 두 개의 정수가 주어진다.

철제 구조물의 초기 상태는 연결된 상태가 아닐 수도 있으며(즉, 여러 개의 구조물 조각으로 이루어져있을 수도 있다). 구슬 하나에 막대가 하나만 연결되어있을 수도 있는데, 이런 경우, 구슬은 연결된 막대가 다른 막대와 연결되기 전에 떼어내지 않아도 된다.

또한, 막대가 하나도 연결되지 않은 구슬도 있을 수 있다. 상범이는 구슬이 아닌 막대기에만 관심이 있으므로, 그런 구슬은 붙여도 되고 붙이지 않아도 된다.

출력

상범이가 남자친구에게 줄 액자를 만들기 위해 행해야 하는 동작의 최소 횟수를 나타내는 정수 한 개를 출력한다.

예제 입력 1

6 8
1 2
1 3
3 4
1 4
4 6
5 6
4 5
1 5

예제 출력 1

4
W3sicHJvYmxlbV9pZCI6IjM2MjMiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWMwYzFcdWJjOTRcdWM3NzRcdWM3NTggXHVjNTYxXHVjNzkwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWMwYzFcdWJjOTRcdWM3NzRcdWIyOTQgXHVjMjE4XHVjMGMxXHVkNTVjIFx1YWM4M1x1YjRlNFx1Yzc0NCBcdWJhYThcdWM3M2NcdWIyOTQgXHVjZGU4XHViYmY4XHVhYzAwIFx1Yzc4OFx1YjJlNC4gXHVjNzc0Jm5ic3A7XHVjMGMxXHViYzk0XHVjNzc0XHViMjk0IFx1Y2Q1Y1x1YWRmY1x1YzVkMCBcdWM1YzRcdWNjYWQgXHVjNzc0XHVjMGMxXHVkNTVjIFx1YWM4M1x1Yzc0NCBcdWJjMWNcdWFjYWNcdWQ1ODhcdWIyZTQuIFx1YWRmOCBcdWM3NzRcdWMwYzFcdWQ1NWMgXHViYjNjXHVhYzc0XHVjNzQwIFx1Y2NhMFx1YzgxYyBcdWFkNmNcdWM4NzBcdWJiM2NcdWI4NWMsJm5ic3A7XHViYTg3IFx1YWMxY1x1Yzc1OCBcdWNjYTAgXHViOWM5XHViMzAwXHVhYzAwIFx1YWQ2Y1x1YzJhY1x1YWNmYyBcdWIwYTlcdWI1NWNcdWI0MThcdWM1YjRcdWM5YzQgXHViYjNjXHVhYzc0XHVjNzc0XHVjNWM4XHViMmU0LiBcdWM3NzRcdWI5N2NcdWQxNGNcdWJhNzQgXHViMmU0XHVjNzRjIFx1YWRmOFx1YjliY1x1YWNmYyBcdWFjMTlcdWM3NDAgXHViYWE4XHVjNTkxXHVjNzNjXHViODVjOjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2lkZWFsMS5wbmdcIiBzdHlsZT1cImhlaWdodDoxMTZweDsgd2lkdGg6MTI4cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+XHVjMGMxXHViYzk0XHVjNzc0XHViMjk0IFx1Yzc3NCBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NDQgXHViY2Y0XHVjNzkwXHViOWM4XHVjNzkwIFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWIwYThcdWM3OTBcdWNlNWNcdWFkNmNcdWM1ZDBcdWFjOGMgXHVjOTA0IFx1YzBhY1x1YzljNCBcdWM1NjFcdWM3OTBcdWI5N2MgXHViOWNjXHViNGU0IFx1YzdhY1x1YjhjY1x1Yjg1YyBcdWI1MzEhXHVjNzc0XHViNzdjXHVhY2UwIFx1YzBkZFx1YWMwMVx1ZDU4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjMGMxXHViYzk0XHVjNzc0XHVhYzAwIFx1YzZkMFx1ZDU1OFx1YjI5NCBcdWM1NjFcdWM3OTBcdWIyOTQgXHViYzE4XHViNGRjXHVjMmRjIFx1Y2NhMFx1YzgxYyBcdWI5YzlcdWIzMDBcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YjJlYlx1ZDc4YyBcdWFjZTBcdWI5YWNcdWM1ZWNcdWM1N2MgXHVkNTVjXHViMmU0LiZuYnNwO1x1Yzc3NFx1Yjk3YyBcdWM3MDRcdWQ1NzRcdWMxMWMgXHVjMGMxXHViYzk0XHVjNzc0XHViMjk0IFx1YmE4NyBcdWFjMWNcdWM3NTggXHVhZDZjXHVjMmFjXHVjNzQ0IFx1YjViY1x1YzViNFx1YjBiNFx1YzExYyBcdWFjZTBcdWI5YWNcdWM3NTggXHViMDVkXHVjNzQ0IFx1YmQ4NFx1YjlhY1x1ZDU1OFx1YWNlMCwmbmJzcDtcdWFkZjhcdWI3ZjAgXHViOWM5XHViMzAwXHViNGU0XHVjNzQ0Jm5ic3A7XHViMmU0XHVjMmRjIFx1YjBhOVx1YjU1Y1x1ZDU1OFx1YjI5NCBcdWMyZGRcdWM3M2NcdWI4NWMgXHVhY2UwXHVjZTU4XHVhZTMwIFx1YzJkY1x1Yzc5MVx1ZDU4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNWVjXHVhZTMwXHVjMTFjIFx1ZDc2NVx1YmJmOFx1Yjg1Y1x1YzZiNCBcdWMwYWNcdWMyZTRcdWM3NDAsJm5ic3A7XHVjMGMxXHViYzk0XHVjNzc0XHVhYzAwIFx1YWQ2Y1x1YzJhY1x1Yzc0NCBcdWI1YmNcdWM1YjRcdWIwYmMgXHViNTRjIFx1YjljOVx1YjMwMFx1Yjk3YyBcdWM1YjRcdWI1YTQgXHVjMmRkXHVjNzNjXHViODVjIFx1YmQ4NFx1YjlhY1x1ZDU2MCBcdWM5YzAgXHViOWM4XHVjNzRjXHViMzAwXHViODVjIFx1YWNlMFx1Yjk3YyBcdWMyMTggXHVjNzg4XHViMmU0XHViMjk0IFx1YWM4M1x1Yzc3NFx1YjJlNC4gXHVhZGY4XHViN2VjXHViMmM4XHVhZTRjLCBcdWQ1NWMgXHVhYzFjXHVjNzU4IFx1YWQ2Y1x1YzJhY1x1YzVkMCBcdWM1ZWNcdWI3ZWMgXHVhYzFjXHVjNzU4IFx1YjljOVx1YjMwMFx1YWMwMCBcdWIwYTlcdWI1NWNcdWI0MThcdWM1YjRcdWM3ODhcdWM3NDQgXHVhY2JkXHVjNmIwLCZuYnNwO1x1Yzc3NCBcdWFkNmNcdWMyYWNcdWM3NDQgXHVjODFjXHVhYzcwXHVkNTU4XHViYTc0XHVjMTFjIFx1Yzc3Y1x1YmQ4MCBcdWI5YzlcdWIzMDBcdWIwN2NcdWI5YWNcdWIyOTQgXHViZDk5XHVjNWVjXHViMTkzXHVhY2UwLCBcdWM1YjRcdWI1YTQgXHVhYzc0IFx1YmQ4NFx1YjlhY1x1ZDU1OFx1YjI5NCBcdWFjODNcdWM3NzQgXHVhYzAwXHViMmE1XHVkNTU4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWM3MDRcdWM3NTggXHVhZGY4XHViOWJjXHVjNWQwIFx1YjA5OFx1YzYyOCBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NDQgXHVjMGMxXHViYzk0XHVjNzc0XHVhYzAwJm5ic3A7XHViMGE4XHVjNzkwXHVjZTVjXHVhZDZjXHVjNWQwXHVhYzhjIFx1YzkwNCBcdWM1NjFcdWM3OTBcdWI4NWMgXHViOWNjXHViNGU0XHVhZTMwIFx1YzcwNFx1ZDU3NFx1YzExY1x1YjI5NCBBXHViYzg4IFx1YWQ2Y1x1YzJhY1x1Yzc0NCBcdWI1YmNcdWM1YjRcdWIwYjRcdWJhNzRcdWMxMWMgXHViOWM5XHViMzAwIDFcdWJjODhcdWM3NDQgXHViZDg0XHViOWFjXHVkNTVjXHViMmU0LiZuYnNwO1x1YWRmOCBcdWIyZTRcdWM3NGMgRFx1YmM4OCBcdWFkNmNcdWMyYWNcdWM3NDQgXHViNWJjXHVjNWI0XHViMGI0XHViYTc0XHVjMTFjIFx1YjljOVx1YjMwMCA0LTVcdWJjODggXHVjMzBkXHVhY2ZjIDMtN1x1YmM4OCBcdWMzMGRcdWM3NDQgXHViZDg0XHViOWFjXHVkNTU4XHVhY2UwKDRcdWJjODhcdWFjZmMgNVx1YmM4OFx1Yzc0MCBcdWM1ZWNcdWM4MDRcdWQ3ODggXHViMGE5XHViNTVjXHViNDE4XHVjNWI0XHVjOWM0IFx1Y2M0NFx1Yjg1YyBcdWI0NTBcdWFjZTAsIDMtN1x1YmM4OFx1YjNjNCBcdWIwYTlcdWI1NWNcdWI0MThcdWM1YjRcdWM5YzQgXHVjYzQ0XHViODVjIFx1YjQ1NFx1YjJlNCksJm5ic3A7RVx1YmM4OCBcdWFkNmNcdWMyYWNcdWM3NDQgXHViNWJjXHVjNWI0XHViMGI0XHViYTc0XHVjMTFjIFx1YjljOVx1YjMwMCA3XHViYzg4XHVjNzQ0IFx1YmQ4NFx1YjlhY1x1ZDU1Y1x1YjJlNC4mbmJzcDtcdWI5YzhcdWM5YzBcdWI5YzlcdWM3M2NcdWI4NWMgXHViMDVkXHVjNzc0IFx1YzVmMFx1YWNiMFx1YjQxOFx1YzljMCBcdWM1NGFcdWM3NDAmbmJzcDsxXHViYzg4XHVhY2ZjIDdcdWJjODggXHViOWM5XHViMzAwXHViOTdjIFx1YzVmMFx1YWNiMFx1ZDU1OFx1YmE3NCBcdWMwYzFcdWJjOTRcdWM3NzRcdWFjMDAgXHViMGE4XHVjNzkwXHVjZTVjXHVhZDZjXHVjNWQwXHVhYzhjIFx1YzEyMFx1YmIzY1x1ZDU2MCBcdWM1NjFcdWM3OTBcdWM3NzggMS03LTMtMi00LTUtNi04XHVjNzc0XHViNzgwIFx1Yzc3NFx1Yjk4NFx1Yzc1OCBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NzQgXHVjNjQ0XHVjMTMxXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2lkZWFsMi5wbmdcIiBzdHlsZT1cImhlaWdodDoxNDJweDsgd2lkdGg6NjY4cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+XHVjMGMxXHViYzk0XHVjNzc0XHViMjk0IFx1Yzc1OFx1YzY3OFx1Yjg1YyBcdWFjOGNcdWM3M2NcdWI5NzRcdWFlMzAgXHViNTRjXHViYjM4XHVjNWQwIFx1Y2Q1Y1x1YzE4Y1x1ZDU1Y1x1Yzc1OCBcdWIzZDlcdWM3OTEoXHVhZDZjXHVjMmFjXHVjNzQ0IFx1YjViY1x1YzViNFx1YjBiNFx1YjI5NCBcdWFjODMsIFx1YjQ1MCBcdWFjMWNcdWM3NTggXHViOWM5XHViMzAwXHViOTdjIFx1YzVmMFx1YWNiMFx1ZDU1OFx1YjI5NCBcdWFjODMpXHVjNzQ0IFx1ZDFiNVx1ZDU3NCBcdWM1NjFcdWM3OTBcdWI5N2MgXHVjNjQ0XHVjMTMxXHVkNTU4XHVhY2UwXHVjMmY2XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWNjYTBcdWM4MWMgXHVhZDZjXHVjODcwXHViYjNjXHVjNzU4IFx1Y2QwOFx1YWUzMCBcdWMwYzFcdWQwZGNcdWFjMDAgXHVjOGZjXHVjNWI0XHVjODRjXHVjNzQ0IFx1YjU0YywgXHVjNzc0IFx1YWQ2Y1x1Yzg3MFx1YmIzY1x1Yzc0MCZuYnNwO1x1YzViY1x1YjljOFx1YjA5OCBcdWI5Y2VcdWM3NDAgXHViM2Q5XHVjNzkxXHVjNzQ0IFx1ZDFiNVx1ZDU3NFx1YzU3YyBcdWM1NjFcdWM3OTBcdWFjMDAgXHViNDIwIFx1YzIxOCBcdWM3ODhcdWM3NDRcdWM5YzAgXHVhZDZjXHVkNTc0XHViY2Y0XHVjNzkwLjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiIFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVhZDZjXHVjMmFjXHVjNzU4IFx1YzIxOCZuYnNwO04oMCAmbGU7IE4gJmxlOyAxMDAwKVx1YWNmYyBcdWI5YzlcdWIzMDBcdWM3NTggXHVjMjE4Jm5ic3A7TSgyICZsZTsgTSAmbGU7IDUwLDAwMClcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFkNmNcdWMyYWNcdWM3NTggXHViYzg4XHVkNjM4XHViMjk0IDFcdWJjODhcdWJkODBcdWQxMzAgTlx1YmM4OFx1YzczY1x1Yjg1YyBcdWI5ZTRcdWFjYThcdWM5YzBcdWJhNzAsJm5ic3A7XHVjNzc0XHVjNWI0XHVjOWMwXHViMjk0IE1cdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwXHViMjk0IFx1YjljOVx1YjMwMFx1Yzc1OCBcdWM1OTEgXHViMDVkXHVjNzc0IFx1YzVmMFx1YWNiMFx1YjQxYyBcdWFkNmNcdWMyYWNcdWM3NTggXHViYzg4XHVkNjM4XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWI0NTAgXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Y2NhMFx1YzgxYyBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NTggXHVjZDA4XHVhZTMwIFx1YzBjMVx1ZDBkY1x1YjI5NCBcdWM1ZjBcdWFjYjBcdWI0MWMgXHVjMGMxXHVkMGRjXHVhYzAwIFx1YzU0NFx1YjJkMCBcdWMyMThcdWIzYzQgXHVjNzg4XHVjNzNjXHViYTcwKFx1Yzk4OSwgXHVjNWVjXHViN2VjIFx1YWMxY1x1Yzc1OCBcdWFkNmNcdWM4NzBcdWJiM2MgXHVjODcwXHVhYzAxXHVjNzNjXHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOFx1Yzc4OFx1Yzc0NCBcdWMyMThcdWIzYzQgXHVjNzg4XHViMmU0KS4mbmJzcDtcdWFkNmNcdWMyYWMgXHVkNTU4XHViMDk4XHVjNWQwIFx1YjljOVx1YjMwMFx1YWMwMCBcdWQ1NThcdWIwOThcdWI5Y2MgXHVjNWYwXHVhY2IwXHViNDE4XHVjNWI0XHVjNzg4XHVjNzQ0IFx1YzIxOFx1YjNjNCBcdWM3ODhcdWIyOTRcdWIzNzAsIFx1Yzc3NFx1YjdmMCBcdWFjYmRcdWM2YjAsJm5ic3A7XHVhZDZjXHVjMmFjXHVjNzQwIFx1YzVmMFx1YWNiMFx1YjQxYyBcdWI5YzlcdWIzMDBcdWFjMDAmbmJzcDtcdWIyZTRcdWI5NzggXHViOWM5XHViMzAwXHVjNjQwJm5ic3A7XHVjNWYwXHVhY2IwXHViNDE4XHVhZTMwIFx1YzgwNFx1YzVkMCBcdWI1YmNcdWM1YjRcdWIwYjRcdWM5YzAgXHVjNTRhXHVjNTQ0XHViM2M0IFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViNjEwXHVkNTVjLCBcdWI5YzlcdWIzMDBcdWFjMDAgXHVkNTU4XHViMDk4XHViM2M0IFx1YzVmMFx1YWNiMFx1YjQxOFx1YzljMCBcdWM1NGFcdWM3NDAgXHVhZDZjXHVjMmFjXHViM2M0IFx1Yzc4OFx1Yzc0NCBcdWMyMTggXHVjNzg4XHViMmU0LiZuYnNwO1x1YzBjMVx1YmM5NFx1Yzc3NFx1YjI5NCBcdWFkNmNcdWMyYWNcdWM3NzQgXHVjNTQ0XHViMmNjIFx1YjljOVx1YjMwMFx1YWUzMFx1YzVkMFx1YjljYyBcdWFkMDBcdWMyZWNcdWM3NzQgXHVjNzg4XHVjNzNjXHViYmMwXHViODVjLCBcdWFkZjhcdWI3ZjAgXHVhZDZjXHVjMmFjXHVjNzQwIFx1YmQ5OVx1YzVlY1x1YjNjNCBcdWI0MThcdWFjZTAgXHViZDk5XHVjNzc0XHVjOWMwIFx1YzU0YVx1YzU0NFx1YjNjNCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVjMGMxXHViYzk0XHVjNzc0XHVhYzAwIFx1YjBhOFx1Yzc5MFx1Y2U1Y1x1YWQ2Y1x1YzVkMFx1YWM4YyBcdWM5MDQgXHVjNTYxXHVjNzkwXHViOTdjIFx1YjljY1x1YjRlNFx1YWUzMCBcdWM3MDRcdWQ1NzQmbmJzcDtcdWQ1ODlcdWQ1NzRcdWM1N2MgXHVkNTU4XHViMjk0IFx1YjNkOVx1Yzc5MVx1Yzc1OCBcdWNkNWNcdWMxOGMgXHVkNjlmXHVjMjE4XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWM4MTVcdWMyMTggXHVkNTVjIFx1YWMxY1x1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMzYyMyIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IiBJZGVhbCBGcmFtZSIsImRlc2NyaXB0aW9uIjoiPHA+UGV0ZXIgaXMgZm9uZCBvZiBjb2xsZWN0aW5nIHZhcmlvdXMgZnVubnkgdGhpbmdzLiBIZSBjYW4gc3BlbmQgaG91cnMgcmVzdG9yaW5nIGFuZCBwb2xpc2hpbmcgc29tZSB1c2VsZXNzIGl0ZW0gaGUgaGFkIGZvdW5kIGluIGEgZ2FyYmFnZSBoZWFwLjxcL3A+XHJcblxyXG48cD5SZWNlbnRseSBoZSBoYXMgZm91bmQgYSByZWFsbHkgbmljZSB0aGluZy4gSXQgaXMgYSBzbWFsbCBtZXRhbCBjb25zdHJ1Y3Rpb24gdGhhdCBjb25zaXN0cyBvZiBzZXZlcmFsIGlyb24gcm9kcyBzb2xkZXJlZCB0b2dldGhlciB3aXRoIGxpdHRsZSB0aW4gYmVhZHMuIEFuIGV4YW1wbGUgb2Ygc3VjaCBjb25zdHJ1Y3Rpb24gaXMgc2hvd24gb24gdGhlIHBpY3R1cmUgYmVsb3cuPFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaWRlYWwxLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjExNnB4OyB3aWR0aDoxMjhweFwiIFwvPjxcL3A+XHJcblxyXG48cD5QZXRlciBoYXMgaW1tZWRpYXRlbHkgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIG5pY2Ugcm9kcyBhcmUgZXhhY3RseSB3aGF0IGhlIG5lZWRzIGZvciB0aGUgZnJhbWUgYXJvdW5kIHRoZSBwaG90byBvZiBoaXMgZ2lybGZyaWVuZC4gVGhlIGZyYW1lIG11c3QgaGF2ZSBhIGZvcm0gb2YgYSBjbG9zZWQgY2hhaW4gb2Ygcm9kcy4gVG8gZG8gdGhlIHRyYW5zZm9ybWF0aW9uIFBldGVyIHdvdWxkIHVuc29sZGVyIHNvbWUgYmVhZHMsIHJlbGVhc2luZyB0aGUgcm9kcyBlbmRzLCBhbmQgYWZ0ZXIgdGhhdCBzb2xkZXIgc29tZSBmcmVlIHJvZCBlbmRzIHRvZ2V0aGVyIGFnYWluLiBXaGVuIHVuc29sZGVyaW5nIGEgYmVhZCwgUGV0ZXIgY2FuIHNlcGFyYXRlIHRoZSBlbmRzIG9mIHRoZSByb2RzIGNvbm5lY3RlZCBhdCB0aGF0IGJlYWQsIGluIGFyYml0cmFyeSB3YXkgJm1kYXNoOyB0aGF0IGlzLCBoZSBjYW4gY2hvb3NlIGFuIGFyYml0cmFyeSBwYXJ0aXRpb24gb2Ygcm9kcyBjb25uZWN0ZWQgdG8gdGhlIGJlYWQgaW50byBub24tZW1wdHkgZ3JvdXBzLCBzbyB0aGF0IG9uY2UgdGhlIGJlYWQgaXMgdW5zb2xkZXJlZCBvbmx5IHRoZSByb2RzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBncm91cCByZW1haW4gY29ubmVjdGVkIHRvIGVhY2ggb3RoZXIuPFwvcD5cclxuXHJcbjxwPkZvciBleGFtcGxlLCB0byB0dXJuIHRoZSBjb25zdHJ1Y3Rpb24gb24gdGhlIHBpY3R1cmUgYWJvdmUgdG8gYSBmcmFtZSwgaGUgY291bGQgdW5zb2xkZXIgdGhlIGJlYWQgQSwgc2VwYXJhdGluZyB0aGUgZW5kIG9mIHJvZCAxLCB1bnNvbGRlciB0aGUgYmVhZCBELCBzZXBhcmF0aW5nIHBhaXJzIG9yIHJvZHMgNCZuZGFzaDs1IGFuZCAzJm5kYXNoOzcgKGJ1dCBrZWVwaW5nIHRoZSByb2RzIGluIHBhaXJzIGNvbm5lY3RlZCksIGFuZCB1bnNvbGRlciB0aGUgYmVhZCBFLCBzZXBhcmF0aW5nIHRoZSBlbmQgb2YgdGhlIHJvZCA3LiBBZnRlciB0aGF0IGhlIG5lZWRzIHRvIHNvbGRlciB0aGUgZnJlZSBlbmRzIG9mIHJvZHMgMSBhbmQgNyB0byBnZXQgdGhlIGZyYW1lIDEmbmRhc2g7NyZuZGFzaDszJm5kYXNoOzImbmRhc2g7NCZuZGFzaDs1Jm5kYXNoOzYmbmRhc2g7OC48XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9pZGVhbDIucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MTQycHg7IHdpZHRoOjY2OHB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPk5vdyBoZWxwIFBldGVyIHRvIFx1ZmIwMW5kIHRoZSB3YXkgdG8gY3JlYXRlIHRoZSBmcmFtZSBmcm9tIHRoZSBjb25zdHJ1Y3Rpb24gaGUgaGFzIGdvdCBieSBtYWtpbmcgYXMgZmV3IG9wZXJhdGlvbnMgYXMgcG9zc2libGUuIFRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb3BlcmF0aW9uczogdW5zb2xkZXJpbmcgYSBiZWFkLCBhbmQgc29sZGVyaW5nIHR3byBmcmVlIGVuZHMgb2Ygcm9kcyB0b2dldGhlci4gVW5zb2xkZXJpbmcgaXMgY291bnRlZCBhcyBvbmUgb3BlcmF0aW9uIG5vIG1hdHRlciBob3cgbWFueSByb2RzIHdlcmUgY29ubmVjdGVkIGluIGEgYmVhZCBhbmQgaG93IHRoZXkgd2VyZSByZWFycmFuZ2VkLjxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIFx1ZmIwMXJzdCBsaW5lIG9mIHRoZSBpbnB1dCBcdWZiMDFsZSBjb250YWlucyB0d28gaW50ZWdlciBudW1iZXJzIG4gYW5kIG0gJm1kYXNoOyB0aGUgbnVtYmVyIG9mIGJlYWRzIGFuZCB0aGUgbnVtYmVyIG9mIHJvZHMsIHJlc3BlY3RpdmVseSAoMCAmbGU7IG4gJmxlOyAxMDAwLCAyICZsZTsgbSAmbGU7IDUwIDAwMCkuIExldCB0aGUgYmVhZHMgYmUgbnVtYmVyZWQgZnJvbSAxIHRvIG4uIFRoZSBmb2xsb3dpbmcgbSBsaW5lcyBjb250YWluIHR3byBpbnRlZ2VyIG51bWJlcnMgZWFjaCAmbWRhc2g7IHRoZSBudW1iZXJzIG9mIHRoZSBiZWFkcyBjb25uZWN0ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcm9kLiBJZiB0aGUgZW5kIG9mIHRoZSByb2QgaXMgbm90IGNvbm5lY3RlZCB0byBhbnkgYmVhZCwgMCBpcyB1c2VkLjxcL3A+XHJcblxyXG48cD5UaGUgY29uc3RydWN0aW9uIG1heSBiZSBub3QgY29ubmVjdGVkIChpLmUuIGl0IGNhbiBjb25zaXN0IG9mIHNldmVyYWwgcGllY2VzKS4gVGhlcmUgY2FuIGJlIGJlYWRzIHRoYXQgaGF2ZSBvbmx5IG9uZSByb2Qgc29sZGVyZWQgaW50byBpdC4gVGhlc2UgYmVhZHMgbmVlZCBub3QgYmUgdW5zb2xkZXJlZCBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgZW5kIG9mIHRoZSByb2QgaXMgc29sZGVyZWQgdG8gYW5vdGhlciBvbmUuPFwvcD5cclxuXHJcbjxwPlRoZXJlIGNhbiBhbHNvIGJlIGJlYWRzIHRoYXQgaGF2ZSBubyByb2RzIHNvbGRlcmVkIGludG8gaXQuIFNpbmNlIFBldGVyIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiByb2RzLCB0aGVzZSBiZWFkcyBuZWVkIG5vdCBiZSBzb2xkZXJlZFwvdW5zb2xkZXJlZC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5PdXRwdXQgb25lIGludGVnZXIgbnVtYmVyICZtZGFzaDsgdGhlIG51bWJlciBvZiBvcGVyYXRpb25zIFBldGVyIG5lZWRzIHRvIGNyZWF0ZSB0aGUgZnJhbWUgZnJvbSB0aGUgY29uc3RydWN0aW9uIGRlc2NyaWJlZCBpbiB0aGUgaW5wdXQgXHVmYjAxbGUuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d