█▀▀▀▀
▓ ████████ ░
░ ████████ ▓
█▀▀▀ ████████ ▀▀▀▀ ▀▀▓
▓ ███████████▓████████████ ▒
████████ ▄ ░ ██████████▓▒▓███████████ ░
████████ █▓▄ ▄▓█▄▄ ████████▓▀ ░ ▀▀▀▓███████
████████▌▄ ████████ ▀▀▀▀ ▄▓███████ ░ ▄▄▄▄ ▄█▄ ▄██▄ ▓▄▄ ▄ ████████
▀▀▀█████▌█ ██████████████▄ ▄▓███████▀▄▄ ▓▐████████ ░ ████████
███████▌█ █████████████▌█▓▄ ▄▓█████████████▓▄▄ ░ ▀█████▀ ▐▄▄█████▌████████
███████▌ ▄████████▓████▌█▀▀▀ ▀▀████████████████▄█▄▀█▀ ▄▌░███████▌████████
███████▓▀▄████████▓▀▄████ █ ████████▄▄█▀████████████████ ▄██▌▓████████████████
▓█████▄█████████▀ ▓██████ ▀ █████▄ ▐██████▌▀▓████████▓██████▌▀██████████▀▀▀▀▀▀
▀▀▓████████▓▀ ████████▄ ███████▐██████▌ ▀██████▀███████ ▄▀██▓████▄ ▀██▀
▐▄▄ ▀▀▓███████▄▄█▀▀▓██████▄▄▐▀▓██▐███████ ▄████▓▀ ███████ ▓ ▀░██████▄▀
▐███░▄▄ ▐████████ ░░ ▀▀▓█████████ ███████▄██▓██▀ ▀▀█████ ░ ▀▀▓████░▄
▄▄▄▄▄█▓██ ▐████████▄▄▄▄▄▄▄ ▀▀██████ ▀▀█▀███▀▀███▄ ▄▐████████▌▄▄▄░████████▓██
▐████████ ▓███████▓██████▓ ██▄▓███████████▌██████▄▀ ████████▌███▒████▀▀▀
████████ ▓█████▄▄ ▄▄████▌ █████▐█████████▌████████▄████████▓███▓████ ███████
███▀▀▀▀▀▐███ ███ ██████████████ █████████▌ ▀██▓█████▀▀▀ ▐███████▌ ███████
▄▄████ ▐█ █▄▄▄▄▄▄ ▀▀▀▀▀▓██ ███▌▀▀▀ ▄▄█▄ ▀░███████▄ ▄██████████▓███████▀▀
▀▓▀▀▀ ▐███░ ███████▌▐▀█████▄▄▄▄▀▄▄▄██▀ ▀▓███▄ ▀███████████▌▐█▄▄▀▀▀▀▀▀▀█████
▓███ ███████▌██▄▀▀▀▀▓████▄▀▓██ ▓ ▀▓███▄ ▀▀████████▌▓█████████▄▄▄▄▄
▀▀▀▀▀▀▀▀▀▐ ██ ███ ▀▀ ▓█▓ ▀▀▀ ▄██████████ ▀▀▀▀▓███▀
▀▓█▀▀▀▀▀▀▀▀▀▀███ ░░ ▀▀█▓█████▀▀▄▄▓▄▄ ▀▀███████ ▓▄▄
▀ ████████ ▀▀▀ ▄▄▄▓▓▌ ▄██▀██▄ ▀▀▓██▄ ▀▀███ ████▓▄
▄▄▄████████▄▄▄▄▓▓█████▀▀ ▐▓▀ █▄▀▓█ ▀ ▄██▄▄ ▀ ▀█▀███▌
░▄▄▄▄██████▀██████▓██████████████ ▀ ▄████▄██▄▄▄▓██ ██████▀ ▄█████ ███▄▄▄▄▄
██▓█████▓███████████░▓█████████████ ▐████████████████░█████▌ ▄▓██▀███▌████████
▓███████░██████████████████ █▓▓▀▀▀ ▐██████▓███▌█████▓█████ ▄███▀▐████▌███████▌
░▓█████▀ ███▀▀▀█████▌▀▓█████▄ ▄▓█ ▐██████▒███████▀▀▀▐██████▓▀ ▐████▌█████▄
▀██████▄ ▄▓▐██████▄ ▀▓██████ █▀▀ ███████░▀███████▄ ░█████▀▄ ▄████▓███████▌
▀▓██████ ▀▀▐█████▓▓ ▄▄██████ ▄ ███████▄▐▄▀██████▓▓▄███▄█████████░███████▌
▄▄██████ ▄█████████████▌ ███▄▄███████ ▀▓███ ▄▄▄▄▄▄▄▄ ▀▀██▓▀ ███████
░███████▌ █████▐███████████ ▐████████████████ ▐█ █████████▓▄▄ ▐███████
▌▄▄█████ ▐█████▐█████▐██████▄█████▄███████▀███▌ ██ ▀▀░▓█████████▓▄▐███████
▐███████▄█████▌▐█████ ▀█████████ █▀███████▓████▄██████▓████████████████████
▀▓█████████▓▀▄██████ █▄▄▀▀██▓▀▀ ▓▄▀█████▀▓████████▐███████▀▓█████▀▀▀████▌
▀▀▓░░▀▀▄▄███████ ▀ ▄▄▄▄█████ ▄▀█▄▀███▐▄ ▀▀░░▓▀▀▐███████ ▄▄▀▀ ░▄ ▀█▌
▄▀ ▄ ▀▄ ████████████████▓███ ██ ▓█▄▄█ ▀██▄▄▄██▀▄▄▄▄▄▄▄▄ ██▀ ▄▀ ▄ ▀▄ ▌
▐▌ ■░■ ▐▌ ████████████████████ ███ ▀▓██ ▀▀▓▀▀▄██████▓▀ ▀ ▐▌ ■░■ ▐▌
▀▄ ■ ▄▀ ███████▓▓▀▀▀▀▀▓▓▄▄▄▄ ▀▓ ▀▀▀▀▀▀▀▀ ▀▄ ■ ▄▀
▄ ▀ ▐ ▓ ▌ ▀ ▄ ▄▄▄▄▄███████████▀ ▄■▀▀▀▀▀■▄ ▄ ▀ ▐ ▓ ▌ ▀ ▄
■ ▐ ▒ ▌ ■ ▀████▓▓▓░░░▀▀▀ ▄▀ KYRIE ▀▄ ■ ▄ ▐ ▒ ▌ ■
▌ ▄▀▐ ░ ▌▀▄ ▐ ▀▀ ▄▄▄▄▄▄▄▌ ELEISON ▐▄▄▄▄▄▄▄░ ▌ ▀▄▀▐ ░ ▌▀▄ ▐
▀▄ ▄▄▓▐ ░ ▌▓▄▄ ▄▀▀▀▄ ▄▄▓▀▀▀ ▄ ▄ ▄▀▄ ▄▄▀▀▀▄▄ ▄▀▄ ▄ ▄ ▀▀▀▓▄▄ ▄▀▀▀▄ ▀▄▓▐ ░ ▌▓▄▄ ▄▀
▐▀▀▀▀▄▀▄▀▀▀▀▐ ▓▀ ▐▌ ▄ ▀ ▄▄▄▄▄▄█▀░ ░▀█▄▄▄▄▄▄ ▀ ▄ ▐▌ ▀▓ ▌ ▀▀▀▄▀▄▀▀▀▀▌
▄ ▀▀▀▓ ▀ ▀▀▀ ▀▄▄▄▀ ▓██ █▓▀▀ ▀▌▄ ▄▐▀ ▀▀▓█ ██▓ ▀▄▄▄▀ ▐▀▀ ▀ ▓▀▀▀ ▄
█▄ ▀▐ ▄██▄ ▄ ▄▄█▀ ▀▀▀▀▀ ▀█▄▄ ▄ ▄▄██▄ ▌▀ ▄█
▓█▓▄ █▄▀▀█▌ ▄ ▄█▓▀ ▀▓█▄ ▄ ▀█▀▀▄█ ▄▓█▓
▀▓█▓▄▄▓████▄▄▄██▀▀ RELEASE INFORMATION ▀▀██▄ ▄████▓▄▄▓█▓▀
▀▓████▀▓█▀ ▀▓▀ ▀▓ ▀█▓▀████▓▀
█ ▀█▓▓██▄▄██ TITLE: How to Write Fast C sharp Code. ██▄▄██▓▓█▀ █
█▀ ▐█▒▓██░██ ██░██▓▒█▌ ▀█
█▀ █▓███▒█▌ ▐█▒███▓█ ▀█
█▀ ▐█▓███▓█░ ░█▓███▓█▌ ▀█
█▀ ▐██████▌ PUBLISHER..........: UDEMY ▐██████▌ ▀█
█▀ ▀▀████▓ LINK...............: http://is.gd/uWkYqZ ▓████▀▀ ▀█
▌ ▓██▌▄ ▀▀ AUTHOR.............: Mark Farragher ▀▀ ▄▐██▓ ▐
▌▐███░▒███▌ LEVEL..............: Intermediate ▐███▒░███▌▐
▌ ████▓████ RUNTIME............: 2.5 hours ████▓████ ▐
█ ▐▓█▀█████░ LANGUAGE...........: ENGLISH ░█████▀█▓▌ █
█▀ ▀▄█▄▄▀▀█▓ RELEASE TYPE.......: RETAIL ▓█▀▀▄▄█▄▀ ▀█
█▀▄ ▄▀███▓▄ RELEASE FORMAT.....: ISO ▄▓███▀▄ ▄▀█
█▀█ ▐▓▄▀████ STORE DATE:........: 2015.03.03 ████▀▄▓▌ █▀█
█▀█ ▐█▌▓██▓ RELEASE DATE.......: 2015.03.09 ▓██▓▐█▌ █▀█
▓▀█ ▓▌░██▓ ISO SIZE...........: 839,567,360 ▓██░▐▓ █▀▓
▒▀█ █ ▓█▓ ISO CHECKSUM.......: D99E845A ▓█▓ █ █▀▒
░ █ ▌░██ DISKCOUNT..........: 17 * 50MB ██░▐ █ ░
▓█▌▓█▌ SAVED MONEY........: YOU DID! ▐█▓▐█▓
░ ▒█▐██ DISKNAME...........: keiso_uwfcsc ██▌█▒ ░
░▀ ▀ ▀ ▀░
░ ░
░▄░ ░ ██ ▄▄▄▄▄▓█▀█▀ ▀ ░ ▀ ▀█▀█▓▄▄▄▄▄ ██ ░ ░▄░
▒▄▒ ▓░ ████████ ▄▄▓█▌▀▀█▄▄▀▀ ▀▀▄▄█▀▀▐█▓▄▄ ████████ ░▓ ▒▄▒
▌▓▄▓▀ ▀▀▄ ██ ▄▄▐██▀ ▄██▀ ▀██▄ ▀██▌▄▄ ██ ▄▀▀ ▀▓▄▓▐
█▀ ▓░ ▄ █▄▌██ ▄ ▀ ▀█▌▐▓▀ TUTORIAL ▀▓▌▐█▀ ▀ ▄ ██▐▄█ ▄ ░▓ ▀█
▄▀ ▄ ▀▄ ▀▌▓█ ▀▄▄ ▀ ▀▄ ▄▀ ▀ ▄▄▀ █▓▐▀ ▄▀ ▄ ▀▄
▐▌ ■░■ ▐▌ ▄▌░▓ ▄██ ▀ ▓ ▓ ▀ ██▄ ▓░▐▄ ▐▌ ■░■ ▐▌
▀▄ ■ ▄▀ ▀▀▀▀ ▄▄█▀▀▀ ▀ ▀ ▀ ▀ ▀▀▀█▄▄ ▀▀▀▀ ▀▄ ■ ▄▀
█▀█ ▄▓ ▄ █▀▀ ▀▀█ ▄ ▓▄ █▀█
█▀█ ▄▓ ▄ ▐▌ ▐▌ ▄ ▓▄ █▀█
█▀█ █▓ ▄▓▄▀ Become a C# Pro - How to Write Fast Code ▀▄▓▄ ▓█ █▀█
█▀█ ▓▒ ▒ ▒ ▒▓ █▀█
█▀█ ▒░ ░ About the Course ░ ░▒ █▀█
▓▀█ ▒░ ░▒ █▀▓
▒▀█ ░▓ How to Write Fast Code is a comprehensive set of ▓░ █▀▒
░ █ ▒ video lessons that take you behind the scenes of ▒ █ ░
▓ ░ the best practices and tactics of seasoned C# ░ ▓
░ ▒ ░ professionals. ░ ▒ ░
░ ░
░ Learn how to write fast C# code. This course is geared towards ░
░ beginner and intermediate programmers. ░
░ ░
░ * A review of .NET Framework fundamentals ░
░ * ?Low-hanging fruit? optimisations: small changes to make your ░
░ code 100-1000x faster ░
░ * Advanced optimisations: learn all about using ░
░ inlining, pointers and unsafe code ░
░ * Learn how to read Common Intermediate Language ░
░ ░
░ This course gets continuously updated with new ░
░ performance optimisations in C#. ░
░ ░
░ Note: The price will go up as new lectures are added. ░
░ If you get the course now, you'll get all the new lectures for ░
░ free! ░
░ ░
░ I am Mark Farragher, certified Microsoft Trainer with 13+ years of ░
░ experience with C# and the .NET Framework. I have learned many ░
░ programming tricks in the past decade, and in this course I will ░
░ break them down for you. I will teach you how optimisation ░
░ techniques work, how much they speed up your code, and if the ░
░ improvements are actually worth the trouble. ░
░ ░
░ You may have a variety of goals before coming into ░
░ this course ? to deepen your knowledge of C#, learn ░
░ how to speed up your code, or dive deep into the ░
░ .NET Framework internals and gain an understanding ░
░ of memory management and intermediate language ░
░ internals. ░
░ ░
░ In this course you will learn ░
░ ░
░ Everything you need to know to optimise your C# code - memory ░
░ management, the .NET type system, the correct use of strings ░
░ and arrays, and more! We'll focus on several easy-to-fix ░
░ performance bottlenecks in your code that are holding you ░
░ back. We'll dig into: ░
░ ░
░ Fundamentals of the .NET Framework ░
░ ░
░ In this section we will cover some fundamental ░
░ aspects of the .NET Framework, that will help you ░
░ understand the performance improvements in later ░
░ sections. ░
░ ░
░ You?ll learn the difference between the stack and the heap, and ░
░ how this can affect the performance of your code. You will also ░
░ learn what value types and reference types are, how the String ░
░ class works, and what boxing and unboxing is. ░
░ ░
░ We will end the section with a comprehensive look at Common ░
░ Intermediate Language (CIL): the ?machine language? that C# ░
░ compiles to. At the end of this lesson you will be able to read ░
░ and understand simple CIL programs. ░
░ ░
░ Basic optimisations - the low hanging fruit ░
░ ░
░ In this section we?ll focus on some ░
░ easy-to-implement optimisations that can speed up ░
░ your code by a factor of 100-1000x. We will look ░
░ at arrays, strings and collection classes, and ░
░ demonstrate a few simple changes to your code that have a ░
░ dramatic impact on performance. ░
░ ░
░ We will look at each optimisation in turn, both in the C# source ░
░ code and in the CIL compiled code. I will show you what goes ░
░ on behind the scenes, and how each optimisation changes the CIL ░
░ code to improve the code performance. ░
░ ░
░ Advanced optimisations ░
░ ░
░ This section will take you into advanced topics ░
░ such as method inlining, arrays allocated on the ░
░ stack, and pointer operations. We'll go into the ░
░ details and show you how these optimisations work, ░
░ in which scenario?s you should use them, and if ░
░ they are actually worth the effort. ░
░ ░
░ Some programmers swear by the use of ?stackalloc?, claiming that ░
░ this keyword gives your arrays a performance boost. But is ░
░ this true? This section will show you the answer! ░
░ ░
░ But wait, there?s more! ░
░ ░
░ This course already contains over 2 hours of video content, but ░
░ it's not finished yet. Over the next couple of ░
░ months I am going to expand the content in this ░
░ course to at least 4+ hours. ░
░ ░
░ If you enrol in this course now, you will get free ░
░ access to any future material I add to the course, ░
░ for life. ░
░ ░
░ You will also be able to send me a message, and ask me for help ░
░ with any performance-related C# problem you might have. I will ░
░ answer on weekdays and am available for live calls on Fridays. ░
░ ░
░ With your permission, I will collect the most interesting ░
░ questions into ?Blackboard Friday? sessions, where I will credit ░
░ you by name on video, discuss your problem and offer ░
░ solutions. You will get free lifelong access to these sessions. ░
░ ░
░ Finally, I intend to create a range of courses around ░
░ the topic of becoming a C# professional. Upcoming ░
░ courses will be on the subject of writing elegant ░
░ code, interfacing with unmanaged code, and using ░
░ best patterns and practices. ░
░ ░
░ If you enrol in this course, you will get a minimum ░
░ 50% discount on all my upcoming courses. ░
░ ░
░ ░
░▄░ ░ ██ ▄▄▄▄▄▓█▀█▀ ▀ ░ ▀ ▀█▀█▓▄▄▄▄▄ ██ ░ ░▄░
▒▄▒ ▓░ ████████ ▄▄▓█▌▀▀█▄▄▀▀ ▀▀▄▄█▀▀▐█▓▄▄ ████████ ░▓ ▒▄▒
▌▓▄▓▀ ▀▀▄ ██ ▄▄▐██▀ ▄██▀ ▀██▄ ▀██▌▄▄ ██ ▄▀▀ ▀▓▄▓▐
█▀ ▓░ ▄ █▄▌██ ▄ ▀ ▀█▌▐▓▀ NOTES / NEWS ▀▓▌▐█▀ ▀ ▄ ██▐▄█ ▄ ░▓ ▀█
▄▀ ▄ ▀▄ ▀▌▓█ ▀▄▄ ▀ ▀▄ ▄▀ ▀ ▄▄▀ █▓▐▀ ▄▀ ▄ ▀▄
▐▌ ■░■ ▐▌ ▄▌░▓ ▄██ ▀ ▓ ▓ ▀ ██▄ ▓░▐▄ ▐▌ ■░■ ▐▌
▀▄ ■ ▄▀ ▀▀▀▀ ▄▄█▀▀▀ ▀ ▀ ▀ ▀ ▀▀▀█▄▄ ▀▀▀▀ ▀▄ ■ ▄▀
█▀█ ▄▓ ▄ █▀▀ ▀▀█ ▄ ▓▄ █▀█
█▀█ ▄▓ ▄ ▐▌ ▐▌ ▄ ▓▄ █▀█
█▀█ █▓ ▄▓▄▀ ▀▄▓▄ ▓█ █▀█
█▀█ ▓▒ ▒ Huh? No news are good news! ▒ ▒▓ █▀█
█▀█ ▒░ ░ ░ ░▒ █▀█
▓▀█ ▒░ ░▒ █▀▓
▒▀█ ░▓ ▓░ █▀▒
░ █ ▒ ▒ █ ░
▓ ░ ░ ▓
░ ▒ ░ ░ ▒ ░
░ ░
░ ░
░▄░ ░ ██ ▄▄▄▄▄▓█▀█▀ ▀ ░ ▀ ▀█▀█▓▄▄▄▄▄ ██ ░ ░▄░
▒▄▒ ▓░ ████████ ▄▄▓█▌▀▀█▄▄▀▀ ▀▀▄▄█▀▀▐█▓▄▄ ████████ ░▓ ▒▄▒
▌▓▄▓▀ ▀▀▄ ██ ▐██▀ ▄██▀ ▀██▄ ▀██▌▄▄ ██ ▄▀▀ ▀▓▄▓▐
█▀ ▓░ ▄ █▄▌██ ▄░ ▀█▌▐▓▀ RESPECTS ▀▓▌▐█▀ ▀ ▄ ██▐▄█ ▄ ░▓ ▀█
▄▀ ▄ ▀▄ ▀▌▓█ ▀▄▄ ▀ ▀▄ ▄▀ ▀ ▄▄▀ █▓▐▀ ▄▀ ▄ ▀▄
▐▌ ■░■ ▐▌ ▄▌░▓ ▄██ ▀ ▓ ▓ ▀ ██▄ ▓░▐▄ ▐▌ ■░■ ▐▌
▀▄ ■ ▄▀ ▀▀▀▀ ▄▄▓▀▀▀ ▀ ▀ ▀ ▀ ▀▀▀█▄▄ ▀▀▀▀ ▀▄ ■ ▄▀
█▀█ ▄▓▄ ▄▄█▀▀▀ ▀▀█ ▄ ▄▓▄ █▀█
▌ ▐▄▄▓ ▄ ▐▌ ▐▌ ▄ ▓▄▄▌ ▐
▌ ▀█▓ ▄▓▄▀ BBL - DDU - EEn - iNTENSiTY - JGT - RBS ▀▄▓▄ ▓█▀ ▐
▌░ ▓ █ █ ▓ ░▐
▌▒ ▒▄█▀ ▀█▄▒ ▒▐
▌▓▌ ░ ░ ▐▓▐
▌██ ░ SHOUTOUTS ░ ██▐
▌▐▓█ █▓▌▐
▌ ░▓█ █▓░ ▐
█ ░██ ██░ █
█▀▄ ▓██▄ DVT - FONT - iRONiSO - LAXiTY - PARADOX - SO ▄██▓ ▄▀█
█▀ ▄ ▓███▄ ▄███▓ ▄ ▀█
█▀ █▄▀▓█▀██▄ ▓ ▄██▀█▓▀▄█ ▀█
█▀ ▀ ▀█▄▀▓█▄▀▀▓▄▄ ▄▀ ▄ ▀▄ ▄▄▓▀▀▄█▓▀▄█▀ ▀ ▀█
█▀▄ ▀▄▀██▄▀▀█▄ ▀▀▓▄▄ ░ ▄▌▐▌ ■░■ ▐▌▐▄ ░ ▄▄▓▀▀ ▄█▀▀▄██▀▄▀ ▄▀█
█▀█ ▄ ▀▄▀███▄▀▀█▄▄ ▀▀▓▄ ▄▄▄▓▓█▀ ▀▄ ■ ▄▀ ▀█▓▓▄▄▄ ▄▓▀▀ ▄▄█▀▀▄███▀▄▀ ▄ █▀█
█▀█ █ ▀█▄▀█▄▀█▄▀▀█▄ █▓ ▀█ ▄ ▄ ▀ ▐ ▓ ▌ ▀ ▄ ▄ █▀ ▓█ ▄█▀▀▄█▀▄█▀▄█▀ █ █▀█
█▀█ █ █ ▀█▄▀█ ▀██▄▀█▄ ▐█▓░ ▀ ■ ▐ ▒ ▌ ■ ▀ ░▓█▌ ▄█▀▄██▀ █▀▄█▀ █ █ █▀█
█▀█ █ █ ▐▌▐██▐█▄ ▓██▐█▌██░ ░▌ ▄▀▐ ░ ▌▀▄ ▐░ ░██▐█▌██▓ ▄█▌██▌▐▌ █ █ █▀█
▀█ ▀████ ██▀████▐████▓▀ ▄▀▀▀▄ ▄▄▓▐ ░ ▌▓▄▄ ▄▀▀▀▄ ▀▓████▌████▀██ ████▀ █▀
▀█▄ ▀▀▀████▓▀▄█▓▀▀ ▐▌ ▀▓ ▌▀▀▀▀▄▀▄▀▀▀▀▐ ▓▀ ▐▌ ▀▀▓█▄▀▓████▀▀▀ ▄█▀
▀ ▄▄ ▀▀▀▀▀▀▀ ▄▌ ▀▄▄▄▀ ▀▀▀▄ ▀ ▄▀▀▀ ▀▄▄▄▀ ▐▄ ▀████▀▀ ▄▄ ▄▄ ▀
▀▀█▄▄▄▄▄▄▄▄▄████▄ ▄ ██▌▐ █ ▌▐██ ▄ ▄████▄▀ ▀▄▄
▀▀▀▀▀▀▀▀██▓▓░░ ▄ ▀ ▐ ▓ ▌ ▀ ▄ ░░▓▓██▀▀▄ H7/BREAK ▄▀
▄▀ ▄ ▀▄ ▓ ▄▐ ▒ ▌▄ ▓ ▄▀ ▄ ▀▄ ▀▐▄ ▄▌▀
▐▌ ▌ ▐ ▐▌ ░ ▐ ░ ▌ ░ ▐▌ ▌ ▐ ▐▌
▀▄ ▀ ▄▀▄▄ █ ░ █ ▄▄▀▄ ▀ ▄▀
▀▀▀ █ █ █ ░ █ █ █ ▀▀▀
▀▀ ▐▐ ░ ▌▌ ▀▀
█▐ ░ ▌█
▀▄▐ ░ ▌▄▀
▐ ▒ ▌
▐ ▓ ▌
▄▀ ■ ▀▄
▐▌ ■░■ ▐▌
▀▄ ▀ ▄▀
▀░▀