// File: contracts/traists/Trait10.sol



// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./TraitBase.sol";

// Mouth
contract Trait10 is TraitBase {
	mapping (uint256 => bool) public overEyes;

	constructor(address factory) TraitBase("Mouth", factory) {
		items.push(
			Item(
				"Smile",
				'<path class="s l"><animate attributeName="d" values="M657,504c-39,29-95-4-95-31c0-23,24-20,37-14c13.83,6.38,26.07,8.86,39-6C658,430,702,470.54,657,504z;M657,504c-39,29-88.06-1.35-88.06-28.35c0-15.53,13.12-0.94,26.12,5.06c13.83,6.38,43.89,16.51,56.82,1.65C663.88,468.94,682.24,482,657,504z;M657,504c-39,29-95-4-95-31c0-23,24-20,37-14c13.83,6.38,26.07,8.86,39-6C658,430,702,470.54,657,504z;M657,504c-39,29-95-4-95-31c0-23,24-20,37-14c13.83,6.38,26.07,8.86,39-6C658,430,702,470.54,657,504z" dur="1s" repeatCount="indefinite"/></path><path class="s" style="fill:#FFA6D8"><animate attributeName="d" values="M584,501c0,0,24-24,66,5C643.36,510.88,612,523,584,501z;M584,501c0,0,24-24,66,5C643.36,510.88,612,523,584,501z;M584,501c0,0,18.82-9.33,66,5C643.36,510.88,612,523,584,501z;M584,501c0,0,24-24,66,5C643.36,510.88,612,523,584,501z" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Tongue Down",
				'<path class="s" style="fill:#FFA6D8"><animate attributeName="d" values="M619.5,467.47c0,0,7.6,32.07-18.6,36.45c-26.21,4.38-29.45-31.43-29.45-31.43;M616.18,467.81c0,0,6.77-0.81-19.36,2.02c-26.83,2.81-21.19,2.22-21.19,2.22;M619.5,467.47c0,0,7.6,32.07-18.6,36.45c-26.21,4.38-29.45-31.43-29.45-31.43;M619.5,467.47c0,0,7.6,32.07-18.6,36.45c-26.21,4.38-29.45-31.43-29.45-31.43" dur="1s" repeatCount="indefinite"/></path><line x1="557.22" y1="473.98" x2="677.13" y2="461.44" class="s d"/>'
			)
		);
		items.push(
			Item(
				"Scream",
				'<path class="s l"><animate attributeName="d" values="M667.01,474.6c0,23.97-20.82,43.4-46.5,43.4c-25.68,0-44.45-19.52-46.5-43.4c-3.1-36.17,34.25-49.6,59.93-49.6C659.62,425,667.01,450.63,667.01,474.6z;M661.06,474.06c0,15.87-21.68,26.06-38.05,26.47c-15.39,0.38-36.02-8.48-38.01-26.47c-1.54-16.6,35.25-26.65,48.71-26.65C648.47,447.41,661.06,459.93,661.06,474.06z;M667.01,474.6c0,23.97-20.82,43.4-46.5,43.4c-25.68,0-44.45-19.52-46.5-43.4c-3.1-36.17,34.25-49.6,59.93-49.6C659.62,425,667.01,450.63,667.01,474.6z;M667.01,474.6c0,23.97-20.82,43.4-46.5,43.4c-25.68,0-44.45-19.52-46.5-43.4c-3.1-36.17,34.25-49.6,59.93-49.6C659.62,425,667.01,450.63,667.01,474.6z" dur="1s" repeatCount="indefinite"/></path><path class="s d" style="fill:#FFA6D8"><animate attributeName="d" values="M589,505c23.99-33.99,63-26,74-15C658,506,624,534,589,505z;M596.95,492.87c27.05-14.31,39.67-10.87,58.58-5.71C643.5,500.54,618,507.34,596.95,492.87z;M589,505c23.99-33.99,63-26,74-15C658,506,624,534,589,505z;M589,505c23.99-33.99,63-26,74-15C658,506,624,534,589,505z" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Discomfiture",
				'<path class="s e d"><animate attributeName="d" values="M561.62,478.37c17.87-1.35,13.86,15.26,32.55,13.91c11.98-0.86,14.57-19.38,23.97-20.93c13.33-2.2,13.12,17.73,30.07,15.03c15.51-2.47,9.29-18.22,25.1-21.13;M561.62,478.37c17.87-1.35,12.87-0.9,31.56-2.25c11.98-0.86,16.13-0.1,25.53-1.65c13.33-2.2,9.52-1.77,26.47-4.47c15.51-2.47,12.32-1.84,28.13-4.75;M561.62,478.37c17.87-1.35,13.86,15.26,32.55,13.91c11.98-0.86,14.57-19.38,23.97-20.93c13.33-2.2,13.12,17.73,30.07,15.03c15.51-2.47,9.29-18.22,25.1-21.13;M561.62,478.37c17.87-1.35,13.86,15.26,32.55,13.91c11.98-0.86,14.57-19.38,23.97-20.93c13.33-2.2,13.12,17.73,30.07,15.03c15.51-2.47,9.29-18.22,25.1-21.13" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Surprise",
				'<path class="s l d"><animate attributeName="d" values="M566.59,512.31l101.94-11.73c0,0-4.66-64.58-31.7-61.63C604.16,442.54,566.59,512.31,566.59,512.31z;M566.59,512.31l101.94-11.73c0,0-4.11,0.63-31.15,3.58C604.71,507.75,566.59,512.31,566.59,512.31z;M566.59,512.31l101.94-11.73c0,0-4.66-64.58-31.7-61.63C604.16,442.54,566.59,512.31,566.59,512.31z;M566.59,512.31l101.94-11.73c0,0-4.66-64.58-31.7-61.63C604.16,442.54,566.59,512.31,566.59,512.31z" dur="1s" repeatCount="indefinite"/></path><path class="s d" style="fill:#FFA6D8"><animate attributeName="d" values="M566.59,512.31c0,0,35.06-73.46,80.67-9.28z;M566.59,512.31c0,0,15.29-1.75,57.6-6.63z;M566.59,512.31c0,0,35.06-73.46,80.67-9.28z;M566.59,512.31c0,0,35.06-73.46,80.67-9.28z" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Disappoint",
				'<path class="s l"><animate attributeName="d" values="M564,513c4.43,9.45,18,16,28,0s23-28,53-29s28-58-12-54S549,481,564,513z;M564,513c4.43,9.45,18,16,28,0s23-28,53-29s28.53-40.94-11.47-36.94S549,481,564,513z;M564,513c4.43,9.45,18,16,28,0s23-28,53-29s28-58-12-54S549,481,564,513z;M564,513c4.43,9.45,18,16,28,0s23-28,53-29s28-58-12-54S549,481,564,513z" dur="1s" repeatCount="indefinite"/></path><path class="s d" style="fill:#FFA6D8"><animate attributeName="d" values="M654.6,481.3c0,0-36.6-22.3-65.6-7.3c-15.89,8.22-27,16.97-27,33c0,8,16,27,29,7c5.42-8.33,18.78-25.72,37-28C644,484,654.6,481.3,654.6,481.3z;M644,484c0,0-25.88-6.29-55.53-0.59C575.53,486.53,562,490.97,562,507c0,8,16,27,29,7c5.42-8.33,18.78-25.72,37-28C644,484,644,484,644,484z;M654.6,481.3c0,0-36.6-22.3-65.6-7.3c-15.89,8.22-27,16.97-27,33c0,8,16,27,29,7c5.42-8.33,18.78-25.72,37-28C644,484,654.6,481.3,654.6,481.3z;M654.6,481.3c0,0-36.6-22.3-65.6-7.3c-15.89,8.22-27,16.97-27,33c0,8,16,27,29,7c5.42-8.33,18.78-25.72,37-28C644,484,654.6,481.3,654.6,481.3z" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Tongue Up",
				'<path class="s d" style="fill:#FFA6D8"><animate attributeName="d" values="M668.62,464.27c0,0-6.56-31.53-32.16-24.38c-25.59,7.14-14.4,44.79-14.4,44.79s13.41-0.56,26.52-6.48C661.05,472.57,668.62,464.27,668.62,464.27z;M665.72,467.07c0,0-4.55,4.61-17.13,11.13c-16.73,5.94-20.87,5.89-20.87,5.89s12.91-2.21,20.87-5.89C656.47,474.55,665.72,467.07,665.72,467.07z;M668.62,464.27c0,0-6.56-31.53-32.16-24.38c-25.59,7.14-14.4,44.79-14.4,44.79s13.41-0.56,26.52-6.48C661.05,472.57,668.62,464.27,668.62,464.27z;M668.62,464.27c0,0-6.56-31.53-32.16-24.38c-25.59,7.14-14.4,44.79-14.4,44.79s13.41-0.56,26.52-6.48C661.05,472.57,668.62,464.27,668.62,464.27z" dur="1s" repeatCount="indefinite"/></path><path d="M674.82,456.67c0,0-31.82,53.33-116.82,13.33" class="s e d"/>'
			)
		);
		items.push(
			Item(
				"Cute",
				'<path class="s e d"><animate attributeName="d" values="M579.55,472.8c0,0,21.2,24.57,39.69-4.94c0,0,21.2,24.57,36.72-4.57;M579.55,472.8c0,0,19.16-2.68,39.69-4.94c0,0,18.17-2.33,36.72-4.57;M579.55,472.8c0,0,21.2,24.57,39.69-4.94c0,0,21.2,24.57,36.72-4.57;M579.55,472.8c0,0,21.2,24.57,39.69-4.94c0,0,21.2,24.57,36.72-4.57" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Calm",
				'<polyline class="s d"><animate attributeName="points" values="557.22,473.98 617.17,467.71 677.13,461.44;592.7,470.27 617.17,467.71 641.62,465.15;557.22,473.98 617.17,467.71 677.13,461.44;557.22,473.98 617.17,467.71 677.13,461.44" dur="1s" repeatCount="indefinite"/></polyline>'
			)
		);
		itemCount = items.length;
		items.push(
			Item(
				"Cigarette",
				'<path class="s e d"><animate attributeName="d" values="M633.33,469.28c25.99,14.17,3.37,44.24-16.51,52.84c-18.84,8.15-37.13,7.61-38.59-9.74;M633.33,469.28c25.99,14.17,5.18,47.16-14.7,55.76c-18.84,8.15-48.07-3.54-49.53-20.89;M633.33,469.28c25.99,14.17,3.37,44.24-16.51,52.84c-18.84,8.15-37.13,7.61-38.59-9.74;M633.33,469.28c25.99,14.17,3.37,44.24-16.51,52.84c-18.84,8.15-37.13,7.61-38.59-9.74" dur="1s" repeatCount="indefinite"/></path><path d="M602.18,485.7c0,0,146.74,44.08,161.12,46.95c21.86,4.36,38.03-31.05,15.07-41.32c-22.96-10.27-160.46-27.49-160.46-27.49L602.18,485.7z" class="l"/><path d="M602.18,485.7c0,0,22.71,6.82,51.13,15.27c0,0,7.67-25.13,12.46-30.7c-26.91-3.81-47.86-6.43-47.86-6.43L602.18,485.7z" style="fill:#99503D"/><path d="M765.05,529.59c22.3,7.86,37.57-31.59,13.32-38.26C763.28,487.18,757.69,526.99,765.05,529.59z"><animate attributeName="fill" values="red;FFE98A;red;red" dur="1s" repeatCount="indefinite"/></path><path d="M602.18,485.7c0,0,146.74,44.08,161.12,46.95c21.86,4.36,38.03-31.05,15.07-41.32c-22.96-10.27-160.9-25.31-160.9-25.31" class="s e d"/><path d="M787.12,498.76c-22.74-28.41-42.17,46.14-10.92,31.92" class="s e d"/><path d="M665.44,471.88c0,0-14.35,9.43-8.42,30.2" class="s e d"/><path class="s e d"><animate attributeName="d" values="M648.82,455.76c0,0-44.51-5.88-51.51,41.12;M658,453c0,0-58,0-65,47;M648.82,455.76c0,0-44.51-5.88-51.51,41.12;M648.82,455.76c0,0-44.51-5.88-51.51,41.12" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Toothpick",
				'<path class="s l d"><animate attributeName="d" values="M618.12,464.9c0,0,169.06,92.51,197.29,104.75c-32-32-175.74-111.2-175.74-111.2;M618.12,464.9c0,0,150.11,129.72,176.44,144.12c-28.69-32.05-154.89-150.57-154.89-150.57;M618.12,464.9c0,0,169.06,92.51,197.29,104.75c-32-32-175.74-111.2-175.74-111.2;M618.12,464.9c0,0,169.06,92.51,197.29,104.75c-32-32-175.74-111.2-175.74-111.2" dur="1s" repeatCount="indefinite"/></path><path class="s e d"><animate attributeName="d" values="M655.19,455.89c0,0-48.78-9.48-55.78,37.52;M658,454c0,0-58,0-65,47;M655.19,455.89c0,0-48.78-9.48-55.78,37.52;M655.19,455.89c0,0-48.78-9.48-55.78,37.52" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Cocktail Tube",
				'<style>.z5{fill:#79E8B3}</style><path class="s d z5"><animate attributeName="d" values="M611,468.78c0,0,150.7,138.2,172.64,139.78c23.28,1.68,102.59-23.77,116.21-31.62c8.42-4.85-1.56-25.9-12.47-23.8c-10.92,2.1-85.19,26.91-98.55,27.26C775.48,580.74,636,457.94,636,457.94;M611,468.78c0,0,150.7,138.2,172.64,139.78c23.28,1.68,97.56,41.29,111.18,33.44c8.42-4.85,8.17-21.18-0.35-25.29c-10.51-4.91-92.28-36.66-105.64-36.31C775.48,580.74,636,457.94,636,457.94;M611,468.78c0,0,150.7,138.2,172.64,139.78c23.28,1.68,102.59-23.77,116.21-31.62c8.42-4.85-1.56-25.9-12.47-23.8c-10.92,2.1-85.19,26.91-98.55,27.26C775.48,580.74,636,457.94,636,457.94;M611,468.78c0,0,150.7,138.2,172.64,139.78c23.28,1.68,102.59-23.77,116.21-31.62c8.42-4.85-1.56-25.9-12.47-23.8c-10.92,2.1-85.19,26.91-98.55,27.26C775.48,580.74,636,457.94,636,457.94" dur="1s" repeatCount="indefinite"/></path><path class="s d z5"><animate attributeName="d" values="M815.84,617.12l-2.28,0.32c-4.68,0.66-9.05-2.62-9.72-7.3l-5.67-39.94c-0.66-4.68,2.62-9.05,7.3-9.72l2.28-0.32c4.68-0.66,9.05,2.62,9.72,7.3l5.67,39.94C823.81,612.09,820.52,616.46,815.84,617.12z;M798.15,626.31l-2.17-0.77c-4.45-1.58-6.81-6.51-5.24-10.97l13.45-38.03c1.58-4.45,6.51-6.81,10.97-5.24l2.17,0.77c4.45,1.58,6.81,6.51,5.24,10.97l-13.45,38.03C807.54,625.53,802.61,627.89,798.15,626.31z;M815.84,617.12l-2.28,0.32c-4.68,0.66-9.05-2.62-9.72-7.3l-5.67-39.94c-0.66-4.68,2.62-9.05,7.3-9.72l2.28-0.32c4.68-0.66,9.05,2.62,9.72,7.3l5.67,39.94C823.81,612.09,820.52,616.46,815.84,617.12z;M815.84,617.12l-2.28,0.32c-4.68,0.66-9.05-2.62-9.72-7.3l-5.67-39.94c-0.66-4.68,2.62-9.05,7.3-9.72l2.28-0.32c4.68-0.66,9.05,2.62,9.72,7.3l5.67,39.94C823.81,612.09,820.52,616.46,815.84,617.12z" dur="1s" repeatCount="indefinite"/></path><path class="s d z5"><animate attributeName="d" values="M756.46,610.13l-2.21-0.62c-4.55-1.28-7.22-6.06-5.94-10.6l10.96-38.83c1.28-4.55,6.06-7.22,10.6-5.94l2.21,0.62c4.55,1.28,7.22,6.06,5.94,10.6l-10.96,38.83C765.78,608.75,761.01,611.42,756.46,610.13z;M753.54,609.27l-2.13-0.85c-4.39-1.75-6.54-6.79-4.79-11.17l15-37.46c1.75-4.39,6.79-6.54,11.17-4.79l2.13,0.85c4.39,1.75,6.54,6.79,4.79,11.17l-15,37.46C762.96,608.88,757.93,611.03,753.54,609.27z;M756.46,610.13l-2.21-0.62c-4.55-1.28-7.22-6.06-5.94-10.6l10.96-38.83c1.28-4.55,6.06-7.22,10.6-5.94l2.21,0.62c4.55,1.28,7.22,6.06,5.94,10.6l-10.96,38.83C765.78,608.75,761.01,611.42,756.46,610.13z;M756.46,610.13l-2.21-0.62c-4.55-1.28-7.22-6.06-5.94-10.6l10.96-38.83c1.28-4.55,6.06-7.22,10.6-5.94l2.21,0.62c4.55,1.28,7.22,6.06,5.94,10.6l-10.96,38.83C765.78,608.75,761.01,611.42,756.46,610.13z" dur="1s" repeatCount="indefinite"/></path><path class="s d z5"><animate attributeName="d" values="M782.2,616.64l-2.28-0.3c-4.69-0.62-8.01-4.96-7.39-9.65l5.29-40c0.62-4.69,4.96-8.01,9.65-7.39l2.28,0.3c4.69,0.62,8.01,4.96,7.39,9.65l-5.29,40C791.23,613.93,786.89,617.26,782.2,616.64z;M774.2,618.1l-2.14-0.85c-4.39-1.76-6.54-6.79-4.78-11.18l15.01-37.45c1.76-4.39,6.79-6.54,11.18-4.78l2.14,0.85c4.39,1.76,6.54,6.79,4.78,11.18l-15.01,37.45C783.62,617.71,778.59,619.86,774.2,618.1z;M782.2,616.64l-2.28-0.3c-4.69-0.62-8.01-4.96-7.39-9.65l5.29-40c0.62-4.69,4.96-8.01,9.65-7.39l2.28,0.3c4.69,0.62,8.01,4.96,7.39,9.65l-5.29,40C791.23,613.93,786.89,617.26,782.2,616.64z;M782.2,616.64l-2.28-0.3c-4.69-0.62-8.01-4.96-7.39-9.65l5.29-40c0.62-4.69,4.96-8.01,9.65-7.39l2.28,0.3c4.69,0.62,8.01,4.96,7.39,9.65l-5.29,40C791.23,613.93,786.89,617.26,782.2,616.64z" dur="1s" repeatCount="indefinite"/></path><path class="s e d"><animate attributeName="d" values="M655.19,455.89c0,0-48.78-9.48-55.78,37.52;M658,454c0,0-58,0-65,47;M655.19,455.89c0,0-48.78-9.48-55.78,37.52;M655.19,455.89c0,0-48.78-9.48-55.78,37.52" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		overEyes[items.length] = true;
		items.push(
			Item(
				"Cocktail Umbrella",
				'<style>.z5{fill:#6FEBDE}.y5{fill:#F4DA5B}</style><polyline points="606,474 893,570 900,554 625.21,461.61" class="s l"/><path class="s d z5"><animate attributeName="d" values="M849,401c0,0,33.59,114.08,102.96,193.26c0,0-85.96,3.74-188.96,49.74c0,0,44.5-53.32-16-75c0,0,89.48-29.76,43-96C790,473,853.32,476.28,849,401z;M790,473c0,0,92.59,42.08,161.96,121.26c0,0-105.49,2.45-204.96-25.26c0,0,51.82,1,13.71-26.65c0,0,56.82-2.12,17.29-44.47C778,497.88,823.53,511.29,790,473z;M849,401c0,0,33.59,114.08,102.96,193.26c0,0-85.96,3.74-188.96,49.74c0,0,44.5-53.32-16-75c0,0,89.48-29.76,43-96C790,473,853.32,476.28,849,401z;M849,401c0,0,33.59,114.08,102.96,193.26c0,0-85.96,3.74-188.96,49.74c0,0,44.5-53.32-16-75c0,0,89.48-29.76,43-96C790,473,853.32,476.28,849,401z" dur="1s" repeatCount="indefinite"/></path><path class="s d y5"><animate attributeName="d" values="M790,473l161,121l-204-25C796,552,820,513,790,473z;M778,497.88L951,594l-190.29-51.65C793.88,539.18,802,524.71,778,497.88z;M790,473l161,121l-204-25C796,552,820,513,790,473z;M790,473l161,121l-204-25C796,552,820,513,790,473z" dur="1s" repeatCount="indefinite"/></path><path class="s e d"><animate attributeName="d" values="M655.19,455.89c0,0-48.78-9.48-55.78,37.52;M658,454c0,0-58,0-65,47;M655.19,455.89c0,0-48.78-9.48-55.78,37.52;M655.19,455.89c0,0-48.78-9.48-55.78,37.52" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		overEyes[items.length] = true;
		items.push(
			Item(
				"Bubble",
				'<path class="s d" style="fill:#FFA6D8"><animate attributeName="d" values="M771,275c85-19,199.35,58.15,165,179c-27,95-122,132-207,86c-39.05-21.14-75-58-101-70C648,388,654.26,301.09,771,275z;M653.21,446.54c13.76-3.88,30.06,0.41,29.84,17.7c0.22,17.56-4.24,30.29-24.71,27.18c-16.59-3.18-18.71-12.71-33.35-18.41C630.82,458.83,637.05,451,653.21,446.54z;M771,275c85-19,199.35,58.15,165,179c-27,95-122,132-207,86c-39.05-21.14-75-58-101-70C648,388,654.26,301.09,771,275z;M771,275c85-19,199.35,58.15,165,179c-27,95-122,132-207,86c-39.05-21.14-75-58-101-70C648,388,654.26,301.09,771,275z" dur="1s" repeatCount="indefinite"/></path><path class="l"><animate attributeName="d" values="M839.25,304.14c-43.75,2.66,38.53,70.92,66.41,73.54C920.6,379.08,884.71,301.38,839.25,304.14z;M667.77,452.95c-7.53,0-3.65,4.7,4.11,5.88C674.3,458.83,673.4,454.12,667.77,452.95z;M839.25,304.14c-43.75,2.66,38.53,70.92,66.41,73.54C920.6,379.08,884.71,301.38,839.25,304.14z;M839.25,304.14c-43.75,2.66,38.53,70.92,66.41,73.54C920.6,379.08,884.71,301.38,839.25,304.14z" dur="1s" repeatCount="indefinite"/></path><path class="s e d"><animate attributeName="d" values="M588,463.63c0,0,11.78-27.49,31.42-13.74c13.84,9.69-1.96,29.45-1.96,29.45s32.52-8.02,27.49,19.63c-3.93,21.6-35.34,9.82-35.34,9.82;M588,463.63c0,0,9.65-9.98,22.71-1.16c9.53,8.82,6.75,16.87,6.75,16.87S630.82,478,628,499.53c-2.47,14.47-18.39,9.26-18.39,9.26;M588,463.63c0,0,11.78-27.49,31.42-13.74c13.84,9.69-1.96,29.45-1.96,29.45s32.52-8.02,27.49,19.63c-3.93,21.6-35.34,9.82-35.34,9.82;M588,463.63c0,0,11.78-27.49,31.42-13.74c13.84,9.69-1.96,29.45-1.96,29.45s32.52-8.02,27.49,19.63c-3.93,21.6-35.34,9.82-35.34,9.82" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Banana",
				'<path d="M775,486c-37-49-112-79-166-65s-108,49-121,112c-4.19,20.32-1.51,32.72,4.77,39.65c-2.73,4.64-11.6,20.7-9.26,29.68c2.75,10.57,23.38,10.26,25.15,6.13c1.77-4.14-1.65-26.45,5.36-27.04c0,0,19.98-1.41,35.98-15.41c24.85-21.74,78-78,133-57s84,55,102,46C793.85,550.57,812,535,775,486z" class="s d"><animate attributeName="fill" values="F4DA5B;FFFFFF;F4DA5B;F4DA5B" dur="1s" repeatCount="indefinite"/></path><path d="M797.3,533.08c0,0-26.3-6.08-25.87,22.23C771.46,558.06,798.59,557.15,797.3,533.08z" class="s l d"><animate attributeName="fill" values="FFFFFF;F4DA5B;FFFFFF;FFFFFF" dur="1s" repeatCount="indefinite"/></path><path d="M543,473c0,0-40,28-37,77" class="s e d"/>'
			)
		);
		items.push(
			Item(
				"Kerchief",
				'<path class="s d" style="fill:#A4A4F4"><animate attributeName="d" values="M703,417c0,0-106,91-371,37c0,0,39.6,49.76,75,113c75,134,46,124,225,225c8-81,15-80,57-155C718.04,585.14,722.35,532.82,703,417z;M703,417c0,0-106,91-371,37c0,0,39.6,49.76,75,113c75,134,23.59,134.88,135,225c41-68.94,105-80,147-155C718.04,585.14,722.35,532.82,703,417z;M703,417c0,0-106,91-371,37c0,0,39.6,49.76,75,113c75,134,46,124,225,225c8-81,15-80,57-155C718.04,585.14,722.35,532.82,703,417z" dur="1s" repeatCount="indefinite"/></path><path class="s e d"><animate attributeName="d" values="M398,493c0,0,68,24,101,18;M398,493c0,0,43.29,32.41,80,32.41;M398,493c0,0,68,24,101,18" dur="1s" repeatCount="indefinite"/></path><path class="s e d"><animate attributeName="d" values="M409,520c0,0,40,43,73,63;M409,520c0,0,29,46.18,58,73.18;M409,520c0,0,40,43,73,63" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Hannibal Mask",
				'<path d="M702,417c-1.49-5.64-84-34-121,45s-177,46-257-15c0,0,89,86,96,195c2.53,39.38,0.85,60.63,45,72C663,765,745,580,702,417z" class="s l d"/><circle cx="445" cy="555" r="22" class="s l"/><circle cx="500" cy="637" r="22" class="s l"/><circle cx="605" cy="664" r="22" class="s l"/><path d="M707,565c13-59,1-112,1-112c-39-5-84.73,2.34-103,43C574,565,627,610,707,565" class="s d"><animate attributeName="fill" values="FFDAB6;FFFFFF;FFDAB6;FFDAB6" dur="1s" repeatCount="indefinite"/></path><path d="M684.51,452.87c0,0,18.37,61.49,2.43,121.81" class="s e d"/><path d="M660.4,455.14c0,0,19.4,58.06,0,126.96" class="s e d"/><path d="M637.54,462.62c0,0,16.34,66.58-1.6,119.48" class="s e d"/><path d="M613.7,481.58c0,0,9.7,42.88,0,91.15" class="s e d"/>'
			)
		);
		overEyes[items.length] = true;
		items.push(
			Item(
				"Butterfly",
				'<style>.z5{fill:#69DCFF}.y5{fill:#FFE98A}</style><path class="s d z5"><animate attributeName="d" values="M652.18,540.82c0,0,8.78,83.25-29.3,68.25c-38.08-15-32.79-65.38-32.79-65.38s-65.64-11.46-59.9-58.29c5.74-46.83,101.92-8.43,101.92-8.43;M654.01,539.53c0,0,5.76,73.39-9.43,59.76c-15.19-13.63-13.99-65.41-13.99-65.41s-29.18-17.06-31.53-63.88c-2.35-46.82,36.37,4.12,36.37,4.12;M652.18,540.82c0,0,8.78,83.25-29.3,68.25c-38.08-15-32.79-65.38-32.79-65.38s-65.64-11.46-59.9-58.29c5.74-46.83,101.92-8.43,101.92-8.43;M652.18,540.82c0,0,8.78,83.25-29.3,68.25c-38.08-15-32.79-65.38-32.79-65.38s-65.64-11.46-59.9-58.29c5.74-46.83,101.92-8.43,101.92-8.43" dur="1s" repeatCount="indefinite"/></path><path class="s d z5"><animate attributeName="d" values="M673.29,534.55c0,0,37.23,74.98,61.33,41.9c24.1-33.07-7.37-72.77-7.37-72.77s49.26-44.86,19.31-81.32C716.6,385.91,656,469.89,656,469.89;M669.65,535.29c0,0,30.39,75.19,34.35,40.94C707.97,542,683.9,513,683.9,513s10.4-44.52-7.67-78.41C658.17,400.71,652.01,470,652.01,470;M673.29,534.55c0,0,37.23,74.98,61.33,41.9c24.1-33.07-7.37-72.77-7.37-72.77s49.26-44.86,19.31-81.32C716.6,385.91,656,469.89,656,469.89;M673.29,534.55c0,0,37.23,74.98,61.33,41.9c24.1-33.07-7.37-72.77-7.37-72.77s49.26-44.86,19.31-81.32C716.6,385.91,656,469.89,656,469.89" dur="1s" repeatCount="indefinite"/></path><ellipse transform="matrix(0.9579 -0.287 0.287 0.9579 -117.3226 208.5909)" cx="652.9" cy="504.51" rx="15.58" ry="46.03" class="s d y5"/><path d="M644.38,460.92C645,456,644,417,644,417" class="s d"/><path d="M635.43,462.56C633,458.24,609,427.48,609,427.48" class="s d"/><path class="s d y5"><animate attributeName="d" values="M721.49,436.94c-9.51-0.57-17.48,7.65-17.33,16.83c0.13,8.01,6.43,15.11,14.94,16.3c9.19,0.52,17.14-6.54,17.7-15.54C737.38,445.53,730.41,437.47,721.49,436.94z;M672.28,449.46c-1.89-4.58-5.29-5-7.05-0.46c-1.49,3.84-1.13,8.17,0.48,10.48c2.2,3.17,5.62,1.36,6.47-0.6C673.5,455.86,673.86,453.31,672.28,449.46z;M721.49,436.94c-9.51-0.57-17.48,7.65-17.33,16.83c0.13,8.01,6.43,15.11,14.94,16.3c9.19,0.52,17.14-6.54,17.7-15.54C737.38,445.53,730.41,437.47,721.49,436.94z;M721.49,436.94c-9.51-0.57-17.48,7.65-17.33,16.83c0.13,8.01,6.43,15.11,14.94,16.3c9.19,0.52,17.14-6.54,17.7-15.54C737.38,445.53,730.41,437.47,721.49,436.94z" dur="1s" repeatCount="indefinite"/></path><path class="s d y5"><animate attributeName="d" values="M571.49,480.03c-9.51-0.57-17.48,7.65-17.33,16.83c0.13,8.01,6.43,15.11,14.94,16.3c9.19,0.52,17.14-6.54,17.7-15.54C587.38,488.61,580.41,480.56,571.49,480.03z;M616.6,469.42c-3.56-3.44-6.86-2.46-6.65,2.4c0.18,4.12,2.24,7.94,4.64,9.41c3.29,2.02,5.69-1.01,5.69-3.14C620.28,474.8,619.59,472.32,616.6,469.42z;M571.49,480.03c-9.51-0.57-17.48,7.65-17.33,16.83c0.13,8.01,6.43,15.11,14.94,16.3c9.19,0.52,17.14-6.54,17.7-15.54C587.38,488.61,580.41,480.56,571.49,480.03z;M571.49,480.03c-9.51-0.57-17.48,7.65-17.33,16.83c0.13,8.01,6.43,15.11,14.94,16.3c9.19,0.52,17.14-6.54,17.7-15.54C587.38,488.61,580.41,480.56,571.49,480.03z" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
		items.push(
			Item(
				"Cuban Cigar",
				'<path class="s e d"><animate attributeName="d" values="M633.33,469.28c25.99,14.17,3.37,44.24-16.51,52.84c-18.84,8.15-37.13,7.61-38.59-9.74;M633.33,469.28c25.99,14.17,5.18,47.16-14.7,55.76c-18.84,8.15-48.07-3.54-49.53-20.89;M633.33,469.28c25.99,14.17,3.37,44.24-16.51,52.84c-18.84,8.15-37.13,7.61-38.59-9.74;M633.33,469.28c25.99,14.17,3.37,44.24-16.51,52.84c-18.84,8.15-37.13,7.61-38.59-9.74" dur="1s" repeatCount="indefinite"/></path><path d="M601.05,482.89c0,0,36.63,27.05,86.51,48.87c39.68,17.35,73.97,24.04,101.24,32.61c25.94,8.15,50.76-31.75,24.56-47.68c-11.11-6.76-47.33-29.09-85.11-39.48c-51.3-14.11-101.45-15.66-103.56-15.72" class="s d" style="fill:#99503D"/><path d="M797,565c21,1,38-31,21-45c-2.26-1.86-13.29,7.5-19,18C792.26,550.39,792.88,564.8,797,565z" class="s l d"><animate attributeName="fill" values="red;FFE98A;red;red" dur="1s" repeatCount="indefinite"/></path><path d="M696.81,534.53C694,523,689.98,482.9,666,465" class="s e"/><path d="M691,508c0,0,76.42,8.69,101.21-3.66" class="s e"/><path class="s e d"><animate attributeName="d" values="M648.82,455.76c0,0-44.51-5.88-51.51,41.12;M658,453c0,0-58,0-65,47;M648.82,455.76c0,0-44.51-5.88-51.51,41.12;M648.82,455.76c0,0-44.51-5.88-51.51,41.12" dur="1s" repeatCount="indefinite"/></path>'
			)
		);
	}

	function isOverEye(uint16 traitId) external view returns(bool) {
		return overEyes[traitId];
	}

	function setOverEye(uint16 traitId, bool isOver) external {
		overEyes[traitId] = isOver;
	}
}

// File: contracts/traists/TraitBase.sol



// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IFactory {
	function owner() external view returns (address);
}

contract TraitBase {
	struct Item {
		string name;
		string content;
	}

	string public name;
	IFactory public factory;

	uint256 public itemCount;
	Item[] items;

	constructor(string memory _name, address _factory) {
		name = _name;
		factory = IFactory(_factory);
	}

	function totalItems() external view returns (uint256) {
		return items.length;
	}

	function getTraitName(uint16 traitId) external view returns (string memory traitName) {
		traitName = items[traitId].name;
	}

	function getTraitContent(uint16 traitId) external view returns (string memory traitContent) {
		traitContent = items[traitId].content;
	}

	function addItems(string[] memory names, string[] memory contents) external {
		require(msg.sender == factory.owner());
		require(names.length == contents.length);
		for (uint16 i = 0; i < names.length; i++) {
			items.push(Item(names[i], contents[i]));
		}
	}

	function updateItem(uint16 traitId, string memory traitName, string memory traitContent) external {
		require(msg.sender == factory.owner());
		require(traitId < items.length);
		items[traitId].name = traitName;
		items[traitId].content = traitContent;
	}

	function setFactory(address _factory) external {
		require(msg.sender == factory.owner());
		factory = IFactory(_factory);
	}
}