costmap_generator
costmap_generator_node
This node reads PointCloud
and/or DynamicObjectArray
and creates an OccupancyGrid
and GridMap
. VectorMap(Lanelet2)
is optional.
Name |
Type |
Description |
~input/objects |
autoware_auto_perception_msgs::PredictedObjects |
predicted objects, for obstacles areas |
~input/points_no_ground |
sensor_msgs::PointCloud2 |
ground-removed points, for obstacle areas which can't be detected as objects |
~input/vector_map |
autoware_auto_mapping_msgs::HADMapBin |
vector map, for drivable areas |
~input/scenario |
tier4_planning_msgs::Scenario |
scenarios to be activated, for node activation |
Output topics
Name |
Type |
Description |
~output/grid_map |
grid_map_msgs::GridMap |
costmap as GridMap, values are from 0.0 to 1.0 |
~output/occupancy_grid |
nav_msgs::OccupancyGrid |
costmap as OccupancyGrid, values are from 0 to 100 |
Output TFs
None
How to launch
- Write your remapping info in
costmap_generator.launch
or add args when executing roslaunch
- Run
roslaunch costmap_generator costmap_generator.launch
Parameters
Name |
Type |
Description |
update_rate |
double |
timer's update rate |
activate_by_scenario |
bool |
if true, activate by scenario = parking. Otherwise, activate if vehicle is inside parking lot. |
use_objects |
bool |
whether using ~input/objects or not |
use_points |
bool |
whether using ~input/points_no_ground or not |
use_wayarea |
bool |
whether using wayarea from ~input/vector_map or not |
use_parkinglot |
bool |
whether using parkinglot from ~input/vector_map or not |
costmap_frame |
string |
created costmap's coordinate |
vehicle_frame |
string |
vehicle's coordinate |
map_frame |
string |
map's coordinate |
grid_min_value |
double |
minimum cost for gridmap |
grid_max_value |
double |
maximum cost for gridmap |
grid_resolution |
double |
resolution for gridmap |
grid_length_x |
int |
size of gridmap for x direction |
grid_length_y |
int |
size of gridmap for y direction |
grid_position_x |
int |
offset from coordinate in x direction |
grid_position_y |
int |
offset from coordinate in y direction |
maximum_lidar_height_thres |
double |
maximum height threshold for pointcloud data |
minimum_lidar_height_thres |
double |
minimum height threshold for pointcloud data |
expand_rectangle_size |
double |
expand object's rectangle with this value |
size_of_expansion_kernel |
int |
kernel size for blurring effect on object's costmap |
Flowchart
![uml diagram](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgaGVpZ2h0PSI4MzBweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgc3R5bGU9IndpZHRoOjI5N3B4O2hlaWdodDo4MzBweDtiYWNrZ3JvdW5kOiNGRkZGRkY7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyOTcgODMwIiB3aWR0aD0iMjk3cHgiIHpvb21BbmRQYW49Im1hZ25pZnkiPjxkZWZzLz48Zz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjciIHg9IjExMy41IiB5PSIzMi45OTUxIj5vblRpbWVyPC90ZXh0PjxlbGxpcHNlIGN4PSIxNDguNSIgY3k9IjU3LjI5NjkiIGZpbGw9IiMyMjIyMjIiIHJ4PSIxMCIgcnk9IjEwIiBzdHlsZT0ic3Ryb2tlOiMyMjIyMjI7c3Ryb2tlLXdpZHRoOjEuMDsiLz48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9Ijk1LjUsODcuMjk2OSwyMDEuNSw4Ny4yOTY5LDIxMy41LDk5LjI5NjksMjAxLjUsMTExLjI5NjksOTUuNSwxMTEuMjk2OSw4My41LDk5LjI5NjksOTUuNSw4Ny4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMSIgeD0iMTUyLjUiIHk9IjEyMS41MDczIj55ZXM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTA2IiB4PSI5NS41IiB5PSIxMDMuMTA1Ij5zY2VuYXJpbyBpcyBhY3RpdmU/PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSIyMTMuNSIgeT0iOTYuNzAyNiI+bm88L3RleHQ+PGVsbGlwc2UgY3g9IjI0OS41IiBjeT0iOTkuMjk2OSIgZmlsbD0ibm9uZSIgcng9IjExIiByeT0iMTEiIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utd2lkdGg6MS4wOyIvPjxlbGxpcHNlIGN4PSIyNDkuNSIgY3k9Ijk5LjI5NjkiIGZpbGw9IiMyMjIyMjIiIHJ4PSI2IiByeT0iNiIgc3R5bGU9InN0cm9rZTojMTExMTExO3N0cm9rZS13aWR0aDoxLjA7Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjEyMiIgeD0iODcuNSIgeT0iMTQzLjAwNzMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDIiIHg9Ijk3LjUiIHk9IjE2NC4xNDYiPmdldCBjdXJyZW50IHBvc2U8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjI3NSIgeD0iMTEiIHk9IjE5Ni45NzYxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjU1IiB4PSIyMSIgeT0iMjE4LjExNDciPnNldCB0aGUgY2VudGVyIG9mIGNvc3RtYXAgdG8gY3VycmVudCBwb3NlPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzMuOTY4OCIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIyMjQiIHg9IjM2LjUiIHk9IjI5OS4zNDcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjA0IiB4PSI0Ni41IiB5PSIzMjAuNDg1OCI+Z2VuZXJhdGUgbWFwIHByaW1pdGl2ZXMgY29zdG1hcDwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjU5LDI1MC45NDQ4LDIzOCwyNTAuOTQ0OCwyNTAsMjYyLjk0NDgsMjM4LDI3NC45NDQ4LDU5LDI3NC45NDQ4LDQ3LDI2Mi45NDQ4LDU5LDI1MC45NDQ4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMSIgeD0iMTUyLjUiIHk9IjI4NS4xNTUzIj55ZXM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTc5IiB4PSI1OSIgeT0iMjY2Ljc1MjkiPnVzZSB3YXlhcmVhIG9yIHVzZSBwYXJraW5nbG90PzwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjE0OC41LDM1My4zMTU5LDE2MC41LDM2NS4zMTU5LDE0OC41LDM3Ny4zMTU5LDEzNi41LDM2NS4zMTU5LDE0OC41LDM1My4zMTU5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTgwIiB4PSI1OC41IiB5PSI0NDUuNzE4MyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE2MCIgeD0iNjguNSIgeT0iNDY2Ljg1NjkiPmdlbmVyYXRlIG9iamVjdHMgY29zdG1hcDwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjExMi41LDM5Ny4zMTU5LDE4NC41LDM5Ny4zMTU5LDE5Ni41LDQwOS4zMTU5LDE4NC41LDQyMS4zMTU5LDExMi41LDQyMS4zMTU5LDEwMC41LDQwOS4zMTU5LDExMi41LDM5Ny4zMTU5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMSIgeD0iMTUyLjUiIHk9IjQzMS41MjY0Ij55ZXM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzIiIHg9IjExMi41IiB5PSI0MTMuMTI0Ij51c2Ugb2JqZWN0cz88L3RleHQ+PHBvbHlnb24gZmlsbD0iI0YxRjFGMSIgcG9pbnRzPSIxNDguNSw0OTkuNjg3LDE2MC41LDUxMS42ODcsMTQ4LjUsNTIzLjY4NywxMzYuNSw1MTEuNjg3LDE0OC41LDQ5OS42ODciIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzMuOTY4OCIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxNzIiIHg9IjYyLjUiIHk9IjU5Mi4wODk0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTUyIiB4PSI3Mi41IiB5PSI2MTMuMjI4Ij5nZW5lcmF0ZSBwb2ludHMgY29zdG1hcDwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjExNiw1NDMuNjg3LDE4MSw1NDMuNjg3LDE5Myw1NTUuNjg3LDE4MSw1NjcuNjg3LDExNiw1NjcuNjg3LDEwNCw1NTUuNjg3LDExNiw1NDMuNjg3IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMSIgeD0iMTUyLjUiIHk9IjU3Ny44OTc1Ij55ZXM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjUiIHg9IjExNiIgeT0iNTU5LjQ5NTEiPnVzZSBwb2ludHM/PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiNGMUYxRjEiIHBvaW50cz0iMTQ4LjUsNjQ2LjA1ODEsMTYwLjUsNjU4LjA1ODEsMTQ4LjUsNjcwLjA1ODEsMTM2LjUsNjU4LjA1ODEsMTQ4LjUsNjQ2LjA1ODEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzMuOTY4OCIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxMjgiIHg9Ijg0LjUiIHk9IjY5MC4wNTgxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTA4IiB4PSI5NC41IiB5PSI3MTEuMTk2OCI+Y29tYmluZSBjb3N0bWFwPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzMuOTY4OCIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxMTkiIHg9Ijg5IiB5PSI3NDQuMDI2OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk5IiB4PSI5OSIgeT0iNzY1LjE2NTUiPnB1Ymxpc2ggY29zdG1hcDwvdGV4dD48ZWxsaXBzZSBjeD0iMTQ4LjUiIGN5PSI4MDguOTk1NiIgZmlsbD0ibm9uZSIgcng9IjExIiByeT0iMTEiIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utd2lkdGg6MS4wOyIvPjxlbGxpcHNlIGN4PSIxNDguNSIgY3k9IjgwOC45OTU2IiBmaWxsPSIjMjIyMjIyIiByeD0iNiIgcnk9IjYiIHN0eWxlPSJzdHJva2U6IzExMTExMTtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE0OC41IiB4Mj0iMTQ4LjUiIHkxPSIxMTEuMjk2OSIgeTI9IjE0My4wMDczIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNDQuNSwxMzMuMDA3MywxNDguNSwxNDMuMDA3MywxNTIuNSwxMzMuMDA3MywxNDguNSwxMzcuMDA3MyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMjEzLjUiIHgyPSIyMzguNSIgeTE9Ijk5LjI5NjkiIHkyPSI5OS4yOTY5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyMjguNSw5NS4yOTY5LDIzOC41LDk5LjI5NjksMjI4LjUsMTAzLjI5NjksMjMyLjUsOTkuMjk2OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTQ4LjUiIHgyPSIxNDguNSIgeTE9IjY3LjI5NjkiIHkyPSI4Ny4yOTY5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNDQuNSw3Ny4yOTY5LDE0OC41LDg3LjI5NjksMTUyLjUsNzcuMjk2OSwxNDguNSw4MS4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDguNSIgeDI9IjE0OC41IiB5MT0iMTc2Ljk3NjEiIHkyPSIxOTYuOTc2MSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTQ0LjUsMTg2Ljk3NjEsMTQ4LjUsMTk2Ljk3NjEsMTUyLjUsMTg2Ljk3NjEsMTQ4LjUsMTkwLjk3NjEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE0OC41IiB4Mj0iMTQ4LjUiIHkxPSIyNzQuOTQ0OCIgeTI9IjI5OS4zNDcyIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNDQuNSwyODkuMzQ3MiwxNDguNSwyOTkuMzQ3MiwxNTIuNSwyODkuMzQ3MiwxNDguNSwyOTMuMzQ3MiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMjUwIiB4Mj0iMjcwLjUiIHkxPSIyNjIuOTQ0OCIgeTI9IjI2Mi45NDQ4Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyNjYuNSwzMDYuMzMxNSwyNzAuNSwzMTYuMzMxNSwyNzQuNSwzMDYuMzMxNSwyNzAuNSwzMTAuMzMxNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMjcwLjUiIHgyPSIyNzAuNSIgeTE9IjI2Mi45NDQ4IiB5Mj0iMzY1LjMxNTkiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIyNzAuNSIgeDI9IjE2MC41IiB5MT0iMzY1LjMxNTkiIHkyPSIzNjUuMzE1OSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTcwLjUsMzYxLjMxNTksMTYwLjUsMzY1LjMxNTksMTcwLjUsMzY5LjMxNTksMTY2LjUsMzY1LjMxNTkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE0OC41IiB4Mj0iMTQ4LjUiIHkxPSIzMzMuMzE1OSIgeTI9IjM1My4zMTU5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNDQuNSwzNDMuMzE1OSwxNDguNSwzNTMuMzE1OSwxNTIuNSwzNDMuMzE1OSwxNDguNSwzNDcuMzE1OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTQ4LjUiIHgyPSIxNDguNSIgeTE9IjIzMC45NDQ4IiB5Mj0iMjUwLjk0NDgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0NC41LDI0MC45NDQ4LDE0OC41LDI1MC45NDQ4LDE1Mi41LDI0MC45NDQ4LDE0OC41LDI0NC45NDQ4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDguNSIgeDI9IjE0OC41IiB5MT0iNDIxLjMxNTkiIHkyPSI0NDUuNzE4MyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTQ0LjUsNDM1LjcxODMsMTQ4LjUsNDQ1LjcxODMsMTUyLjUsNDM1LjcxODMsMTQ4LjUsNDM5LjcxODMiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE5Ni41IiB4Mj0iMjQ4LjUiIHkxPSI0MDkuMzE1OSIgeTI9IjQwOS4zMTU5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyNDQuNSw0NTIuNzAyNiwyNDguNSw0NjIuNzAyNiwyNTIuNSw0NTIuNzAyNiwyNDguNSw0NTYuNzAyNiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMjQ4LjUiIHgyPSIyNDguNSIgeTE9IjQwOS4zMTU5IiB5Mj0iNTExLjY4NyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjI0OC41IiB4Mj0iMTYwLjUiIHkxPSI1MTEuNjg3IiB5Mj0iNTExLjY4NyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTcwLjUsNTA3LjY4NywxNjAuNSw1MTEuNjg3LDE3MC41LDUxNS42ODcsMTY2LjUsNTExLjY4NyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTQ4LjUiIHgyPSIxNDguNSIgeTE9IjQ3OS42ODciIHkyPSI0OTkuNjg3Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNDQuNSw0ODkuNjg3LDE0OC41LDQ5OS42ODcsMTUyLjUsNDg5LjY4NywxNDguNSw0OTMuNjg3IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDguNSIgeDI9IjE0OC41IiB5MT0iMzc3LjMxNTkiIHkyPSIzOTcuMzE1OSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTQ0LjUsMzg3LjMxNTksMTQ4LjUsMzk3LjMxNTksMTUyLjUsMzg3LjMxNTksMTQ4LjUsMzkxLjMxNTkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE0OC41IiB4Mj0iMTQ4LjUiIHkxPSI1NjcuNjg3IiB5Mj0iNTkyLjA4OTQiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0NC41LDU4Mi4wODk0LDE0OC41LDU5Mi4wODk0LDE1Mi41LDU4Mi4wODk0LDE0OC41LDU4Ni4wODk0IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxOTMiIHgyPSIyNDQuNSIgeTE9IjU1NS42ODciIHkyPSI1NTUuNjg3Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyNDAuNSw1OTkuMDczNywyNDQuNSw2MDkuMDczNywyNDguNSw1OTkuMDczNywyNDQuNSw2MDMuMDczNyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMjQ0LjUiIHgyPSIyNDQuNSIgeTE9IjU1NS42ODciIHkyPSI2NTguMDU4MSIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjI0NC41IiB4Mj0iMTYwLjUiIHkxPSI2NTguMDU4MSIgeTI9IjY1OC4wNTgxIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNzAuNSw2NTQuMDU4MSwxNjAuNSw2NTguMDU4MSwxNzAuNSw2NjIuMDU4MSwxNjYuNSw2NTguMDU4MSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTQ4LjUiIHgyPSIxNDguNSIgeTE9IjYyNi4wNTgxIiB5Mj0iNjQ2LjA1ODEiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0NC41LDYzNi4wNTgxLDE0OC41LDY0Ni4wNTgxLDE1Mi41LDYzNi4wNTgxLDE0OC41LDY0MC4wNTgxIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDguNSIgeDI9IjE0OC41IiB5MT0iNTIzLjY4NyIgeTI9IjU0My42ODciLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0NC41LDUzMy42ODcsMTQ4LjUsNTQzLjY4NywxNTIuNSw1MzMuNjg3LDE0OC41LDUzNy42ODciIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE0OC41IiB4Mj0iMTQ4LjUiIHkxPSI2NzAuMDU4MSIgeTI9IjY5MC4wNTgxIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNDQuNSw2ODAuMDU4MSwxNDguNSw2OTAuMDU4MSwxNTIuNSw2ODAuMDU4MSwxNDguNSw2ODQuMDU4MSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTQ4LjUiIHgyPSIxNDguNSIgeTE9IjcyNC4wMjY5IiB5Mj0iNzQ0LjAyNjkiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0NC41LDczNC4wMjY5LDE0OC41LDc0NC4wMjY5LDE1Mi41LDczNC4wMjY5LDE0OC41LDczOC4wMjY5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDguNSIgeDI9IjE0OC41IiB5MT0iNzc3Ljk5NTYiIHkyPSI3OTcuOTk1NiIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTQ0LjUsNzg3Ljk5NTYsMTQ4LjUsNzk3Ljk5NTYsMTUyLjUsNzg3Ljk5NTYsMTQ4LjUsNzkxLjk5NTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjwhLS1TUkM9W1ZQMUJSaUNtMzRKdEVpS2l4SWl1WXJ3WTV2MUxFYzVnYW05OWp5WmpBdzRycVdfSWZNT3FSbU9DWmZNV3lpbVJNVkI4NVlkbldpNEJJSlBNaTJFTnUzVHc2WDRONFdtdHlaN0h3ZUgxVDRvMFh6UDR5aTlCSWpFUDBjS3Q4bWJLVEplcnBQbE1pY1pDODhDa0FFZ252T2hHdHZ6eC1UeE94X2NNWkpCS3E5eXJzb2xCVVROdWtHRWpLQ1hvNDNnbDZjX1NyX2ZIU0pnTTdNMlRockoyN3NBLV84VnZnWXBfbjNfakYtY2Z3M1FwcURyOEt6dGRiVnRvSlVnTl8wMDBdLS0+PC9nPjwvc3ZnPg==)