Sunday 7 January 2024

UEARG 2023 Ringing Report

UEARG ringing report 2023

Another year of great effort at our Suffolk farmland site (led by one of our groups trainers James Cracknell and his ringers in the area) kept our numbers up this year, alongside a fair bit of nest box work and ongoing colour ringing projects in the Norwich area. UEARG goes back much further, but here’s a look at totals over the last few years:

2023 saw us collect 8684 records of 5736 unique individuals consisting of 4772 birds ringed, 2892 retraps/controls, and 1003 sightings.

It was a reasonably diverse year with a total of 55 species recorded, 51 of which were ringed but it was down on recent years. We have now ringed 104 species since 2015.

Unsurprisingly, Blue Tits romp home and take the top spot as our most ringed species once again with ease.

Species New Other Retraps Sightings Total Total_2022
Blue Tit 1465 2 996 0 2463 2830
Great Tit 503 1 516 0 1020 1109
Yellowhammer 605 1 262 0 868 947
Mute Swan 32 0 17 598 647 612
Dunnock 189 2 230 0 421 546
Black-headed Gull 9 0 0 388 397 296
Greenfinch 253 0 115 0 368 855
Goldfinch 233 0 118 0 351 640
Blackbird 179 2 121 0 302 439
Robin 133 0 160 0 293 377
Chaffinch 192 0 60 0 252 395
Linnet 213 0 36 0 249 14
Long-tailed Tit 118 0 123 0 241 240
Reed Bunting 87 0 19 0 106 42
Wren 72 0 32 0 104 116
Blackcap 83 0 5 0 88 146
House Sparrow 49 0 13 0 62 146
Starling 61 0 0 0 61 32
Chiffchaff 43 0 12 0 55 76
Coal Tit 20 0 12 0 32 24
Lesser Whitethroat 25 0 3 0 28 15
Swift 25 0 1 0 26 2
Whitethroat 25 0 1 0 26 21
Song Thrush 17 0 7 0 24 8
Goldcrest 16 1 7 0 24 30
Woodpigeon 20 0 2 0 22 39
Great Spotted Woodpecker 14 0 8 0 22 20
Swallow 18 0 0 0 18 19
Mallard 0 0 0 12 12 28
Redwing 8 0 2 0 10 25
Mistle Thrush 9 0 0 0 9 0
Marsh Tit 4 0 5 0 9 3
Treecreeper 6 0 2 0 8 5
Lesser Redpoll 6 0 1 0 7 0
Barn Owl 6 0 0 0 6 13
Nuthatch 5 0 0 0 5 0
Tawny Owl 4 0 1 0 5 0
Collared Dove 3 0 2 0 5 11
Greylag Goose 1 0 0 4 5 65
Brambling 3 0 1 0 4 83
Rook 3 1 0 0 4 4
Kestrel 1 2 1 0 4 9
Common Gull 2 0 0 1 3 5
Bullfinch 2 0 0 0 2 8
Fieldfare 2 0 0 0 2 1
Moorhen 2 0 0 0 2 1
Carrion Crow 1 1 0 0 2 0
Herring Gull 1 1 0 0 2 4
Jackdaw 0 1 1 0 2 0
Garden Warbler 1 0 0 0 1 0
Lesser Black-backed Gull (fuscus) 1 0 0 0 1 0
Reed Warbler 1 0 0 0 1 12
Siskin 1 0 0 0 1 1
Kittiwake 0 1 0 0 1 0
Lesser Black-backed Gull 0 1 0 0 1 0
Total: 4772 17 2892 1003 8684 10314

Ringing sites

This year we had records from about 66 sites, but the vast majority of records come from Brewery Farm and a handful of other sites. Brewery Farm is (no surprise) farmland, Charter Wood & UEA Campus are primarily feeder sites with nestboxes.

Colour Ringing Projects

The group continued with 2 colour-ringing projects this year to improve on the scientific outputs of our work (Mute Swan and Black-headed Gull). The most prolific of these projects continues to be the Norwich Swan Project, which has seen us colour ring another 33 Mute Swans across Norwich and generate 598 sightings this year. We have also had some success with Black-headed Gulls this year with 9 colour-ringed, and 388 sightings. Please keep an eye out for any colour-ringed birds and report sightings, however menial you think they may be!

Swan sightings can be reported at: https://stephenvickers.shinyapps.io/swansubapp/

Black-headed Gull, Barnacle Goose, Greylag Goose, Moorhen, & Coot sightings can be reported at: https://waterbirdcolourmarking.shinyapps.io/sightings2/

