Наворотить гору кода, чтобы...
...осознать, что есть более простой способ. Наворотить другую гору, "более простую", чтобы потом заглянуть в документацию на библиотеку и понять, что (конечно же!!!) это уже сделано до меня и я вообще могу взять готовую функцию.
Fuck.
Fuck.