2023 Swan movements:

2023 Black-headed Gull movements:

Controls and Recoveries

Birds we encountered have gone, or have come from, a nice spread of sites this year:

Highlights

  • Three Mistle Thrush nests and nine chicks ringed this year was a great haul, all from Charter Wood

Many thanks to all UEARG members that helped out this year, with particular thanks to our group leader Professor Iain Barr. Here’s hoping for a great year of ringing in 2024!

LS0tCnRpdGxlOiAiVUVBUkcgcmluZ2luZyByZXBvcnQgMjAyMyIKYXV0aG9yOiBTdGVwaGVuIFZpY2tlcnMKZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIgJVknKWAiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRlcHRoOiA0CiAgICBudW1iZXJfc2VjdGlvbnM6IG5vCiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogbm8Kc3VidGl0bGU6IApsaW5rLWNpdGF0aW9uczogeWVzCmFsd2F5c19hbGxvd19odG1sOiB0cnVlCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGUgPSBUUlVFLCBlY2hvPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoCgltZXNzYWdlID0gRkFMU0UsCgl3YXJuaW5nID0gRkFMU0UsCgljYWNoZSA9IFRSVUUsCgl0aWR5ID0gVFJVRSkKYGBgCgpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgZWNobz1GQUxTRX0KcGFjbWFuOjpwX2xvYWQodGlkeXIsCiAgICAgICAgICAgICAgIGdncGxvdDIsCiAgICAgICAgICAgICAgIGRwbHlyLAogICAgICAgICAgICAgICBwbHlyLAogICAgICAgICAgICAgICBsdWJyaWRhdGUsCiAgICAgICAgICAgICAgIGZvcm1hdFIsCiAgICAgICAgICAgICAgIHBhbmRlciwKICAgICAgICAgICAgICAgZ2dwdWJyLAogICAgICAgICAgICAgICBrYWJsZUV4dHJhLAogICAgICAgICAgICAgICBzY2ljbywKICAgICAgICAgICAgICAgY293cGxvdCwKICAgICAgICAgICAgICAgc3RyaW5nciwKICAgICAgICAgICAgICAgZ2dzY2kpCm9wdGlvbnMoc2NpcGVuPTk5OTk5OTk5LCBkcGx5ci5zdW1tYXJpc2UuaW5mb3JtID0gRkFMU0UpCmBgYAoKYGBge3IgZWNobz1GQUxTRX0Kc2V0d2QoIn4vRG93bmxvYWRzIikKZGF0YSA8LSByZWFkLmNzdignRGF0YS5jc3YnKSAjIGNoYW5nZSB0byB3aGF0ZXZlciB5b3VyIERlbU9uIG91dHB1dCBmaWxlIGlzIGNhbGxlZApkYXRhJHZpc2l0X2RhdGUgPC0gZG15KGRhdGEkdmlzaXRfZGF0ZSkKZGF0YSRtb250aCA8LSBtb250aChkYXRhJHZpc2l0X2RhdGUpCmRhdGEkeWVhciA8LSB5ZWFyKGRhdGEkdmlzaXRfZGF0ZSkKZGF0YTIgPC0gZGF0YSAlPiUgZmlsdGVyKHllYXIgPT0gMjAyMykgJT4lIG11dGF0ZShyZWNvcmRfdHlwZTIgPSBjYXNlX3doZW4ocmVjb3JkX3R5cGUgPT0gJ04nIH4gJ05ldycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZGluZ19jb25kaXRpb24gPT0gOCB+ICdSZXRyYXBzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kaW5nX2NvbmRpdGlvbiAlaW4lIGMoNzksIDg5KSB+ICdTaWdodGluZ3MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAnT3RoZXInKSkgJT4lIGdyb3VwX2J5KG1vbnRoLCByZWNvcmRfdHlwZTIpICU+JSBkcGx5cjo6c3VtbWFyaXNlKFRvdGFsID0gbigpKSAlPiUgdW5ncm91cCgpICU+JSBjb21wbGV0ZShtb250aCwgcmVjb3JkX3R5cGUyLCBmaWxsPWxpc3QoVG90YWwgPSAwKSkKZGF0YTIkcmVjb3JkX3R5cGUyIDwtIGZhY3RvcihkYXRhMiRyZWNvcmRfdHlwZTIsIGxldmVscyA9IGMoJ090aGVyJywnU2lnaHRpbmdzJywnUmV0cmFwcycsJ05ldycpKQoKYGBgCgpBbm90aGVyIHllYXIgb2YgZ3JlYXQgZWZmb3J0IGF0IG91ciBTdWZmb2xrIGZhcm1sYW5kIHNpdGUgKGxlZCBieSBvbmUgb2Ygb3VyIGdyb3VwcyB0cmFpbmVycyBKYW1lcyBDcmFja25lbGwgYW5kIGhpcyByaW5nZXJzIGluIHRoZSBhcmVhKSBrZXB0IG91ciBudW1iZXJzIHVwIHRoaXMgeWVhciwgYWxvbmdzaWRlIGEgZmFpciBiaXQgb2YgbmVzdCBib3ggd29yayBhbmQgb25nb2luZyBjb2xvdXIgcmluZ2luZyBwcm9qZWN0cyBpbiB0aGUgTm9yd2ljaCBhcmVhLiBVRUFSRyBnb2VzIGJhY2sgbXVjaCBmdXJ0aGVyLCBidXQgaGVyZSdzIGEgbG9vayBhdCB0b3RhbHMgb3ZlciB0aGUgbGFzdCBmZXcgeWVhcnM6CgpgYGB7ciBlY2hvPUZBTFNFfQpkYXRhX3llYXJzIDwtIGRhdGEgJT4lIG11dGF0ZShyZWNvcmRfdHlwZTIgPSBjYXNlX3doZW4ocmVjb3JkX3R5cGUgPT0gJ04nIH4gJ05ldycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZGluZ19jb25kaXRpb24gPT0gOCB+ICdSZXRyYXBzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kaW5nX2NvbmRpdGlvbiAlaW4lIGMoNzksIDg5KSB+ICdTaWdodGluZ3MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAnT3RoZXInKSkgJT4lIGdyb3VwX2J5KHllYXIsIHJlY29yZF90eXBlMikgJT4lIGRwbHlyOjpzdW1tYXJpc2UoVG90YWwgPSBuKCkpICU+JSB1bmdyb3VwKCkgJT4lIGNvbXBsZXRlKHllYXIsIHJlY29yZF90eXBlMiwgZmlsbD1saXN0KFRvdGFsID0gMCkpCmRhdGFfeWVhcnMkcmVjb3JkX3R5cGUyIDwtIGZhY3RvcihkYXRhX3llYXJzJHJlY29yZF90eXBlMiwgbGV2ZWxzID0gYygnT3RoZXInLCdTaWdodGluZ3MnLCdSZXRyYXBzJywnTmV3JykpCgpnZ3Bsb3QoZGF0YV95ZWFycywgYWVzKHg9eWVhciwgeT1Ub3RhbCwgY29sb3VyPXJlY29yZF90eXBlMikpICsKICBnZW9tX2xpbmUoKSArCiAgZ2VvbV9sYWJlbChhZXMobGFiZWw9VG90YWwpLCBzaG93LmxlZ2VuZD1GKSArCiAgI3NjYWxlX3hfY29udGludW91cyhsaW1pdHM9YygxLDEyKSxicmVha3M9c2VxKDEsMTIpLCBsYWJlbHM9YygnSmFuJywgJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYycpKSArCiAgdGhlbWVfYncoKSArCiAgc2NhbGVfY29sb3VyX25wZygpICsKICBsYWJzKHRpdGxlID0gJ1VFQVJHIHllYXJseSByaW5naW5nIGVuY291bnRlcnMnKSArCiAgZ3VpZGVzKGNvbG91cj0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3Qoc2l6ZT0yKSkpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJywgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwgbGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpKQoKYGBgCgoyMDIzIHNhdyB1cyBjb2xsZWN0ICoqYHIgbnJvdyhkYXRhW2RhdGEkeWVhcj09MjAyMyxdKWAgcmVjb3JkcyoqIG9mICoqYHIgbGVuZ3RoKHVuaXF1ZShkYXRhW2RhdGEkeWVhcj09MjAyMyxdJHJpbmdfbm8pKWAgdW5pcXVlIGluZGl2aWR1YWxzKiogY29uc2lzdGluZyBvZiAqKmByIG5yb3coZGF0YVtkYXRhJHJlY29yZF90eXBlID09ICdOJyAmIGRhdGEkeWVhcj09MjAyMyxdKWAgYmlyZHMgcmluZ2VkKiosICoqYHIgbnJvdyhkYXRhW2RhdGEkZmluZGluZ19jb25kaXRpb24gPT0gOCAmIGRhdGEkeWVhciA9PSAyMDIzLF0pYCByZXRyYXBzL2NvbnRyb2xzKiosIGFuZCAqKmByIG5yb3coZGF0YVtkYXRhJGZpbmRpbmdfY29uZGl0aW9uICVpbiUgYyg3OSwgODkpICYgZGF0YSR5ZWFyID09IDIwMjMsXSlgIHNpZ2h0aW5ncyoqLiAKCkl0IHdhcyBhIHJlYXNvbmFibHkgZGl2ZXJzZSB5ZWFyIHdpdGggYSB0b3RhbCBvZiAqKmByIGxlbmd0aCh1bmlxdWUoZGF0YVtkYXRhJHllYXI9PTIwMjMsXSRzcGVjaWVzX25hbWUpKWAgc3BlY2llcyByZWNvcmRlZCoqLCBgciBsZW5ndGgodW5pcXVlKGRhdGFbZGF0YSRyZWNvcmRfdHlwZSA9PSAnTicgJiBkYXRhJHllYXIgPT0yMDIzLF0kc3BlY2llc19uYW1lKSlgIG9mIHdoaWNoIHdlcmUgcmluZ2VkIGJ1dCBpdCB3YXMgZG93biBvbiByZWNlbnQgeWVhcnMuIFdlIGhhdmUgbm93IHJpbmdlZCAqKmByIGxlbmd0aCh1bmlxdWUoZGF0YSRzcGVjaWVzX25hbWUpKWAqKiBzcGVjaWVzIHNpbmNlIDIwMTUuIAoKYGBge3IgZWNobz1GQUxTRX0KZGF0YV9zcGVjcyA8LSBkYXRhLmZyYW1lKFllYXIgPSBzZXEoMjAxNSwgMjAyMywgMSksIFNwZWNpZXMgPSBjKGxlbmd0aCh1bmlxdWUoZGF0YVtkYXRhJHllYXI9PTIwMTUsXSRzcGVjaWVzX25hbWUpKSwKICBsZW5ndGgodW5pcXVlKGRhdGFbZGF0YSR5ZWFyPT0yMDE2LF0kc3BlY2llc19uYW1lKSksCiAgbGVuZ3RoKHVuaXF1ZShkYXRhW2RhdGEkeWVhcj09MjAxNyxdJHNwZWNpZXNfbmFtZSkpLAogIGxlbmd0aCh1bmlxdWUoZGF0YVtkYXRhJHllYXI9PTIwMTgsXSRzcGVjaWVzX25hbWUpKSwKICBsZW5ndGgodW5pcXVlKGRhdGFbZGF0YSR5ZWFyPT0yMDE5LF0kc3BlY2llc19uYW1lKSksCiAgbGVuZ3RoKHVuaXF1ZShkYXRhW2RhdGEkeWVhcj09MjAyMCxdJHNwZWNpZXNfbmFtZSkpLAogIGxlbmd0aCh1bmlxdWUoZGF0YVtkYXRhJHllYXI9PTIwMjEsXSRzcGVjaWVzX25hbWUpKSwKICBsZW5ndGgodW5pcXVlKGRhdGFbZGF0YSR5ZWFyPT0yMDIyLF0kc3BlY2llc19uYW1lKSksCiAgbGVuZ3RoKHVuaXF1ZShkYXRhW2RhdGEkeWVhcj09MjAyMyxdJHNwZWNpZXNfbmFtZSkpKSkKCmdncGxvdChkYXRhX3NwZWNzLCBhZXMoeD1ZZWFyLCB5PVNwZWNpZXMpKSArCiAgZ2VvbV9saW5lKCkgKwogIGdlb21fbGFiZWwoYWVzKGxhYmVsPVNwZWNpZXMpLCBzaG93LmxlZ2VuZD1GKSArCiAgI3NjYWxlX3hfY29udGludW91cyhsaW1pdHM9YygxLDEyKSxicmVha3M9c2VxKDEsMTIpLCBsYWJlbHM9YygnSmFuJywgJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYycpKSArCiAgdGhlbWVfYncoKSArCiAgc2NhbGVfY29sb3VyX25wZygpICsKICBsYWJzKHRpdGxlID0gJ1VFQVJHIHllYXJseSBzcGVjaWVzIHRvdGFscycpICsKICBndWlkZXMoY29sb3VyPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplPTIpKSkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICdib3R0b20nLCBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCkpCgpgYGAKCgpVbnN1cnByaXNpbmdseSwgKipCbHVlIFRpdHMqKiByb21wIGhvbWUgYW5kIHRha2UgdGhlIHRvcCBzcG90IGFzIG91ciBtb3N0IHJpbmdlZCBzcGVjaWVzIG9uY2UgYWdhaW4gd2l0aCBlYXNlLgoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJ30KZ2dwbG90KGRhdGEyLCBhZXMoeD1tb250aCwgeT1Ub3RhbCwgY29sb3VyPXJlY29yZF90eXBlMikpICsKICBnZW9tX2xpbmUoKSArCiAgZ2VvbV9sYWJlbChhZXMobGFiZWw9VG90YWwpLCBzaG93LmxlZ2VuZD1GKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cz1jKDEsMTIpLGJyZWFrcz1zZXEoMSwxMiksIGxhYmVscz1jKCdKYW4nLCAnRmViJywnTWFyJywnQXByJywnTWF5JywnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2N0JywnTm92JywnRGVjJykpICsKICB0aGVtZV9idygpICsKICBzY2FsZV9jb2xvdXJfbnBnKCkgKwogIGxhYnModGl0bGUgPSAnMjAyMyBtb250aGx5IHJpbmdpbmcgZW5jb3VudGVycycpICsKICBndWlkZXMoY29sb3VyPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplPTIpKSkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICdib3R0b20nLCBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCkpCmBgYAoKYGBge3IgZWNobz1GQUxTRX0KY2FwdHVyZXMgPC0gZGF0YSAlPiUgZmlsdGVyKHllYXI9PTIwMjMpICU+JSBtdXRhdGUocmVjb3JkX3R5cGUyID0gY2FzZV93aGVuKHJlY29yZF90eXBlID09ICdOJyB+ICdOZXcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRpbmdfY29uZGl0aW9uID09IDggfiAnUmV0cmFwcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZGluZ19jb25kaXRpb24gJWluJSBjKDc5LCA4OSkgfiAnU2lnaHRpbmdzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gJ090aGVyJykpICU+JSBncm91cF9ieShzcGVjaWVzX25hbWUsIHJlY29yZF90eXBlMikgJT4lICAgZHBseXI6OnN1bW1hcmlzZShUb3RhbCA9IG4oKSkgJT4lIHNwcmVhZChyZWNvcmRfdHlwZTIsIFRvdGFsKSAlPiUgbXV0YXRlKFRvdGFsID0gc3VtKE5ldyxSZXRyYXBzLCBTaWdodGluZ3MsIE90aGVyLCBuYS5ybT1UKSkgJT4lIGFycmFuZ2UoLVRvdGFsLCAtTmV3KSAlPiUgdW5ncm91cCgpCm5hbWVzKGNhcHR1cmVzKVsxXSA8LSAnU3BlY2llcycKCmlmKG5yb3coZGF0YVtkYXRhJHllYXI9PTIwMjIsXSkgPiAwKXsKY2FwdHVyZXMyMDIyIDwtIGRhdGEgJT4lIGZpbHRlcih5ZWFyPT0yMDIyKSAlPiUgbXV0YXRlKHJlY29yZF90eXBlMiA9IGNhc2Vfd2hlbihyZWNvcmRfdHlwZSA9PSAnTicgfiAnTmV3JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kaW5nX2NvbmRpdGlvbiA9PSA4IH4gJ1JldHJhcHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRpbmdfY29uZGl0aW9uICVpbiUgYyg3OSwgODkpIH4gJ1NpZ2h0aW5ncycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICdPdGhlcicpKSAlPiUgZ3JvdXBfYnkoc3BlY2llc19uYW1lLCByZWNvcmRfdHlwZTIpICU+JSAgIGRwbHlyOjpzdW1tYXJpc2UoVG90YWwgPSBuKCkpICU+JSBzcHJlYWQocmVjb3JkX3R5cGUyLCBUb3RhbCkgJT4lIG11dGF0ZShUb3RhbF8yMDIyID0gc3VtKE5ldyxSZXRyYXBzLCBTaWdodGluZ3MsIE90aGVyLCBuYS5ybT1UKSkKbmFtZXMoY2FwdHVyZXMyMDIyKVsxXSA8LSAnU3BlY2llcycKY2FwdHVyZXMgPC0gam9pbihjYXB0dXJlcywgY2FwdHVyZXMyMDIyW2MoJ1NwZWNpZXMnLCdUb3RhbF8yMDIyJyldKQp9Cm5ld3MgPC0gY2FwdHVyZXMkTmV3CnJldHJhcHMgPC0gY2FwdHVyZXMkUmV0cmFwcwpzaWdodGluZ3MgPC0gY2FwdHVyZXMkU2lnaHRpbmdzCm90aGVycyA8LSBjYXB0dXJlcyRPdGhlcgp0b3RhbHMgPC0gY2FwdHVyZXMkVG90YWwKCmlmKG5yb3coZGF0YVtkYXRhJHllYXI9PTIwMjIsXSkgPiAwKXsKdG90YWxzMjAyMiA8LSBjYXB0dXJlcyRUb3RhbF8yMDIyCmNhcHR1cmVzIDwtIGNhcHR1cmVzICU+JSBhZGRfcm93KFNwZWNpZXMgPSAnVG90YWw6JywgTmV3ID0gc3VtKG5ld3MsIG5hLnJtPVQpLCBSZXRyYXBzID0gc3VtKHJldHJhcHMsIG5hLnJtPVQpLCBTaWdodGluZ3MgPSBzdW0oc2lnaHRpbmdzLCBuYS5ybT1UKSwgT3RoZXIgPSBzdW0ob3RoZXJzLCBuYS5ybT1UKSwgVG90YWwgPSBzdW0odG90YWxzLCBuYS5ybT1UKSwgVG90YWxfMjAyMiA9IHN1bSh0b3RhbHMyMDIyLCBuYS5ybT1UKSl9ZWxzZXtjYXB0dXJlcyA8LSBjYXB0dXJlcyAlPiUgYWRkX3JvdyhTcGVjaWVzID0gJ1RvdGFsOicsIE5ldyA9IHN1bShuZXdzLCBuYS5ybT1UKSwgUmV0cmFwcyA9IHN1bShyZXRyYXBzLCBuYS5ybT1UKSwgU2lnaHRpbmdzID0gc3VtKHNpZ2h0aW5ncywgbmEucm09VCksIE90aGVyID0gc3VtKG90aGVycywgbmEucm09VCksIFRvdGFsID0gc3VtKHRvdGFscywgbmEucm09VCkpfQoKY2FwdHVyZXNbaXMubmEoY2FwdHVyZXMpXSA8LSAwCgpjYXB0dXJlcyRUb3RhbCA9IGNlbGxfc3BlYyhjYXB0dXJlcyRUb3RhbCwgY29sb3IgPSBpZmVsc2UoY2FwdHVyZXMkVG90YWwgPCBjYXB0dXJlcyRUb3RhbF8yMDIyLCAicmVkIiwgImRhcmtncmVlbiIpKQoKa2JsKGNhcHR1cmVzLCBlc2NhcGUgPSBGLCBkaWdpdHMgPSAwKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsImNvbmRlbnNlZCIsInJlc3BvbnNpdmUiKSwgZml4ZWRfdGhlYWQgPSBUKQoKI3RpYmJsZShjYXB0dXJlcykgJT4lIGthYmxlKCJodG1sIikgJT4lCiMgIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQpkYXRhMyA8LSBkYXRhICU+JSBmaWx0ZXIoeWVhciA9PSAyMDIzKSAlPiUgbXV0YXRlKHJlY29yZF90eXBlMiA9IGNhc2Vfd2hlbihyZWNvcmRfdHlwZSA9PSAnTicgfiAnTmV3JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfdHlwZSA9PSAnUycgfiAnUmVlbmNvdW50ZXJzJyksIGxvY19pZCA9IGNhc2Vfd2hlbihzdHJfZGV0ZWN0KGxvY19pZCwgJ0NoYXJ0ZXIgV29vZCcpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ0pheScpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ093bCBCb3ggMScpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ1dlYXRoZXJieScpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ1doaWZmbGVyJykgfiAnV2hpZmZsZXIgUm9hZCBJbmR1c3RyaWFsIEVzdGF0ZScsICAgICAgCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ0JSRVcnKSB+ICdCcmV3ZXJ5IEZhcm0nLAogICAgICAgICAgc3RyX2RldGVjdChsb2NfaWQsICdVRUEnKSB+ICdVRUEgY2FtcHVzJywKICAgICAgICAgIHN0cl9kZXRlY3QobG9jX2lkLCAnQkNQJykgfiAnQnJvYWRsYW5kIENvdW50cnkgUGFyaycsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ0NhcnJvdyBSb2FkJykgfiAnQ2Fycm93IFJvYWQnLAogICAgICAgICAgc3RyX2RldGVjdChsb2NfaWQsICdMaXZlcm1lcmUnKSB+ICdMaXZlcm1lcmUnLAogICAgICAgICAgICAgICAgICAgIFRSVUUgfiBsb2NfaWQpKSAlPiUgZ3JvdXBfYnkobG9jX2lkKSAlPiUgICBkcGx5cjo6c3VtbWFyaXNlKFRvdGFsID0gbigpKQpkYXRhMyA8LSBkYXRhMyAlPiUgYXJyYW5nZSgtVG90YWwpIAoKZGF0YTNfNSA8LSBkYXRhICU+JSBmaWx0ZXIoeWVhciA9PSAyMDIzKSAlPiUgbXV0YXRlKHJlY29yZF90eXBlMiA9IGNhc2Vfd2hlbihyZWNvcmRfdHlwZSA9PSAnTicgfiAnTmV3JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfdHlwZSA9PSAnUycgfiAnUmVlbmNvdW50ZXJzJyksIGxvY19pZCA9IGNhc2Vfd2hlbihzdHJfZGV0ZWN0KGxvY19pZCwgJ0NoYXJ0ZXIgV29vZCcpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ0pheScpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ093bCBCb3ggMScpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ1dlYXRoZXJieScpIH4gJ0NoYXJ0ZXIgV29vZCcsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ1doaWZmbGVyJykgfiAnV2hpZmZsZXIgUm9hZCBJbmR1c3RyaWFsIEVzdGF0ZScsICAgICAgCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ0JSRVcnKSB+ICdCcmV3ZXJ5IEZhcm0nLAogICAgICAgICAgc3RyX2RldGVjdChsb2NfaWQsICdVRUEnKSB+ICdVRUEgY2FtcHVzJywKICAgICAgICAgIHN0cl9kZXRlY3QobG9jX2lkLCAnQkNQJykgfiAnQnJvYWRsYW5kIENvdW50cnkgUGFyaycsCiAgICAgICAgICBzdHJfZGV0ZWN0KGxvY19pZCwgJ0NhcnJvdyBSb2FkJykgfiAnQ2Fycm93IFJvYWQnLAogICAgICAgICAgc3RyX2RldGVjdChsb2NfaWQsICdMaXZlcm1lcmUnKSB+ICdMaXZlcm1lcmUnLAogICAgICAgICAgICAgICAgICAgIFRSVUUgfiBsb2NfaWQpKSAlPiUgZ3JvdXBfYnkobG9jX2lkLCByZWNvcmRfdHlwZTIpICU+JSAgIGRwbHlyOjpzdW1tYXJpc2UoVG90YWwgPSBuKCkpCmRhdGEzXzUgPC0gZGF0YTNfNSAlPiUgZmlsdGVyKGxvY19pZCAlaW4lIGRhdGEzW2MoMTo1KSxdJGxvY19pZCkKZGF0YTNfNSRyZWNvcmRfdHlwZTIgPC0gZmFjdG9yKGRhdGEzXzUkcmVjb3JkX3R5cGUyLCBsZXZlbHM9YygnUmVlbmNvdW50ZXJzJywnTmV3JykpCmBgYAoKIyMjIFJpbmdpbmcgc2l0ZXMKClRoaXMgeWVhciB3ZSBoYWQgcmVjb3JkcyBmcm9tIGFib3V0IGByIG5yb3coZGF0YTMpYCBzaXRlcywgYnV0IHRoZSB2YXN0IG1ham9yaXR5IG9mIHJlY29yZHMgY29tZSBmcm9tIEJyZXdlcnkgRmFybSBhbmQgYSBoYW5kZnVsIG9mIG90aGVyIHNpdGVzLiBCcmV3ZXJ5IEZhcm0gaXMgKG5vIHN1cnByaXNlKSBmYXJtbGFuZCwgQ2hhcnRlciBXb29kICYgVUVBIENhbXB1cyBhcmUgcHJpbWFyaWx5IGZlZWRlciBzaXRlcyB3aXRoIG5lc3Rib3hlcy4KCmBgYHtyIGVjaG89RkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJ30KZ2dwbG90KGRhdGEzXzUsIGFlcyh4PXJlb3JkZXIobG9jX2lkLCAtVG90YWwpLCB5PVRvdGFsLCBmaWxsPXJlY29yZF90eXBlMikpICsKICBnZW9tX2JhcihzdGF0PSdpZGVudGl0eScpICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzPXNlcSgwLCA3MDAwLCAxMDAwKSkgKwogIGxhYnMoeT0nUmVjb3JkcycsIHRpdGxlID0gJzIwMjMgdG9wIDUgc2l0ZXMnLCBzdWJ0aXRsZSA9IHBhc3RlMChyb3VuZChzdW0oZGF0YTNfNSRUb3RhbCkvbnJvdyhkYXRhW2RhdGEkeWVhcj09MjAyMyxdKSoxMDAsIDEpLCclIG9mIDIwMjMgcmVjb3JkcycpKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gJ3JpZ2h0JywgYXhpcy50aXRsZS54ID0gZWxlbWVudF9ibGFuaygpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkKYGBgCgojIyMgQ29sb3VyIFJpbmdpbmcgUHJvamVjdHMKClRoZSBncm91cCBjb250aW51ZWQgd2l0aCAyIGNvbG91ci1yaW5naW5nIHByb2plY3RzIHRoaXMgeWVhciB0byBpbXByb3ZlIG9uIHRoZSBzY2llbnRpZmljIG91dHB1dHMgb2Ygb3VyIHdvcmsgKCoqTXV0ZSBTd2FuIGFuZCBCbGFjay1oZWFkZWQgR3VsbCoqKS4gVGhlIG1vc3QgcHJvbGlmaWMgb2YgdGhlc2UgcHJvamVjdHMgY29udGludWVzIHRvIGJlIHRoZSBOb3J3aWNoIFN3YW4gUHJvamVjdCwgd2hpY2ggaGFzIHNlZW4gdXMgY29sb3VyIHJpbmcgYW5vdGhlciAqKjMzKiogTXV0ZSBTd2FucyBhY3Jvc3MgTm9yd2ljaCBhbmQgZ2VuZXJhdGUgKio1OTgqKiBzaWdodGluZ3MgdGhpcyB5ZWFyLiBXZSBoYXZlIGFsc28gaGFkIHNvbWUgc3VjY2VzcyB3aXRoIEJsYWNrLWhlYWRlZCBHdWxscyB0aGlzIHllYXIgd2l0aCAqKjkqKiBjb2xvdXItcmluZ2VkLCBhbmQgKiozODgqKiBzaWdodGluZ3MuIFBsZWFzZSBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBjb2xvdXItcmluZ2VkIGJpcmRzIGFuZCByZXBvcnQgc2lnaHRpbmdzLCBob3dldmVyIG1lbmlhbCB5b3UgdGhpbmsgdGhleSBtYXkgYmUhCgoqKlN3YW4gc2lnaHRpbmdzIGNhbiBiZSByZXBvcnRlZCBhdDoqKiBodHRwczovL3N0ZXBoZW52aWNrZXJzLnNoaW55YXBwcy5pby9zd2Fuc3ViYXBwLwoKKipCbGFjay1oZWFkZWQgR3VsbCwgQmFybmFjbGUgR29vc2UsIEdyZXlsYWcgR29vc2UsIE1vb3JoZW4sICYgQ29vdCBzaWdodGluZ3MgY2FuIGJlIHJlcG9ydGVkIGF0OioqIGh0dHBzOi8vd2F0ZXJiaXJkY29sb3VybWFya2luZy5zaGlueWFwcHMuaW8vc2lnaHRpbmdzMi8KCjIwMjMgU3dhbiBtb3ZlbWVudHM6IAoKMjAyMyBCbGFjay1oZWFkZWQgR3VsbCBtb3ZlbWVudHM6CgojIyMgQ29udHJvbHMgYW5kIFJlY292ZXJpZXMKCkJpcmRzIHdlIGVuY291bnRlcmVkIGhhdmUgZ29uZSwgb3IgaGF2ZSBjb21lIGZyb20sIGEgbmljZSBzcHJlYWQgb2Ygc2l0ZXMgdGhpcyB5ZWFyOgoKIyMjIEhpZ2hsaWdodHMKCiogVGhyZWUgTWlzdGxlIFRocnVzaCBuZXN0cyBhbmQgbmluZSBjaGlja3MgcmluZ2VkIHRoaXMgeWVhciB3YXMgYSBncmVhdCBoYXVsLCBhbGwgZnJvbSBDaGFydGVyIFdvb2QKCk1hbnkgdGhhbmtzIHRvIGFsbCBVRUFSRyBtZW1iZXJzIHRoYXQgaGVscGVkIG91dCB0aGlzIHllYXIsIHdpdGggcGFydGljdWxhciB0aGFua3MgdG8gb3VyIGdyb3VwIGxlYWRlciBQcm9mZXNzb3IgSWFpbiBCYXJyLiBIZXJlJ3MgaG9waW5nIGZvciBhIGdyZWF0IHllYXIgb2YgcmluZ2luZyBpbiAyMDI0IQ==